与Java等效的SHA1字符串

时间:2019-07-11 12:20:03

标签: ios swift sha1 commoncrypto cryptoswift

我正在尝试将字符串转换为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。

0 个答案:

没有答案