加密方法如下
- (NSString *)HmacSha1WithSecret:(NSString *)key
{
const char *cKey = [key cStringUsingEncoding:NSASCIIStringEncoding];
const char *cData = [self cStringUsingEncoding:NSASCIIStringEncoding];
unsigned char cHMAC[CC_SHA1_DIGEST_LENGTH];
CCHmac(kCCHmacAlgSHA1, cKey, strlen(cKey), cData, strlen(cData), cHMAC);
NSData *HMAC = [[NSData alloc] initWithBytes:cHMAC length:sizeof(cHMAC)];
NSString *hash = [QNUrlSafeBase64 encodeData:HMAC];
return hash;
}
MD5,SHA-1,SHA-224,SHA-256,SHA-384,SHA-512,以及它们对应的HMAC算法,都属于散列算法,又叫摘要算法,单向运算,不可逆,所以没法解密。但是可以通过暴力方式破解(按顺序产生字符串一个个试),当然会花非常长的时间,而且这个试出来的结果也不一定是原结果,因为的确存在多个源数据能计算出相同散列结果的情况。