Swift 等同于 Java 中的 MessageDigest?

Swift equivalent of MessageDigest in Java?

我正在尝试在我的应用程序中进行身份验证加密,它适用于 kotlin 但不适用于 swift。我们正在尝试使用 "AES/ECB/PKCS5Padding"。在 kotlin 代码下方获取密钥。但是我的 swift 代码返回的结果与 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 中实现此目的? swift 中的 MessageDigest.getInstance 等价于什么?

没有 SecretKeySpec 的等效项。但是这个Javaclass主要是包装了一个二进制key。下面的代码只是 returns 二进制密钥数据。

对于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([=10=], CC_LONG(data.count), &digest)
    }
    return data