Swift相当于Java中的MessageDigest吗?

时间:2019-07-12 07:06:26

标签: java ios swift encryption cryptoswift

我正在尝试在我的应用程序中进行身份验证加密,该功能适用​​于Kotlin,但不适用于swift。我们正在尝试使用“ AES / ECB / PKCS5Padding”。在kotlin代码下面获取密钥。但是我的快速代码返回的结果与kotlin不同。

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")

    }

如何在Swift中实现呢?快速相当于MessageDigest.getInstance。

1 个答案:

答案 0 :(得分:1)

没有等效的 SecretKeySpec 。但是此Java类主要包装一个二进制密钥。下面的代码仅返回二进制密钥数据。

对于Swift 4:

    let secretKey = "secret"
    let data = Data(secretKey.utf8)
    var digest = [UInt8](repeating: 0, count:Int(CC_SHA1_DIGEST_LENGTH))
    data.withUnsafeBytes { 
        _ = CC_SHA1($0, CC_LONG(data.count), &digest)
    }
    return data