我在網(wǎng)上找到了一個oc版加密的工具類,但是加密中文就出現(xiàn)大問題
const char *cstr = [self cStringUsingEncoding:encoding];
NSData *data = [NSData dataWithBytes:cstr length:self.length];
uint8_t digest[CC_SHA1_DIGEST_LENGTH];
CC_SHA1(data.bytes, data.length, digest);
NSMutableString* result = [NSMutableString stringWithCapacity:CC_SHA1_DIGEST_LENGTH * 2];
for(int i = 0; i < CC_SHA1_DIGEST_LENGTH; i++) {
[result appendFormat:@"%02x", digest[i]];
}
return result.uppercaseString;
用上面的方法中文字符串轉(zhuǎn)data時會造成數(shù)據(jù)丟失,把
const char *cstr = [input cStringUsingEncoding:NSUTF8StringEncoding];
NSData *data = [NSData dataWithBytes:cstr length:input.length];
這兩句改成
NSData *data = [input dataUsingEncoding:NSUTF8StringEncoding];
就可以了
ps,這是因?yàn)槲覀冇龅阶址绒D(zhuǎn)成utf-8了,而后臺遇到?jīng)]轉(zhuǎn)utf8,而是直接sha1加密。
新聞熱點(diǎn)
疑難解答
圖片精選