相当于Java MessageDigest的Shell脚本
如何仅使用shell脚本运行以下Java功能?openssl不应该这样做吗?由于某些原因,值不相同 外壳:相当于Java MessageDigest的Shell脚本,java,shell,cryptography,openssl,sha1,Java,Shell,Cryptography,Openssl,Sha1,如何仅使用shell脚本运行以下Java功能?openssl不应该这样做吗?由于某些原因,值不相同 外壳: $ cat test.txt test $ openssl sha1 test.txt SHA1(test.txt)= fde773a18bb29f5ed65e6f0a7aa717fd1fa485d4 Java代码(播放框架源代码): fde773a18bb29f5ed65e6f0a7aa717fd1fa485d4!=a94a8fe5ccb19ba61c4c0873d391e98798
$ cat test.txt
test
$ openssl sha1 test.txt
SHA1(test.txt)= fde773a18bb29f5ed65e6f0a7aa717fd1fa485d4
Java代码(播放框架源代码):
fde773a18bb29f5ed65e6f0a7aa717fd1fa485d4!=a94a8fe5ccb19ba61c4c0873d391e987982fbbd3的值与第一种情况下为
test.txt计算SHA1的值不同,下一种情况下为test
字符串计算相同的值
如果要从java应用程序内部调用openssl
,请使用以下代码片段:
Runtime.getRuntime().exec('openssl','sha1','test.txt')test.txt的末尾有回车符和换行符。这些显然不在Java字符串中
$ echo -n test > test.txt
$ openssl sha1 test.txt
SHA1(test.txt)= a94a8fe5ccb19ba61c4c0873d391e987982fbbd3
$ echo -ne 'test\r\n' > test2.txt
$ openssl sha1 test2.txt
SHA1(test2.txt)= fde773a18bb29f5ed65e6f0a7aa717fd1fa485d4
下次,只需将test.txt
的二进制数据读入Java,看看摘要是否匹配。如果是,请检查摘要的二进制输入是否与文件中的二进制输入匹配。要了解如何读取二进制文件,请使用以下Q:(查看Java7方式,应该是一行程序)。
$ echo -n test > test.txt
$ openssl sha1 test.txt
SHA1(test.txt)= a94a8fe5ccb19ba61c4c0873d391e987982fbbd3
$ echo -ne 'test\r\n' > test2.txt
$ openssl sha1 test2.txt
SHA1(test2.txt)= fde773a18bb29f5ed65e6f0a7aa717fd1fa485d4