Java中的openssl命令

时间:2015-04-15 15:16:14

标签: java openssl sha1

我必须在我的java应用程序中运行这些命令:

openssl dgst -sha1 -sign file.pem -out output.sha1 input.txt 
openssl enc -base64 -in output.sha1 -out output2.b64 -A

任何库是否帮助我在我的java服务器中运行此代码?

1 个答案:

答案 0 :(得分:1)

看起来您只是尝试使用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));

    }