我正在尝试在我的应用程序中进行身份验证加密,该功能适用于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。
答案 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