介面加密處理 和 IPV6 問題
專案中用到的 介面 加密,程式碼如下:
// get 請求 把引數都拼到URL 後面
if ([url rangeOfString:@"?"].location != NSNotFound) {
NSArray *array = [url componentsSeparatedByString:@"?"];
urlStr = array[1];
}
NSDate *date = [NSDate date];
NSDateFormatter *formatter = [[NSDateFormatter alloc]init];
[formatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
NSString *dateStr = [formatter stringFromDate:date];
NSLog(@"%@",dateStr);
// URL 加當前日期,和後臺約定好的 口令
NSString *signStr = [NSString stringWithFormat:@"%@%@%@",urlStr,dateStr,@"123456"];
NSString *signMD5 = [self md5:signStr];
// 設定請求頭
[mgr.requestSerializer setValue:signMD5 forHTTPHeaderField:@"sign"];
[mgr.requestSerializer setValue:dateStr forHTTPHeaderField:@"timestamp"];
// post 請求
NSString *urlStr = @"";
if (params) {
NSLog(@"%@",params);
NSArray *keys = params.allKeys;
for (int i= 0; i < keys.count; i ++) {
if (i == 0) {
NSString *str = [NSString stringWithFormat:@"%@=%@",keys[i],params[keys[i]]];
urlStr = [urlStr stringByAppendingString:str];
}else{
NSString *str = [NSString stringWithFormat:@"&%@=%@",keys[i],params[keys[i]]];
urlStr = [urlStr stringByAppendingString:str];
}
}
}
NSDate *date = [NSDate date];
NSDateFormatter *formatter = [[NSDateFormatter alloc]init];
[formatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
NSString *dateStr = [formatter stringFromDate:date];
NSLog(@"%@",dateStr);
NSString *signStr = [NSString stringWithFormat:@"%@%@%@",urlStr,dateStr,@"123456"];
NSString *signMD5 = [self md5:signStr];
NSLog(@"%@------%@",signStr,signMD5);
// 保證好後臺生成的 MD5一致
//md5 32位 加密 (小寫)
+ (NSString *)md5:(NSString *)str {
onst char *cStr = [str UTF8String];
unsigned char result[16];
CC_MD5(cStr, strlen(cStr), result); // This is the md5 call
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]
] lowercaseString];
}
由於IPV6 的問題被稽核拒了,查閱資料後 在網路請求的時候 做了些處理,稽核通過了
// ipv6
mgr.responseSerializer.acceptableContentTypes = nil;//[NSSet setWithObject:@"text/ plain"];
mgr.securityPolicy = [AFSecurityPolicy defaultPolicy];
mgr.securityPolicy.allowInvalidCertificates = YES;//忽略https證書
mgr.securityPolicy.validatesDomainName = NO;//是否驗證域名
相關文章
- 介面自動化如何處理介面依賴問題
- 關於介面返回BOM頭處理的問題
- RDSforMySQLMysqldump常見問題和處理ORMMySql
- BREW常見問題解答(FAQ 5)-處理器和事件處理 (轉)事件
- 處理問題的方法
- perl中文處理問題
- 漢字處理問題?
- xml處理的問題XML
- 貨品問題處理
- [git] git問題處理Git
- 【問題處理】使用trim和 replace處理字串中的換行符號字串符號
- golang json處理問題GolangJSON
- 併發問題處理方式
- ASMCMD處理問題一則ASM
- mysql的處理能力問題MySql
- RMAN處理split block問題BloC
- mysql問題處理兩則MySql
- Oracle啟動問題處理Oracle
- mysql 問題處理二則MySql
- Oracle壞塊問題處理Oracle
- 資料處理--pandas問題
- playwright 在 Centos 的安裝和問題處理CentOS
- 關於對話方塊介面上按回車和ESC鍵退出問題的處理 (轉)
- 使用@FeignClient中的fallback屬性處理介面呼叫異常問題client
- WebSphere和DB2效能問題的發現和處理KPWebDB2
- 工作中遇到的一些問題和處理
- Kubernetes-應用部署問題定位和處理
- 如何應付難纏客戶和處理低薪問題
- 如何處理 No DMARC Record Found 問題
- PHP 開發版本問題處理PHP
- MySQL:亂碼問題處理流程MySql
- JVM問題分析處理手冊JVM
- Linux 問題處理集錦Linux
- 處理SQLServer errorlog滿問題SQLServerError
- 如何處理HTTP 503故障問題?HTTP
- gc buffer busy acquire問題處理GCUI
- 記憶體分配問題處理記憶體
- ORA-00942問題處理