encryption - 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, byte[] sKey) throws Exception {
    SecretKeySpec skeySpec = new SecretKeySpec(sKey, "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请帮助我解决此问题,我必须将输出作为十六进制值而不是十进制形式的二进制补码。

转载请注明来自askonline.tech,本文标题:encryption - AES加密和解密不适用于十六进制值


 Top