java pkcs8_java – 如何在python中创建PKCS8 RSA签名
我有pkcs8_rsa_private_key文件,它由openssl從rsa_private_key.pem文件生成.
我需要通過python中的私鑰進行簽名,使用下面的java代碼創建相同的簽名.
public static final String SIGN_ALGORITHMS = "SHA1WithRSA";
public static String sign(String content, String privateKey) {
String charset = "utf-8";
try {
PKCS8EncodedKeySpec priPKCS8 = new PKCS8EncodedKeySpec(
Base64.decode(privateKey));
KeyFactory keyf = KeyFactory.getInstance("RSA");
PrivateKey priKey = keyf.generatePrivate(priPKCS8);
java.security.Signature signature = java.security.Signature
.getInstance(SIGN_ALGORITHMS);
signature.initSign(priKey);
signature.update(content.getBytes(charset));
byte[] signed = signature.sign();
return Base64.encode(signed);
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
解決方法:
PKCS#8定義了一種編碼和傳輸密鑰的方法,它并不特定于OpenSSL; PKCS#1定義了一種使用RSA密鑰的方法(無論它是如何加載到您的應用程序中,使用PKCS#8)來執行和驗證數據上的數字簽名.
你擁有的這段代碼有三件事:
>它將Base64解碼為PKCS#8
>它將PKCS#8解碼為內存中的實際密鑰(請注意,您可能需要在此處提供密碼)
>它使用SHA-1使用所述密鑰執行PKCS#1 v1.5簽名
>它對Base64中的簽名進行編碼
標簽:java,python,encryption,openssl,rsa
來源: https://codeday.me/bug/20191005/1856644.html
總結
以上是生活随笔為你收集整理的java pkcs8_java – 如何在python中创建PKCS8 RSA签名的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Linux重置mysql密码
- 下一篇: 计算机画图软件教学教案,画图软件教学设计