iOS_對AFNetWorking的請求頭引數進行sha1加密
前言:後臺為防止介面被抓包,毅然決然的要求我在新增一個請求的頭引數,並對該引數進行sha1加密,而且該引數加密之前有一定的演算法格式(雜湊演算法,具體給的演算法在這裡我就不說了)。
1.在加密之前,先需要對滿足後臺給的格式,下面是我模擬
的格式是一個拼湊的字典
{
timestamp = 1518229804;
ua = iPhone;
}
2.然後需要把上面的字典轉化成json字串
NSData *jsonData = [NSJSONSerialization dataWithJSONObject:jsonSign options:-1 error:nil];
NSString *resultJson = [[NSString alloc]initWithData:jsonData encoding:NSUTF8StringEncoding];
下面解釋一下options
引數
NSJSONWritingPrettyPrinted = (1UL << 0),
/* Sorts dictionary keys for output using [NSLocale systemLocale]. Keys are compared using NSNumericSearch. The specific sorting method used is subject to change.
*/
NSJSONWritingSortedKeys API_AVAILABLE(macos(10.13), ios(11.0), watchos(4.0), tvos(11.0)) = (1UL << 1)
-----------------------------------------------------
使用`NSJSONWritingPrettyPrinted`會出現 列印的是下面的字串,帶\n和\r
{
timestamp = 1518229804;
ua = iPhone;
}
使用`NSJSONWritingSortedKeys `會出現 列印的是下面的字串,沒有\n和\r
{ timestamp = 1518229804;ua = iPhone;}
//服務端老哥要求我傳這個格式。但是這個引數只支援ios(11.0), 這時候咋辦。下面分解
3.當然是使用NSJSONWritingPrettyPrinted
,然後去除空格和換行符...
resultJson = [resultJson stringByReplacingOccurrencesOfString:@"\r" withString:@""];
resultJson = [resultJson stringByReplacingOccurrencesOfString:@"\n" withString:@""];
4.進行sha1 加密
//sha1加密
NSData *sha1Data = [resultJson dataUsingEncoding:NSUTF8StringEncoding];
uint8_t digest[CC_SHA1_DIGEST_LENGTH];
CC_SHA1(sha1Data.bytes, (unsigned int)sha1Data.length, digest);
NSMutableString *sign = [NSMutableString stringWithCapacity:CC_SHA1_DIGEST_LENGTH * 2];
for(int i=0; i<CC_SHA1_DIGEST_LENGTH; i++) {
[sign appendFormat:@"%02x", digest[i]]; //得到sign
}
nice ~ .~ !
相關文章
- 有趣的請求引數/請求頭
- JavaScript逆向之iwencai請求頭引數加密過程解析JavaScriptAI加密
- AFNetworking(二)AFNetworking對form-data請求體的處理ORM
- 封裝axios請求並對提交引數進行校驗封裝iOS
- 請求引數的傳遞
- 請問在一個介面內怎麼根據請求方式對引數進行分別驗證呢?
- Postman傳送請求引數是Map格式的請求Postman
- Springboot請求引數解密Spring Boot解密
- SpringMVC請求引數解析SpringMVC
- GET請求的引數丟失
- 對請求來源進行白名單限制
- 跟我一起動手實現Tomcat(三):解析Request請求引數、請求頭、cookieTomcatCookie
- fastapi 請求引數 校驗ASTAPI
- Charles 修改請求(Request)引數
- ajax中POST請求與引數(請求體)設定
- [求助] 使用 python 第三方庫 pycryptodome 進行 RSA 加密得到的結果,發起請求,介面接收到請求後,開發 Java 程式碼私鑰解密後請求引數會亂碼Python加密Java解密
- postman 請求引數和 Spring Boot Controller 接受引數PostmanSpring BootController
- HttpClient 進行soap請求HTTPclient
- 關於在request請求時,處理請求引數的問題
- GOLANG Web請求引數驗證GolangWeb
- 使用 http-proxy 對網路請求進行代理HTTP
- 拙見--springMVC的controller接受的請求引數SpringMVCController
- 對dubbo的DubboReference.check的引數進行剖析
- AFNetworking(一)從一次請求瞭解AFHTTPSessionManagerHTTPSession
- TCP 請求頭TCP
- 使用 $fetch 進行 HTTP 請求HTTP
- ajax中設定請求頭和自定義請求頭
- charles 打斷點修改請求引數斷點
- java傳送get請求帶引數Java
- 表單請求獲取路由引數路由
- Mybatis foreach 請求引數是物件集合MyBatis物件
- RESTFUL風格的URL請求及引數接收REST
- 請求引數為物件,mybatis的sql寫法物件MyBatisSQL
- (七)Spring Boot Controller的請求引數獲取Spring BootController
- yapi 如何獲得: 當前時間和 n 天后的時間作為引數進行請求API
- 請求報415的異常,通常都是請求頭Headers的Content-Type沒有配置對Header
- samtools flagstat引數對比對的bam檔案進行統計
- OkHttp如何移除User-Agent,Accept-Encoding等框架自動新增的請求頭引數HTTPEncoding框架
- (問)get請求會對中文及特殊字元進行轉碼字元