java pkcs8_java – 如何在python中创建PKCS8 RSA签名

这篇博客介绍了如何使用Python实现与给定Java代码等效的RSA签名过程。Java代码首先通过Base64解码获取PKCS#8编码的私钥,然后使用SHA1WithRSA算法进行签名,并再次Base64编码签名结果。在Python中,你需要实现相同的过程,包括解码PKCS#8编码的私钥,初始化签名算法并执行签名操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我有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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值