sha1 java哈希错误结果
我想在Java中散列文本,“(()|\\}{][?/>。是否可以使用Apache commons编解码器进行此操作?对于此类操作,最好使用构建良好的库 如果您可以使用commons编解码器,那么只需一行代码就可以为字符串生成SHA1哈希sha1 java哈希错误结果,java,hash,sha1,Java,Hash,Sha1,我想在Java中散列文本,“(()|\\}{][?/>。是否可以使用Apache commons编解码器进行此操作?对于此类操作,最好使用构建良好的库 如果您可以使用commons编解码器,那么只需一行代码就可以为字符串生成SHA1哈希 String sha1hash = DigestUtils.sha1Hex("()_ |\}{][?/>.<,~`"); String sha1hash=DigestUtils.sha1Hex(“()| \}{][?/>.首先,字节到HexStri
String sha1hash = DigestUtils.sha1Hex("()_ |\}{][?/>.<,~`");
String sha1hash=DigestUtils.sha1Hex(“()| \}{][?/>.首先,字节到HexString是wierd:
使用这个(可能没有比这个更快的了):
private static final char[]CRYPTOCHARS=新字符[]{'0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f'};
公共静态字符串byteArrayToHexString(最终字节…args)
{
最终字符[]字符=新字符[args.length*2];
对于(int i=0;i>4)&0xF];
字符[i*2+1]=加密字符[(args[i])&0xF];
}
返回新字符串(字符);
}
或现有的图书馆
您应该在使用md之后/之前重置md
我还得到了82101f0ba1cb0fd017e5b670b7475a95c831d016,而不考虑字符集。
如何获取其他值?一些登录库最多加密密码10000次
或者单元测试是错误的?您可能有错误的测试数据,或者您对实际真散列的假设是错误的:
$ echo -n '()_ |\}{][?/>.<,~`' | sha1sum -
82101f0ba1cb0fd017e5b670b7475a95c831d016 -
$echo-n'()记事本+++>NppCrypt(()记事本+{][?/>.82101f0ba1cb0fd017e5b670b7475a95c831d016有什么问题吗?(看不清楚屏幕截图)实际上有\\,但需要更改为\\\\to show\\,thx寻求帮助,似乎\是一个您已经解决的问题。正如您可能意识到的,只要可以,您就不应该将哈希数据保存为字符串。将数据直接读取到字节[]然后您就可以避免字符串对象中\\的问题。Thx似乎是一个问题,感谢图书馆。现在我看到了,以前没有看到过它,如果您查看图片,有\\,\是一个问题,感谢您的帮助。\\n在该编辑器中更改为\
private static final char[] CRYPTOCHARS = new char[] { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f' };
public static String byteArrayToHexString(final byte... args)
{
final char[] chars = new char[args.length * 2];
for (int i = 0; i < args.length; i++)
{
chars[i * 2] = CRYPTOCHARS[(args[i] >> 4) & 0xF];
chars[i * 2 + 1] = CRYPTOCHARS[(args[i]) & 0xF];
}
return new String(chars);
}
$ echo -n '()_ |\}{][?/>.<,~`' | sha1sum -
82101f0ba1cb0fd017e5b670b7475a95c831d016 -
$ echo -n '()_ |\\}{][?/>.<,~`' | sha1sum -
ef89e75ce03a4fd9df7f9283d332d9a7f01fe09f -