iOS中的SHA加密

问题描述 投票:0回答:1

我在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)
}
android swift kotlin encryption sha
1个回答
0
投票

两个编码问题:

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

这应该解决它,因为除了对标准化算法的调用之外,什么都没有,否则,请调用SHA-512。

© www.soinside.com 2019 - 2024. All rights reserved.