我正在使用以下代码将字符串转换为 sha1 字符串,但我无法找到任何反转的解决方案,即 sha1 字符串中的普通字符串。
+(NSString *)stringToSha1:(NSString *)str{
const char *s = [str cStringUsingEncoding:NSASCIIStringEncoding];
NSData *keyData = [NSData dataWithBytes:s length:strlen(s)];
// This is the destination
uint8_t digest[CC_SHA1_DIGEST_LENGTH] = {0};
// This one function does an unkeyed SHA1 hash of your hash data
CC_SHA1(keyData.bytes, keyData.length, digest);
// Now convert to NSData structure to make it usable again
NSData *out = [NSData dataWithBytes:digest length:CC_SHA1_DIGEST_LENGTH];
// description converts to hex but puts <> around it and spaces every 4 bytes
NSString *hash = [out description];
hash = [hash stringByReplacingOccurrencesOfString:@" " withString:@""];
hash = [hash stringByReplacingOccurrencesOfString:@"<" withString:@""];
hash = [hash stringByReplacingOccurrencesOfString:@">" withString:@""];
NSLog(@"Hash is %@ for string %@", hash, str);
NSData *dtt = [hash dataUsingEncoding:NSUTF8StringEncoding];
//dtt = [nsda]
NSString *unhash = [dtt description];
return hash;
}
请帮我解决这个问题。
提前致谢
SHA1 是一种单向哈希:它无法“解码”。
散列用于将一个值转换为另一个可能唯一的值。例如,您可以通过计算文件的哈希值来对文件进行指纹识别。然后,例如,通过计算其哈希并将其与您期望的哈希进行比较,您可以知道您已成功下载了正确的 GB 数据。
密码通常经过哈希处理:我可以在没有密码副本的情况下检查您是否输入了正确的密码:当您设置密码时,我会对密码进行哈希处理,并将其存储。然后,当您输入密码时,如果它散列为相同的值,则它是正确的密码。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)