目标NSC数据等效十六进制值(iOS)在JAVA(Android)中显示负整数值?

目标NSC数据等效十六进制值(iOS)在JAVA(Android)中显示负整数值?,java,android,ios,objective-c,encryption,Java,Android,Ios,Objective C,Encryption,我正在开发一款同时在iOS和Android平台上运行的应用程序。我对JAVA完全陌生。 在此应用程序中,我需要将32字节的数据作为密钥从一个平台发送到另一个平台。 该密钥用于加密/解密实际数据 我正在加密这个32字节的密钥并将其发送到另一端 当我在iOS端加密之前打印此密钥(NSData)时,我得到 <71c76511 dc0dcb9d c8d3c7b3 4e54b8fe 40fb006f 20f21457 5fbec70d f18c7d52> 0 = 113 1 = -5

我正在开发一款同时在iOS和Android平台上运行的应用程序。我对JAVA完全陌生。
在此应用程序中,我需要将32字节的数据作为密钥从一个平台发送到另一个平台。
该密钥用于加密/解密实际数据

我正在加密这个32字节的密钥并将其发送到另一端

当我在iOS端加密之前打印此密钥(NSData)时,我得到

<71c76511 dc0dcb9d c8d3c7b3 4e54b8fe 40fb006f 20f21457 5fbec70d f18c7d52>
 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。
现在我将致力于实际数据的加密/解密,我不希望这些负值损害这种解密

两者是相同的。字节只有8位,这些位可以用许多不同的方式表示

NSData将数据显示为十六进制,Java将其显示为有符号十进制-128到127

二进制:0111001
十六进制:71
小数点:113
字符:q(并非所有8位值都具有可打印字符)

二进制:11000111
十六进制:c7
十进制:-57(有符号字节)
这些只是相同字节值的不同表示。

这两种表示方式是相同的。字节只有8位,这些位可以用许多不同的方式表示

NSData将数据显示为十六进制,Java将其显示为有符号十进制-128到127

二进制:0111001
十六进制:71
小数点:113
字符:q(并非所有8位值都具有可打印字符)

二进制:11000111
十六进制:c7
十进制:-57(有符号字节)
这些只是相同字节值的不同表示。

zaph:谢谢你写下答案。我已经用这个密钥对实际数据进行了解密,得到了正确的结果。这意味着两个演示都是一样的。再次感谢你!扎夫:谢谢你写下答案。我已经用这个密钥对实际数据进行了解密,得到了正确的结果。这意味着两个演示都是一样的。再次感谢你!