首页 > 解决方案 > 当 DatatypeConverter.printHexBinary 将我的字节数组中的字节数加倍时该怎么办?

问题描述

我正在尝试使用安全服务器建立通信协议。服务器在某些时候等待我的长度为 128 字节的非对称加密对称密钥字节数组,但是在我使用 DatatypeConverter.printHexBinary 将字节数组转换为字符串之后,在我使用它之后,它的数量增加了一倍数组中的字节。我想知道为什么会发生这种情况以及如何解决?

使用不同类型的方法将 byte[] 解析为 String,但服务器无法识别它们。

这是我正在使用的代码:

**注:公钥由服务器在发送数字证书时发送。

对于密码:

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);

//Algo en el código estágenerando un problema y el tamaño de lo que se envía es de 256 bytes, //por eso el servidor no lo recibe。没有 PUDIMOS ENCONTRAR LA RAZÓN。

//服务器停到这里,显示一个非法块大小异常数据不能超过128字节

标签: javaarraysstringserverclient

解决方案


推荐阅读