Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/320.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
sha1 java哈希错误结果_Java_Hash_Sha1 - Fatal编程技术网

sha1 java哈希错误结果

sha1 java哈希错误结果,java,hash,sha1,Java,Hash,Sha1,我想在Java中散列文本,“(()|\\}{][?/>。是否可以使用Apache commons编解码器进行此操作?对于此类操作,最好使用构建良好的库 如果您可以使用commons编解码器,那么只需一行代码就可以为字符串生成SHA1哈希 String sha1hash = DigestUtils.sha1Hex("()_ |\}{][?/>.<,~`"); String sha1hash=DigestUtils.sha1Hex(“()| \}{][?/>.首先,字节到HexStri

我想在Java中散列文本,“(()|\\}{][?/>。是否可以使用Apache commons编解码器进行此操作?对于此类操作,最好使用构建良好的库

如果您可以使用commons编解码器,那么只需一行代码就可以为字符串生成SHA1哈希

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  -