【问题标题】:SHA Encryption in iOSiOS 中的 SHA 加密
【发布时间】:2019-12-16 11:05:05
【问题描述】:

我在 Android 上有这段代码:

val digest = MessageDigest.getInstance("SHA-512")
digest.update("secretotpkey".toByteArray())

val sb = StringBuilder()
val bytes = digest.digest(value.toByteArray())
bytes.forEach {
    sb.append(((it and 0xF) + 0x100).toString(16).substring(1))
}

val encryptedValue = sb.toString()
makeLog("Encrypted value is $encryptedValue")
return encryptedValue

我正在尝试使用 CryptoSwift 将其转换为 iOS。但是我得到了不同的结果。任何想法如何解决?

var digest = Digest.sha512("secretotpkey".bytes)
print(digest)
let bytes = "54181474".bytes
print(bytes)
digest.append(contentsOf: bytes)
var blah = String()
for item in digest {
    let a = Int(item & 0xF) + Int(0x100)
    let b = (String(format:"%02X", a)).substring(range: NSRange(location: 1, length: 2))
    print(b)
    blah.append(b)
}

【问题讨论】:

  • SHA-512 是加密哈希,它不是加密。顺便说一句,始终在标签中指明运行时。您可以使用 SO 上的代码按钮取消缩进代码。

标签: android swift kotlin encryption sha


【解决方案1】:

两个编码问题:

  1. 在将键转换为字节时,您没有指明字符集(键首先应该由字节组成,字符串不是键)。
  2. 对于 Kotlin 或 Swift,您的十六进制编码显然不正确;请改用预制的库调用或在 StackOverflow 上查找正确的代码。

这应该可以解决这个问题,因为除了调用标准化算法之外什么都没有,否则就是 SHA-512。

【讨论】:

    猜你喜欢
    • 2011-02-19
    • 1970-01-01
    • 2014-05-12
    • 2013-04-20
    • 2015-07-13
    • 2011-03-25
    • 2012-03-08
    • 2017-03-02
    • 1970-01-01
    相关资源
    最近更新 更多