使用node-forge进行加密,使用python和RSA-OAEP进行解密
Encrypting using node-forge and decrypting using python with RSA-OAEP
我在Javascript中有以下代码要加密:
var rsa = forge.pki.rsa;
var keypair = rsa.generateKeyPair({bits: 2048, e: 0x10001});
var ciphertext = keypair.publicKey.encrypt("zz xx yy", 'RSA-OAEP', {
md: forge.md.sha256.create(),
mgf1: {
md: forge.md.sha1.create()
}
});
keypair.privateKey.decrypt(ciphertext, 'RSA-OAEP', {
md: forge.md.sha256.create(),
mgf1: {
md: forge.md.sha1.create()
}
});
"zz xx yy"
我使用
forge.pki.privateKeyToPem(keypair.privateKey) // stored in pv.key
forge.pki.publicKeyToPem(keypair.publicKey) // stored in pb.key
我使用
ciphertext_base64 = forge.util.encode64(ciphertext)
我正在尝试使用加密库在python中解密它,如下所示,但出现错误:
>>> key = RSA.importKey(open('pv.key').read())
>>> cipher = PKCS1_OAEP.new(key)
>>> import base64
>>> ciphertext = base64.b64decode(ciphertext_base64)
>>> cipher.decrypt(ciphertext)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib/python2.7/dist-packages/Crypto/Cipher/PKCS1_OAEP.py", line 227, in decrypt
raise ValueError("Incorrect decryption.")
ValueError: Incorrect decryption.
>>>
如果我使用 python 中的 pv.key 和 pb.key 中存在的密钥加密和解密一些文本字符串,它可以正常工作。
如何在伪造中获得加密,在python中解密工作?
pyCrypto默认使用SHA1进行哈希处理,MGF1。如果您传入 SHA-256 进行哈希处理,它也会将该哈希用于 MGF1(代码参考)。因此,您需要专门将哈希设置为SHA-256,将MGF1设置为SHA-1:
cipher = PKCS1_OAEP.new(key, Crypto.Hash.SHA256, '
lambda x,y: Crypto.Signature.PKCS1_PSS.MGF1(x,y, Crypto.Hash.SHA1))
相关文章:
- 在指令控制器中使用$attrs时出现问题
- 如何使用jQuery自动打开页面上的所有链接
- 如何使用url加载程序在webpack中导入多个图像
- 使用php或javascript从facebook相册URL中删除多余的部分
- 正在添加'X'按钮,在文本字段旁边使用javascript
- 如何使用jquery在填充自动完成的值后使文本框只读
- 使用agility.js进行页面布局和合成
- Javascript RSA-OAEP不适用于任意输入长度
- RSA使用jsencrypt加密,使用bouncy-castle解密
- 使用node-forge进行加密,使用python和RSA-OAEP进行解密
- RSA加密:使用PHP重现JS行为
- 在javascript中使用RSA加密一个小字符串,然后在服务器上用java解密
- 如何使用RSA/ECB/PKCS1Padding算法通过JavaScript对加密字符串进行解密
- 使用JavaScript生成RSA-SHA1签名
- 使用JSBN为Javascript RSA密钥生成选择N和E
- 在javascript中使用RSA加密问题
- Steam密码加密使用RSA (Java)
- 使用PHP和Javascript的RSA加密
- 使用
获取用于 javascript 的 RSA 密钥 - 使用javascript生成RSA密钥