【发布时间】:2017-06-17 18:33:59
【问题描述】:
在我的 android 应用程序中,我有一个散列字符串,我想将它与来自编辑文本的常规字符串进行比较。我使用以下方法来做到这一点
try {
MessageDigest hashDigester = MessageDigest.getInstance("SHA-1");
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
}
return (new BigInteger(1, hashDigester.digest(pin.getBytes())).toString(16)).equals(object.getPin());
上面的代码工作正常。现在我想在 ios 中使用 swift 3.0 做同样的事情 我尝试使用 CryptoSwift 从这样的编辑文本创建哈希
text.sha1()
我也尝试使用下面的
extension Data {
func hexString() -> String {
let string = self.map{String(format:"%02x", Int($0))}.joined()
return string
}
func SHA1() -> Data {
var result = Data(count: Int(CC_SHA1_DIGEST_LENGTH))
_ = result.withUnsafeMutableBytes {resultPtr in
self.withUnsafeBytes {(bytes: UnsafePointer<UInt16>) in
CC_SHA1(bytes, CC_LONG(count), resultPtr)
}
}
return result
}
}
extension String {
func hexString() -> String {
return self.data(using: .utf8)!.hexString()
}
func SHA1() -> String {
return self.data(using: .utf8)!.SHA1().hexString()
}
}
两者都给了我相同的结果,但与我的 android 代码不同。 你有什么建议我应该如何调整我的 swift 代码?
【问题讨论】:
-
你能否举一个你在 Android 和 iOS 上执行 sha-1 的字符串示例(此代码)?
-
当我在 ios 中插入 407 时,它会返回 35db01d3926745bec110d5709a544e250f7fffc4 ,而在 android 中相同的 407 返回 e6de89674d9f1d7968a70dad4f41b844965b4fdc 这是正确的
标签: android ios swift swift3 sha1