Swift 解密 SHA512 哈希

Swift decrypt SHA512 hash

我使用以下代码创建 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;
}

是否可以将此Hash与Swift2解密为原始String?

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

所以不,无法撤消以恢复原件。

'reverse' 的唯一选择是对原作进行猜测并尝试对它们进行哈希运算,看看结果是否匹配。请注意,哈希值不是唯一的,因此即使您找到匹配项,也不能 100% 保证它与原始值匹配,只能保证它的哈希值相同。