【发布时间】:2017-07-30 06:51:38
【问题描述】:
我正在尝试使用 SHA256 对字符串进行编码。我知道输出应该是什么样子。 这是我从工作 Java 中得到的:
string = "1234nonce=1234"
SHA256 Hash from string in Java:
string.digest() =
[-29, -80, -60, 66, -104, -4, 28, 20, -102, -5, -12, -56, -103, 111,
-71, 36, 39, -82, 65, -28, 100, -101, -109, 76, -92, -107, -103, 27,
120, 82, -72, 85]
现在我需要在 Swift 中得到相同的结果:
func sha256() {
let string = "1234nonce=1234"
let intArray = [UInt8](string.utf8)
let data = Data(bytes: intArray)
var hash = [UInt8](repeating: 0, count: Int(CC_SHA256_DIGEST_LENGTH))
data.withUnsafeBytes {
_ = CC_SHA256($0, CC_LONG(data.count), &hash)
}
print(hash)
return Data(bytes: hash)
}
但是结果是这样的:
[218, 207, 142, 73, 87, 235, 210, 73, 201, 67, 19, 33, 57, 146, 69, 48, 51, 56, 0, 212, 172, 114, 118, 31, 102, 19, 175, 51, 153, 230, 143, 67]
第一个结果是如何在Java中产生的,你可以在最后一个答案中看到here。
(那里,nonce + data 对应于"1234nonce=1234")
我想知道是否有什么我做错了。非常感谢任何形式的帮助。
【问题讨论】: