Java AES解密获取解密的十六进制而不是解密的字符串

Java AES解密获取解密的十六进制而不是解密的字符串,java,encryption,cryptography,aes,Java,Encryption,Cryptography,Aes,在Java中尝试解密十六进制字符串时,我能够解密该字符串,但因为加密的原始数据不是字符串,而是32位十六进制值 加密的十六进制字符串是“4ba3442d4bc3baf5126b7b271b359e42”,这里使用的密钥是“AC00AC00AC00AC00AC00AC00AC00” 我应该从aes.online-domain-tools.com获取的输出是“×zx.b3ý.ýgí253; bÞ。”但是从这个字符串中可以看出,只有zXb3gb是普通ASCII字符,其他是扩展字符,而扩展字符反过来变成

在Java中尝试解密十六进制字符串时,我能够解密该字符串,但因为加密的原始数据不是字符串,而是32位十六进制值

加密的十六进制字符串是“4ba3442d4bc3baf5126b7b271b359e42”,这里使用的密钥是“AC00AC00AC00AC00AC00AC00AC00”

我应该从aes.online-domain-tools.com获取的输出是“×zx.b3ý.ýgí253; bÞ。”但是从这个字符串中可以看出,只有zXb3gb是普通ASCII字符,其他是扩展字符,而扩展字符反过来变成了一个ASCII字符� 控制台中的int值为65533,这与我的原始数据不符

但是,如果我们看到aes.online-domain-tools.com的输出,扩展ASCII字符的ASCII值是原始数据的正确值,但由于它不是普通ASCII字符,而是扩展字符,因此它成为� 使用值65533,这将在转换为整数时给我错误的值

我想知道的不是将其解密为字符串,而是能够将十六进制字符串直接解密为十六进制字符串,而不是解密为字符串并转换为int

目前这是我的解密代码:

public static String decrypt(String strToDecrypt)
{
    char[] ch=strToDecrypt.toCharArray();

    System.out.println("Test: " + ch);
    try
    {

        Cipher cipher2 = Cipher.getInstance("AES/ECB/NoPadding");

        cipher2.init(Cipher.DECRYPT_MODE, secretKey);

        setDecryptedString(new String(cipher2.doFinal(Hex.decodeHex(ch))));            // Output as String eg: testingone


    }
    catch (Exception e)
    {

        System.out.println("Error while decrypting: "+e.toString());
    }
    return null;
}
这是我用来将其转换为INT以检索原始值的代码块:

        System.out.println("String To Decrypt : " + strToDecrypt);

    final String decryptedString = getDecryptedString();
    char[]  asciiLine = decryptedString.toCharArray();

    for (char ch:asciiLine)
    {
        System.out.println("Decrypted : " + (int)ch+"  ");
    }

    System.out.println("TestDecrypted : " + test.getDecryptedString());
    System.out.println("StringDecrypted : " + decryptedString);
    System.out.println("DecodeDecrypted : " + Integer.decode(decryptedString));

您的解密本身似乎很好。。。但是您对返回数据的处理不是

doFinal返回一个字节数组

您通过将其传递给新字符串(…)来处理它

您可能需要将bytearray编码为十六进制数字字符串


看看这里

加密的输出是任意字节,不是有效的可打印字符。可能是Oh my.的重复。。谢谢兄弟。。已成功打印预期输出。。谢谢你的指导。。因此,处理返回数据的方法是错误的。。