Mar*_*kku 2 java shell openssl cryptography sha1
如何只使用shell脚本运行以下Java功能?不应该openssl做的伎俩?由于某种原因,值不相同.
贝壳:
$ cat test.txt
test
$ openssl sha1 test.txt
SHA1(test.txt)= fde773a18bb29f5ed65e6f0a7aa717fd1fa485d4
Run Code Online (Sandbox Code Playgroud)
Java代码(play framework origin):
import org.apache.commons.codec.binary.Hex;
public static String hexSHA1() {
value = "test";
try {
MessageDigest md;
md = MessageDigest.getInstance("SHA-1");
md.update(value.getBytes("utf-8"));
byte[] digest = md.digest();
return byteToHexString(digest);
} catch (Exception ex) {
return null;
}
}
public static String byteToHexString(byte[] bytes) {
// a94a8fe5ccb19ba61c4c0873d391e987982fbbd3
return String.valueOf(Hex.encodeHex(bytes));
}
Run Code Online (Sandbox Code Playgroud)
fde773a18bb29f5ed65e6f0a7aa717fd1fa485d4!= a94a8fe5ccb19ba61c4c0873d391e987982fbbd3
你有一个回车和换行结束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
Run Code Online (Sandbox Code Playgroud)