我使用以下代码将字符串转换为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;
}
Run Code Online (Sandbox Code Playgroud)
PLZ帮我解决了这个问题.
提前致谢
SHA1是单向散列:它不能被"解码".
散列用于将值转换为另一个可能唯一的值.例如,您可以通过计算哈希值来指纹文件.然后,例如,您可以通过计算其哈希值并将其与您期望的哈希值进行比较,从而知道您已成功下载了正确的千兆字节数据.
密码经常被散列:我可以检查您是否输入了正确的密码而没有密码的副本:我在设置密码时对密码进行哈希处理并存储密码.然后当您输入密码时,如果它的哈希值相同,那么它就是正确的密码.
| 归档时间: |
|
| 查看次数: |
5978 次 |
| 最近记录: |