Строка для SHA1 в быстром эквиваленте для Java - PullRequest
0 голосов
/ 11 июля 2019

Я пытаюсь преобразовать строку в 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-кода.

...