Java 中的 openssl 命令
openssl commands in Java
我必须 运行 在我的 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 编码或您希望对输出执行的任何其他操作。
--编辑,包括使用密钥散列
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 应用程序中执行此命令:
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 编码或您希望对输出执行的任何其他操作。
--编辑,包括使用密钥散列
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));
}