gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:02:34 24 4
gpt4 key购买 nike

我使用 apache codec base64 库做了一个 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); 打印字节数组对象的 hashCode。 (注意:数组在 Java 中是对象而不是原始类型)

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

根据 javadocs Arrays.toString(byte[] 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();
}
}

输出将是:

[-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]

注意字节数组的值是相同的。

关于java - Apache 编解码器 base64 编码/解码 - 未获得预期结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26801672/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com