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));

    }