Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/193.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android iOS中的SHA加密_Android_Swift_Kotlin_Encryption_Sha - Fatal编程技术网

Android iOS中的SHA加密

Android iOS中的SHA加密,android,swift,kotlin,encryption,sha,Android,Swift,Kotlin,Encryption,Sha,我在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).

我在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”)
印刷品(摘要)
设bytes=“54181474”。字节
打印(字节)
摘要.追加(内容:字节)
var blah=String()
对于摘要中的项目{
设a=Int(项&0xF)+Int(0x100)
设b=(字符串(格式:“%02X”,a))。子字符串(范围:NSRange(位置:1,长度:2))
印刷品(b)
等等。附加(b)
}
两个编码问题:

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

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

    SHA-512是加密散列,不是加密。顺便说一下,始终在标记中指示运行时。您可以使用SO上的“代码”按钮取消输入代码。