我正在尝试将字符串转换为sha1,但是结果不同,它是迅速的,并且在android-kotlin中。这是获取密钥的Java代码-
private fun getSecretKey(): SecretKey {
val messageDigest = MessageDigest.getInstance("SHA-1")
val key = messageDigest.digest(SECRET_KEY.toByteArray(Charset.forName("UTF-8")))
.copyOfRange(0, 16)
return SecretKeySpec(key, "AES")
}
我使用了下面的方法,但是它给了我与Java不同的SHA1。
func sha1Convert() -> String {
let data = Data(self.utf8)
var digest = [UInt8](repeating: 0, count:Int(CC_SHA1_DIGEST_LENGTH))
data.withUnsafeBytes {
_ = CC_SHA1($0.baseAddress, CC_LONG(data.count), &digest)
}
let hexBytes = digest.map { String(format: "%02hhx", $0) }
return hexBytes.joined()
}
let base = str.sha1Convert().prefix(16)
let key = Array(base.utf8)
请帮助!!我尝试了CryptoSwift Sha1()函数,它给了我与上述方法相同的结果。我该如何获得与从上面的Java代码获得的SHA1相同的SHA1。