Swift解密SHA512哈希

时间:2016-08-24 08:04:40

标签: ios objective-c swift sha

我使用以下代码创建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解密为原始字符串?

1 个答案:

答案 0 :(得分:2)

SHA是哈希,而不是加密。哈希不包括原始中的所有信息,它是单向函数。它是原始数据的签名,而不是它的版本。

所以不,它无法取消原来的。

'反向'的唯一选择是创建原始的猜测并尝试哈希它们并查看结果是否匹配。请注意,哈希值并不是唯一的,所以即使你得到了一个匹配项,你也不能100%保证它与原始版本相匹配,只能保证它具有相同的值。