使用SHA-512算法创建新的行char

时间:2012-08-02 16:20:26

标签: java hash sha512

我在Java中使用“SHA-512”算法来创建使用salt的哈希。问题是在散列字符串中总是有一个奇怪的字符刹车线,当我打印散列字符串时它由两行组成。但是当我使用SHA-256时,它更短,并且没有新的行字符。

那么为什么我在使用SHA-512时得到两行?

编辑:对不起,我没有提到新行char是编码字符串。所以我的哈希字符串就像“...... hvRfXJwYDrnky / uUVzXnxz * \ r \ n * GFDJ + L3A ......”字符“\ r \ n”导致问题.. < / p>

2 个答案:

答案 0 :(得分:2)

  

问题在于散列字符串总是有一个奇怪的字符

建议您正在尝试将哈希值(二进制数据)转换为字符串,就像它已经是编码文本一样,例如

// This is bad!
String text = new String(hashBytes);

哈希不是编码文本 - 它只是原始二进制数据。要将其表示为字符串,您应该使用hex或base64之类的东西。对于base64转换,您可以使用this public domain library之类的内容。例如:

// This won't lose data - it's reversible...
String base64 = Base64.encodeBytes(hashBytes);

当然,如果不是你的代码正在做什么,那么这个答案是没用的 - 但在这种情况下,请将你的代码发布到你的问题中。

答案 1 :(得分:2)

啊,那么你需要将Base64线路长度设置得更长。 Base64编码器通常具有最大行长度,之后它们会添加换行符。

sun.misc.BASE64Encoder是一种丑陋的编码器。我认为您可以将其子类化并覆盖bytesPerLine。我会使用org.apache.commons.codec.binary.Base64,您可以在构造函数中指定行长度。