我必须在我的 java 应用程序中运行此命令:
openssl dgst -sha1 -sign file.pem -out output.sha1 input.txt
openssl enc -base64 -in output.sha1 -out output2.b64 -A
是否有任何库可以帮助我在我的 java 服务器中运行此代码?
最佳答案
看起来您只是想用正确的 SHA1 加密字符串? Java 已经提供了用于此目的的软件包,而无需使用 OpenSSL。
看看以下函数:
public static byte[] encrypt(String x) throws Exception {
java.security.MessageDigest digest = null;
digest = java.security.MessageDigest.getInstance("SHA-1");
digest.reset();
digest.update(x.getBytes("UTF-8"));
return digest.digest();
}
从现在起,您可以对它进行 Base64 编码,或者您想对输出执行任何其他操作。
--编辑,包括使用 key 进行散列
private String sha1(String s, String keyString) throws UnsupportedEncodingException, NoSuchAlgorithmException, InvalidKeyException {
SecretKeySpec key = new SecretKeySpec((keyString).getBytes("UTF-8"), "HmacSHA1");
Mac mac = Mac.getInstance("HmacSHA1");
mac.init(key);
byte[] bytes = mac.doFinal(s.getBytes("UTF-8"));
return new String( Base64.encodeBase64(bytes));
}
关于java - Java 中的 openssl 命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29654091/