根据我的要求:
- 输入字符串必须转换为字节值。
- string 的每个字符都是 16 位值,必须转换为低 8 位。
- 然后在字节数组上计算 Sha1。
- 生成的 SHA-1 将转换为 40 个字符的字符串。
我知道如何将字符串转换为 SHA1 ,但其余部分对我来说有点令人沮丧。
我已经能够完成最后两个步骤。
unsigned char digest[CC_SHA1_DIGEST_LENGTH];
NSData *dataString = [yourString dataUsingEncoding: NSUTF8StringEncoding];
if (CC_SHA1([dataString bytes], [dataString length], digest)) {
//Sha1 is calculated & stored in digest.
}
任何帮助将不胜感激。
我已经创建了这个功能,它可以根据您的要求正常工作。您只需输入一个字符串。
#import <CommonCrypto/CommonDigest.h>
- (NSString *)calculateSHA:(NSString *)yourString
{
const char *ptr = [yourString UTF8String];
int i =0;
int len = strlen(ptr);
Byte byteArray[len];
while (i!=len)
{
unsigned eachChar = *(ptr + i);
unsigned low8Bits = eachChar & 0xFF;
byteArray[i] = low8Bits;
i++;
}
unsigned char digest[CC_SHA1_DIGEST_LENGTH];
CC_SHA1(byteArray, len, digest);
NSMutableString *hex = [NSMutableString string];
for (int i=0; i<20; i++)
[hex appendFormat:@"%02x", digest[i]];
NSString *immutableHex = [NSString stringWithString:hex];
return immutableHex;
}
那么你只需要调用上面的方法就可以了。
[self calculateSHA:yourString];
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)