我使用以下代码创建SHA512哈希:
func createSHA512(source:String) -> String {
let rawstr:NSString = NSString(format: "%@%@", source, "xxxxxxxxxxxxxx");
let data = rawstr.dataUsingEncoding(NSUTF8StringEncoding)!;
var digest = [UInt8](count:Int(CC_SHA512_DIGEST_LENGTH), repeatedValue: 0);
CC_SHA512(data.bytes, CC_LONG(data.length), &digest);
let output = NSMutableString(capacity: Int(CC_SHA512_DIGEST_LENGTH));
for byte in digest {
output.appendFormat("%02x", byte);
}
return output as String;
}
是否可以使用Swift 2将此Hash解密为原始字符串?
答案 0 :(得分:2)
SHA是哈希,而不是加密。哈希不包括原始中的所有信息,它是单向函数。它是原始数据的签名,而不是它的版本。
所以不,它无法取消原来的。
'反向'的唯一选择是创建原始的猜测并尝试哈希它们并查看结果是否匹配。请注意,哈希值并不是唯一的,所以即使你得到了一个匹配项,你也不能100%保证它与原始版本相匹配,只能保证它具有相同的值。