本文目錄一覽:
- 1、白寡婦是誰啊
- 2、宏_筆記本電腦的小鍵盤怎么切換?
- 3、【求一道七年級英語選擇題】We can see people _____ paper on windows of the shops.
- 4、iOS 接口加密方法-ASE256和數字簽名
- 5、函數項級數點點收斂與一致收斂的區別是什么?
白寡婦是誰啊
薩曼莎·盧思韋特(Samantha
Lewthwaite),綽號“白寡婦”,是“基地”組織在東非的主要招募者之一和軍事訓練專家,倫敦爆炸事件犯罪嫌疑人彈杰曼·林賽的妻子。因負責培訓及指揮女性學員制造自殺式炸彈,而被媒體稱為“白寡婦”。她是索馬里青年黨的爆破專家,該組織的主要贊助人之一,并被肯尼亞警方,倫敦警察廳和美國中情局通緝。2013年9月23日,肯尼亞官員證實,薩曼莎·盧思韋特參與了首都內羅畢購物中心恐怖襲擊案,并傳出其被擊斃的消息,但是英國官方在24日予以了否認。
宏_筆記本電腦的小鍵盤怎么切換?
切換方法:\x0d\x0a按住Fn鍵后,點一下Num鍵即可把主鍵盤區右側變成數字鍵。再按一次,即可切換回正常的字母鍵。\x0d\x0a\x0d\x0aFN鍵一般在左下角,Ctrl鍵旁邊,Num鍵在右上角。
【求一道七年級英語選擇題】We can see people _____ paper on windows of the shops.
see sb. do sth.
看見某人做某事,這是一個固定搭配。如果變成主從句形式
We can see that people _____ paper on windows of the shops
就應該選B而不選A了。
iOS 接口加密方法-ASE256和數字簽名
//這是需要加密的字典,里面存儲這需要上傳的參數
NSMutableDictionary *bodyDict=[[NSMutableDictionary alloc] init];
[bodyDict setValue:@"80088202220"? forKey:@"phone"];
//這是需要配置的key,需要前后端統一配置
#define StrApiKey @"ios-to-panda"
#define StrSecretKey @"Z4Q5eE}{9Wk8h-P]j3D~$IH8Qo)~)L,c"
#define EncryptKey @"UfbFJ?}2G=WlAu}z`ilz'_^Tf8(3(yg"
1,接口加密首先需要加時間戳
? ? bodyDict = [self signature:bodyDict strApiKey:StrApiKeystrSecretKey:StrSecretKey];
//數字簽名
-(NSMutableDictionary*)signature:(NSMutableDictionary*)bodyDict strApiKey:(NSString*)strApiKey strSecretKey:(NSString*)strSecretKey{
? ? //時間戳
? ? NSString*time? = [NSStringstringWithFormat:@"%ld",[selfgetTimeSp]];
? ? [bodyDictsetObject:[NSStringgenmd5:time]forKey:@"nonce"];
? ? [bodyDictsetObject:timeforKey:@"time_stamp"];
? ? //升序排序
? ? NSArray*keyArray = [bodyDictallKeys];
? ? // 利用block進行排序
? ? NSArray*sortkeyArray = [keyArraysortedArrayUsingComparator:^NSComparisonResult(id? _Nonnullobj1,id? _Nonnullobj2) {
? ? ? ? NSComparisonResultresult = [obj1compare:obj2];
? ? ? ? returnresult;
? ? }];
? ? inti=0;
? ? NSString*strBaseString =@"";
? ? //生成Base String
? ? for(NSString* paraminsortkeyArray) {
? ? ? ? NSString*key;
? ? ? ? if([UserShareMgrisUserString:paramCompare:@"city_name"]) {//如果其中有中文需要轉碼
? ? ? ? ? ? key =? [[DataRequestshareInstance]urlEncode:[bodyDictobjectForKey:[NSStringstringWithFormat:@"%@",param]]];
? ? ? ? }else{
? ? ? ? ? ? key =? [bodyDictobjectForKey:[NSStringstringWithFormat:@"%@",param]];
? ? ? ? }
? ? ? ? if(0==i) {
? ? ? ? ? ? strBaseString = [NSStringstringWithFormat:@"%@=%@",param,key];
? ? ? ? ? ? i++;
? ? ? ? }else{
? ? ? ? ? ? strBaseString = [NSStringstringWithFormat:@"%@%@=%@",strBaseString,param,key];
? ? ? ? }
? ? }
? ? //生成簽名
? ? NSString*sign = [selfhmacSha1:strBaseString :strSecretKey];
? ? [bodyDictsetObject:signforKey:@"sign"];
? ? returnbodyDict;
}
//hmacsga1加密
- (NSString*)hmacSha1:(NSString*)public_key :(NSString*)private_key{
? ? NSData* secretData = [private_key dataUsingEncoding:NSUTF8StringEncoding];
? ? NSData* stringData = [public_key dataUsingEncoding:NSUTF8StringEncoding];
? ? constvoid* keyBytes = [secretDatabytes];
? ? constvoid* dataBytes = [stringDatabytes];
? ? ///#define CC_SHA1_DIGEST_LENGTH? 20? ? ? ? ? /* digest length in bytes */
? ? void* outs = malloc(CC_SHA1_DIGEST_LENGTH);
? ? CCHmac(kCCHmacAlgSHA1, keyBytes, [secretDatalength], dataBytes, [stringDatalength], outs);
? ? // Soluion 1
? ? NSData* signatureData = [NSData dataWithBytesNoCopy:outs length:CC_SHA1_DIGEST_LENGTH freeWhenDone:YES];
? ? NSString *body = [signatureData base64EncodedStringWithOptions:NSDataBase64Encoding64CharacterLineLength];
? ? returnbody;
}
//獲得當前時間戳
-(long)getTimeSp{
? ? longtime;
? ? NSDate*fromdate=[NSDatedate];
? ? time=(long)[fromdatetimeIntervalSince1970];
? ? returntime;
}
//md5加密方法,直接引用三方庫的更好
+ (NSString*)genmd5:(NSString*)str
{
constchar*cStr = [strUTF8String];
unsignedcharresult[16];
CC_MD5( cStr,strlen(cStr), result );
return [NSString stringWithFormat:
@"%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X",
result[0], result[1], result[2], result[3],?
result[4], result[5], result[6], result[7],
result[8], result[9], result[10], result[11],
result[12], result[13], result[14], result[15]];
}
2,進行ase256加密
//將數字簽名后的字典轉換成data
? ? NSError*parseError =nil;
? ? NSData *jsonData = [NSJSONSerialization dataWithJSONObject:bodyDict options:NSJSONWritingPrettyPrinted error:parseError];
//將data轉成字符串
? ? NSString *bodyString = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];
//將字符串轉成data,至于這里為什么轉2次,是因為不轉碼的話 php解析不了
? ? NSData *dataTake = [bodyString dataUsingEncoding:NSUTF8StringEncoding];
? ? //進行ase256加密
? ? dataTake = [self AES256Encrypt:dataTake WithKey:EncryptKey];
//將data轉換成字符串
? ? NSString *body = [dataTake base64EncodedStringWithOptions:NSDataBase64Encoding64CharacterLineLength];
//AES256加密
- (NSData*)AES256Encrypt:(NSData*)Data WithKey:(NSString*)key? //加密
{
? ? CCCryptorRefcryptor =NULL;
? ? CCCryptorStatusstatus =kCCSuccess;
? ? idiv =nil;
? ? NSParameterAssert([key isKindOfClass: [NSData class]] || [key isKindOfClass: [NSString class]]);
? ? NSParameterAssert(iv ==nil|| [iv isKindOfClass: [NSData class]] || [iv isKindOfClass: [NSString class]]);
? ? NSMutableData* keyData, * ivData;
? ? keyData = [(NSMutableData *)[self SHA256Hash:[key dataUsingEncoding:NSUTF8StringEncoding]] mutableCopy];
? ? if( [ivisKindOfClass: [NSStringclass]] )
? ? ? ? ivData = [[ivdataUsingEncoding: NSUTF8StringEncoding] mutableCopy];
? ? else
? ? ? ? ivData = (NSMutableData*) [ivmutableCopy]; // data or nil
? ? // ensure correct lengths for key and iv data, based on algorithms
? ? NSUIntegerkeyLength = [keyDatalength];
? ? if( keyLength 16){
? ? ? ? [keyDatasetLength:16];
? ? }elseif( keyLength 24){
? ? ? ? [keyDatasetLength:24];
? ? }else{
? ? ? ? [keyDatasetLength:32];
? ? }
? ? [ivDatasetLength: [keyDatalength]];
? ? status =CCCryptorCreate( kCCEncrypt, kCCAlgorithmAES128, kCCOptionPKCS7Padding,
?? ? ? ? ? ? ? ? ? ? ? ? ? ? [keyDatabytes], [keyDatalength], [ivDatabytes],
?? ? ? ? ? ? ? ? ? ? ? ? ? ? cryptor );
? ? if( status ==kCCSuccess)
? ? {
? ? ? ? NSData* result = [self_runData:(NSData*)DataCryptor: cryptorresult: status];
? ? ? ? CCCryptorRelease( cryptor );
? ? ? ? returnresult;
? ? }
? ? return nil;
}
- (NSData*) SHA256Hash:(NSData*)data
{
? ? unsigned char hash[CC_SHA256_DIGEST_LENGTH];
? ? (void)CC_SHA256( [databytes], (CC_LONG)[datalength], hash );
? ? return ( [NSData dataWithBytes: hash length: CC_SHA256_DIGEST_LENGTH] );
}
- (NSData*) _runData:(NSData*)keyData Cryptor: (CCCryptorRef) cryptor result: (CCCryptorStatus*) status
{
? ? size_tbufsize =CCCryptorGetOutputLength( cryptor, (size_t)[keyDatalength],true);
? ? void* buf =malloc( bufsize );
? ? size_tbufused =0;
? ? size_tbytesTotal =0;
? ? *status =CCCryptorUpdate( cryptor, [keyDatabytes], (size_t)[keyDatalength],
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? buf, bufsize, bufused );
? ? if( *status !=kCCSuccess)
? ? {
? ? ? ? free( buf );
? ? ? ? return(nil);
? ? }
? ? bytesTotal += bufused;
? ? // From Brent Royal-Gordon (Twitter: architechies):
? ? //? Need to update buf ptr past used bytes when calling CCCryptorFinal()
? ? *status =CCCryptorFinal( cryptor, buf + bufused, bufsize - bufused, bufused );
? ? if( *status !=kCCSuccess)
? ? {
? ? ? ? free( buf );
? ? ? ? return(nil);
? ? }
? ? bytesTotal += bufused;
? ? return( [NSDatadataWithBytesNoCopy: buflength: bytesTotal] );
}
3,這樣就可以使用afn進行上傳了
? ? NSMutableDictionary *paramDict=[[NSMutableDictionary alloc] init];
? ? [paramDictsetValue:bodyforKey:@"data"];
函數項級數點點收斂與一致收斂的區別是什么?
從定義上看:\x0d\x0a\x0d\x0afn一致收斂到f:對于任意的e0,存在一個N0,使對于任意的x在定義域和nN, |f(x)-fn(x)|0,對于任意的x在定義域,存在一個N_x0,使任意的和nN_x, |f(x)-fn(x)|
回答于?2022-11-16