下面是生成SHA256哈希在Java字符串中的Java代码。
public static void main(){
String data = "hello world";
// Generate the Sha256 hash using Apache Common Codec library
String hash = DigestUtils.sha256Hex( data);
System.out.println("Apache : Sha256hash: "+ hash);
// Generate Sha 256 hash by using guava library
final String hashed = Hashing.sha256()
.hashString(data, StandardCharsets.UTF_8)
.toString();
System.out.println("Guava : Sha256hash: "+ hashed);
}
当我运行该程序,我得到下面的值。这两个哈希值完全相同。
Apache : Sha256hash: b94d27b9934d3e08a52e52d7da7dabfac484efe37a5380ee9088f7ace2efcde9
Guava : Sha256hash: b94d27b9934d3e08a52e52d7da7dabfac484efe37a5380ee9088f7ace2efcde9
现在,我产生的SHA256哈希从命令行字符串“Hello World”。
命令行UTIL SHA2
echo "hello world" | sha2 -256
SHA-256 ((null)) = a948904f2f0f479b8f8197694b30184b0d2ed1c1cd2a1ec0fb85d299a192a447
OpenSSL的UTIL
echo 'hello world' | openssl dgst -sha256
a948904f2f0f479b8f8197694b30184b0d2ed1c1cd2a1ec0fb85d299a192a447
当你从这些例子中看到,从命令行生成的值从从Java生成的值不同(Apache和番石榴)
输入字符串是一样的,但是哈希值是不同的。为什么这种差异会发生什么?
我真的有一个修订这个答案最近。
问题是回声增加了一个新行到您的数据。如果您使用echo -n
或者openssl dgst -sha256 <<< 'hello world'
你会得到正确的值。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句