【发布时间】:2016-02-26 10:59:58
【问题描述】:
我正在开发一个可在 iOS 和 Android 平台上运行的应用程序。我对 JAVA 完全陌生。
在这个应用程序中,我需要将 32 字节数据作为密钥从一个平台发送到另一个平台。
而这个密钥是用来加密/解密实际数据的。
我正在加密这个 32 字节的密钥并将其发送到另一端。
当我在 iOS 端加密之前打印此密钥(NSData)时,我得到了
<71c76511 dc0dcb9d c8d3c7b3 4e54b8fe 40fb006f 20f21457 5fbec70d f18c7d52>
但是当我打印相同的密钥(字节数组),解密后,在Android端,我得到了
0 = 113
1 = -57
2 = 101
3 = 17
4 = -360
5 = 13
6 = -53
7 = -99
8 = -56
9 = -45
10 = -57
11 = -77
12 = 78
13 = 84
14 = -72
15 = -2
16 = 64
17 = -5
18 = 0
19 = 111
20 = 32
21 = -14
22 = 20
23 = 87
24 = 95
25 = -66
26 = -57
27 = 13
28 = -15
29 = -116
30 = 125
31 = 82
我可以理解 JAVA 的字节范围是 -128 到 127,这就是它打印负值的原因。
我还尝试在两端使用 Base64 编码将两个键都转换为字符串,我得到了完全相同的字符串。
我的问题是
这些负值是否会在解密时造成任何伤害?
如果是,我是否需要将负值转换为实际的十六进制值?怎么样?
或者只是范围问题,(NSData和字节数组)完全一样,不用担心?
提前感谢您的帮助:)
现在我正在使用仅加密密钥并将其发送到 Android。 现在我将处理实际数据的加密/解密,我不希望这些负值损害这个解密。
【问题讨论】:
标签: java android ios objective-c encryption