Я пытаюсь преобразовать строку в 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")
}
Я использовал этот метод ниже, но он дает мне другой SHA1, чем Java.
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 (), и она дала мне тот же результат, что и вышеописанный метод. Как я могу получить тот же SHA1, что и тот, который мы получаем из приведенного выше Java-кода.