【发布时间】:2023-04-01 14:55:01
【问题描述】:
我正在尝试在我的应用程序中进行身份验证加密,它适用于 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的等价物是什么。
【问题讨论】:
-
“我的 Swift 代码返回不同的结果”——我在你的问题中看不到 Swift 代码。
-
请注意,这段 Kotlin 代码显示了糟糕的加密实践。对密码进行正常的加密散列不会产生安全密钥。为此,您需要一个基于密码的密钥派生函数或 PBKDF。 Java 在 Oracle 的默认 JRE 中有 PBKDF2。所以你应该完全替换上面的代码而不是复制它。
-
@MartinR 他在上一个问题中这样做了,当他没有得到快速回答时,他只是转发了部分问题:(
标签: java ios swift encryption cryptoswift