Java Apache编解码器base64编码/解码-未获得预期结果

Java Apache编解码器base64编码/解码-未获得预期结果,java,apache,encoding,base64,Java,Apache,Encoding,Base64,我使用apachecodecbase64库做了一个POC,在这里我使用SHA加密了一个字符串。(这可以忽略) 步骤1-我打印了该字符串的字节数组 步骤2-对字节数组进行编码并打印其值 步骤3-解码编码值并打印 public static void main(String[] args) { MessageDigest messageDigest = null; String ALGORITHM = "SHA"; try { me

我使用apachecodecbase64库做了一个POC,在这里我使用SHA加密了一个字符串。(这可以忽略)

步骤1-我打印了该字符串的字节数组

步骤2-对字节数组进行编码并打印其值

步骤3-解码编码值并打印

public static void main(String[] args)
{
    MessageDigest messageDigest = null;
    String ALGORITHM = "SHA";
    try
    {
        messageDigest = MessageDigest.getInstance(ALGORITHM);
        
        byte[] arr = "admin1!".getBytes();
        byte[] arr2 = messageDigest.digest(arr);
        
        System.out.println(arr2);
        String encoded = Base64.encodeBase64String(arr2);
        
        System.out.println(encoded);
        byte[] decoded = Base64.decodeBase64(encoded);
        
        System.out.println(decoded);
    }
    catch (NoSuchAlgorithmException e)
    {
        e.printStackTrace();
    }
}
预期结果:步骤1和步骤3应产生相同的输出。但我不明白

输出:

[B@5ca801b0

90HMfRqqpfwRJge0anZat98BTdI=

[B@68d448a1


你的程序很好,只是一个错误

System.out.println(byteArray);
打印字节数组对象的哈希代码。(注意:数组是Java中的对象,不是基元类型)

您应该改用
System.out.println(Arrays.toString(byteArray));
,步骤1和步骤3的值相同

根据
Arrays.toString(字节[]a)
返回指定数组内容的字符串表示形式

更改后的代码将是:

public static void main(String[] args)
{
MessageDigest messageDigest = null;
String ALGORITHM = "SHA";
try
    {
    messageDigest = MessageDigest.getInstance(ALGORITHM);
    
    byte[] arr = "admin1!".getBytes();
    byte[] arr2 = messageDigest.digest(arr);
    
    System.out.println(Arrays.toString(arr2));
    String encoded = Base64.encodeBase64String(arr2);
    
    System.out.println(encoded);
    byte[] decoded = Base64.decodeBase64(encoded);
    
    System.out.println(Arrays.toString(decoded));
    }
    catch (NoSuchAlgorithmException e)
    {
    e.printStackTrace();
    }
}
输出将是:

public static void main(String[] args)
{
MessageDigest messageDigest = null;
String ALGORITHM = "SHA";
try
    {
    messageDigest = MessageDigest.getInstance(ALGORITHM);
    
    byte[] arr = "admin1!".getBytes();
    byte[] arr2 = messageDigest.digest(arr);
    
    System.out.println(Arrays.toString(arr2));
    String encoded = Base64.encodeBase64String(arr2);
    
    System.out.println(encoded);
    byte[] decoded = Base64.decodeBase64(encoded);
    
    System.out.println(Arrays.toString(decoded));
    }
    catch (NoSuchAlgorithmException e)
    {
    e.printStackTrace();
    }
}
[9,65,-52,125,26,-86,-91,-4,17,38,7,-76,106,118,90,-73,-33,1,77,-46]

90HMfRqqpfwRJge0anZat98BTdI=

[9,65,-52,125,26,-86,-91,-4,17,38,7,-76,106,118,90,-73,-33,1,77,-46]

注意字节数组的值相同