Java 当DatatypeConverter.printHexBinary将my bytearray中的字节数增加一倍时,该怎么办?
我正试图建立一个与安全服务器的通信协议。在某种程度上,服务器会等待我的长度为128字节的非对称加密对称密钥字节数组,但在我使用DatatypeConverter.printHexBinary将字节数组转换为字符串后,在我使用它后,数组中的字节数会翻一番。我想知道为什么会发生这种情况,以及如何解决它 使用不同类型的方法将字节[]解析为字符串,但服务器无法识别它们 以下是我正在使用的代码: **注意:公钥由服务器在发送数字证书时发送 对于密码:Java 当DatatypeConverter.printHexBinary将my bytearray中的字节数增加一倍时,该怎么办?,java,arrays,string,server,client,Java,Arrays,String,Server,Client,我正试图建立一个与安全服务器的通信协议。在某种程度上,服务器会等待我的长度为128字节的非对称加密对称密钥字节数组,但在我使用DatatypeConverter.printHexBinary将字节数组转换为字符串后,在我使用它后,数组中的字节数会翻一番。我想知道为什么会发生这种情况,以及如何解决它 使用不同类型的方法将字节[]解析为字符串,但服务器无法识别它们 以下是我正在使用的代码: **注意:公钥由服务器在发送数字证书时发送 对于密码: private static byte[] cifra
private static byte[] cifradoAsimetrico(SecretKey key, PublicKey publicKey) {
byte[] cipheredText;
try {
Cipher cipher = Cipher.getInstance(asimetrico);
byte[] clearText = key.getEncoded();
cipher.init(Cipher.ENCRYPT_MODE, publicKey);
cipheredText = cipher.doFinal(clearText);
return cipheredText;
} catch (Exception e) {
System.out.println("[Exception] Method cifradoAsimetrico( ): " + e.getMessage());
return null;
}
}
对于通信协议:
keyGenerator = KeyGenerator.getInstance(simetrico,new BouncyCastleProvider());
keyGenerator.init(128);
desKey = keyGenerator.generateKey();
byte[] llaveCifrada = cifradoAsimetrico(desKey, publicaServidor);
System.out.println("Tamaño cifrada: " + llaveCifrada.length);
String llaveCifradaHexa = DatatypeConverter.printHexBinary(llaveCifrada);
System.out.println("Tamaño hexa: "+llaveCifradaHexa.getBytes().length);
socketPrintWriter.println(llaveCifradaHexa);
//在256个字节的环境中,所有的问题都会被解决,
//这是我的服务。没有普迪莫斯·拉兹恩
//服务器在此停止并显示illegalblocksizeexception数据长度不得超过128字节