AES加密和解密不适用于十六进制值

我正在使用IoT设备,需要使用蓝牙与该设备进行通信。我已将设备配对,并且试图将Hexa值发送到硬件,并且使用了AES加密和解密。我提到了我用来加密的代码 1. AES-128固定为: 3A 60 43 2A 5C 01 21 1F 29 1E 0F 4E 0C 13 28 25 2.密文: 06 01 01 01 2D 1A 68 3D 48 27 1A 18 31 6E 47 1A

private static byte[] encrypt(byte[] sSrc,byte[] sKey) throws Exception {
    SecretKeySpec skeySpec = new SecretKeySpec(sKey,"AES");
    Cipher cipher = Cipher.getInstance("AES/ECB/NoPadding");
    cipher.init(Cipher.ENCRYPT_MODE,skeySpec);
    byte[] encrypted = cipher.doFinal(sSrc);
    return encrypted;
}

预期输出为: ec 72 21 4c b0 9c d1 1b 52 fe 73 e9 01 d8 dc 48 但是我从输出的带符号的二进位符号中得到小数,例如: -20、114、33、76,-80,-100,-47、27、82,-2、115,-23、1- 40,-36、72

和解密中一样 1. AES-128固定为: 3A 60 43 2A 5C 01 21 1F 29 1E 0F 4E 0C 13 28 25 2.加密值: A5 6C 7D 75 48 DE FF EF E7 AC 1E A9 BC CE 66 E6 用于解密的代码

private static byte[] decrypt(byte[] sSrc,"AES");
    Cipher cipher = Cipher.getInstance("AES/ECB/NoPadding");
    cipher.init(Cipher.DECRYPT_MODE,skeySpec);
    byte[] decrypted = cipher.doFinal(sSrc);
    return decrypted;
}

预期输出为: 06 02 07 5B B 71 E7 01 01 00 05 0B 86 20 18 0A 但我从输出的带符号的二进位符号中得到小数,例如: 6、2、7、91,-70、113,-25、1、1、3、5、11 -122、32、24, 10 请帮助我解决此问题,我必须将输出格式设置为十六进制值,而不是十进制形式的二进制补码。

xiangxiangdetang 回答:AES加密和解密不适用于十六进制值

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/3031141.html

大家都在问