如何在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加载到您的应用程序中),以执行和验证数据的数字签名。

您拥有的这段代码可以完成三件事:

  1. 它将Base64解码为PKCS#8
  2. 它将PKCS#8解码为内存中的实际密钥(注意,您可能需要在此处提供密码)
  3. 它使用所述密钥使用SHA-1执行PKCS#1 v1.5签名
  4. 它在Base64中编码签名

在PyCrypto的API中进行PKCS#1

v1.5签名的示例完全执行了步骤2和步骤3。

以上是 如何在python中制作PKCS8 RSA签名 的全部内容, 来源链接: utcz.com/qa/429125.html

回到顶部