我在Java中将字节数组转换为字符串,代码如下:
String str_bytearray = new String(bytearray_original);
然后,我使用字符串将原始字节数组恢复,如下所示:
byte[] bytearray_recovered = str_bytearray.getBytes();
然而当我比较原始字节数组 bytearray_original 和恢复后的字节数组 bytearray_recovered 时,我有些担心。结果如下:
[48, 89, 48, 19, 6, 7, 42, -122, 72, -50, 61, 2, 1, 6, 8, 42, -122, 72, -50, 61, 3, 1, 7, 3, 66, 0, 4, 100, -27, 48, -31, 13, -33, 107, -90, 91, -9, 119, 121, -73, 83, -105, 51, -87, -109, -84, 99, 115, -123, 119, -117, -1, -62, 71, -32, 99, 4, -103, -115, -47, 113, -83, 8, -91, 14, -74, 113, -40, -26, 50, 111, 95, 71, -9, 112, 120, 16, 0, 113, -80, 124, -71, 53, -97, 69, -85, 38, -112, -30, -110, 115]
[48, 89, 48, 19, 6, 7, 42, -122, 72, -50, 61, 2, 1, 6, 8, 42, -122, 72, -50, 61, 3, 1, 7, 3, 66, 0, 4, 100, -27, 48, -31, 13, -33, 107, -90, 91, -9, 119, 121, -73, 83, -105, 51, -87, -109, -84, 99, 115, -123, 119, -117, -1, -62, 71, -32, 99, 4, -103, 63, -47, 113, -83, 8, -91, 14, -74, 113, -40, -26, 50, 111, 95, 71, -9, 112, 120, 16, 0, 113, -80, 124, -71, 53, -97, 69, -85, 38, 63, -30, -110, 115]
正如您所看到的,与原始字节数组不同的是两个字节,即
-115到63
和-112到63
。是否有可能解决这个问题?注意:实际上,原始和恢复的字节数组都是公钥。首先,将公钥转换为字符串以存储在文件中,然后在读取公钥的字符串值后,应恢复公钥以验证签名。
bytearray_original生成如下:
PublicKey signPublicKey = keypair.getPublic();
byte [] bytearray_original = signPublicKey.getEncoded();
我很感激您的帮助。
敬礼
org.bouncycastle.util.encoders.Hex.toHexString()
和Hex.decode()
这样的方法——它们适用于任意二进制数据。 - sainaen