我试图在python2.7中找到RSASSA-PSS-2048-SHA256数字签名算法。
目前我的代码如下:
def calc_rsassa_pss_2048_sha256(self, data):
private_key = RSA.importKey(self.private_key)
cipher = PKCS1_v1_5.new(private_key)
h = SHA.new(data)
signature = cipher.sign(h)
return base64.b64encode(signature)
但是当我们尝试验证生成的签名时,出现了签名不匹配错误。
在Java中,代码如下所示:
public static PrivateKey decodePrivateKey(String privateKeyStr) throws NoSuchAlgorithmException, InvalidKeySpecException {
String privateKeyRaw = trimPrivateKey(privateKeyStr);
byte[] buffer = decodeBase64(privateKeyRaw);
PKCS8EncodedKeySpec keySpec = new PKCS8EncodedKeySpec(buffer);
KeyFactory keyFactory = KeyFactory.getInstance("RSA");
return (RSAPrivateKey) keyFactory.generatePrivate(keySpec);
}
public static String sha256withRSAPSS(String privateKeyStr, String content) throws InvalidKeySpecException, NoSuchAlgorithmException, InvalidKeyException, SignatureException {
PrivateKey privateKey = decodePrivateKey(privateKeyStr);
Signature signature = Signature.getInstance("SHA256withRSA/PSS", new BouncyCastleProvider());
signature.initSign(privateKey);
signature.update(content.getBytes(CHARSET));
return encodeBase64(signature.sign());
}
我不知道上面的python签名代码有什么问题。或者如何在python2中使用RSASSA-PSS-2048-SHA256
算法。7.
非常感谢。
在Python文章中,您使用的是PKCS#1 v1。5.用于签名的填充。在Java部件上,您正在使用PSS。当您使用不同的方案时,这两种方案自然不会产生相同的输出。通常,建议在v1以上使用PSS方案。5.
我不是Python专家,但在互联网上快速浏览之后,也许Hazmat crypto库可以在Python上为您提供帮助(https://cryptography.io/en/latest/hazmat/primitives/asymmetric/rsa/):
>>> from cryptography.hazmat.primitives import hashes
>>> from cryptography.hazmat.primitives.asymmetric import padding
>>> message = b"A message I want to sign"
>>> signature = private_key.sign(
... message,
... padding.PSS(
... mgf=padding.MGF1(hashes.SHA256()),
... salt_length=padding.PSS.MAX_LENGTH
... ),
... hashes.SHA256()
... )
编辑:如果危险物质不适合你,看看这里批准的答案:PKCS1_PSS符号()方法
我想分两步使用RSA/PSS签名制作SHA256,首先散列一条消息,然后使用RSASSA-PSS签名摘要 但我使用SHA256时RSA/PSS无法验证 我需要一些帮助,谢谢你的帮助。
我已经把它归结为我能做的最简单的测试用例。我需要获取Python中生成的RSASSA-PSS签名,并在Go中验证它们。创建RSA密钥对并用其签名的Python代码如下: 那里引用的pycrypto_keys库可以在这里找到,用于参考函数和的具体实现。 我的Go测试由两个简单的文件组成,这些文件只依赖于核心包。首先是验证功能,verify.go: 第二,一个测试用例。密钥对和签名是使用顶部的Pyth
我们使用Chilkat在PowerBuilder 9.0.3应用程序(以及PowerBuilder 12.6)中签名HTTP请求,但这就像Chilkat生成的签名不被Isabel的API接受(我们已经联系了Isabel,他们猜测签名中存在参数问题算法)。伊莎贝尔API(https://documentation.ibanity.com/http-signature)的留档说,我们必须使用带有以下参
我正在研究PKSC1V2.2 RSASSA-PSS签名方案。我得到了一些用于最终结果测试的标准测试向量,但是我的结果不匹配。为了检查我的代码哪里出错了,我需要一些具有中间结果的测试向量。 我使用的是RSA 2048和SHA 256。 请帮助...如果有人有或者如果你知道我在哪里可以得到它?还有任何其他方法来测试它。 问候
我们为RSA签名创建了调试公钥和私钥,并生成sha256哈希并保存在cp1.bin中。然后我们尝试验证签名,但总是失败。如果我们不使用pss填充,验证命令将通过。任何人都可以帮忙评论吗? 谢谢 C:\Project\pkc C:\Project\pkc
我花了无数个小时在这个图书馆里,但仍然无法让它工作。 我想用充气城堡库发送SMIME消息,用RSASSA-PSS签名,用AES加密,其中密钥传输应该是RSAES-OAEP,所有P1#v2.1 签名者优先,这是它的创建方式: 所以现在当它应该被签名、加密和使用OAEP填充时: 我找不到正确的setAlgorithmMapping()说明,因此尝试了以下组合: 顺便说一句,有人能解释一下,这个模式在这