javascript - Javascript 和 Python 之间的 RSA 通信

标签 javascript python-2.7 rsa pycrypto pidcrypt

我正在开发一个原型(prototype),因此它需要在 Chrome 扩展和 Python 服务器之间使用 RSA。

到目前为止,我计划使用 https://sourceforge.net/projects/pidcrypt/https://www.dlitz.net/ .但是,虽然我可以按照文档进行解密和加密工作,但我无法解密彼此的消息。

有人可以推荐互操作的库,或者让我知道我是否对这个库做错了什么?

根据我的研究,pidder 使用 RSA PKCS#1 加密式填充(类型 2)。通过谷歌搜索,我发现它是 PyCrypto 调用 PKCS1_OAEP 的类型。我不太确定,但我已经尝试了标准和其他两个。

帮助将不胜感激!

最佳答案

Javascript 库 (pidCrypt) 使用 PKCS#1 v1.5 进行 RSA 加密,而不是 OAEP。

PyCrypto 支持(参见 here)。这是加密的例子:

from Crypto.Cipher import PKCS1_v1_5
from Crypto.PublicKey import RSA
from Crypto.Hash import SHA

message = 'To be encrypted'
h = SHA.new(message)

key = RSA.importKey(open('pubkey.der').read())
cipher = PKCS1_v1_5.new(key)
ciphertext = cipher.encrypt(message+h.digest())

和解密:

from Crypto.Hash import SHA
from Crypto import Random

key = RSA.importKey(open('privkey.der').read())

dsize = SHA.digest_size
sentinel = Random.new().read(15+dsize)      # Let's assume that average data length is 15

cipher = PKCS1_v1_5.new(key)
message = cipher.decrypt(ciphertext, sentinel)

digest = SHA.new(message[:-dsize]).digest()
if digest==message[-dsize:]:                # Note how we DO NOT look for the sentinel
     print "Encryption was correct."
else:
     print "Encryption was not correct."

请注意,已知 PKCS#1 v1.5 加密方案被严重破坏。

关于javascript - Javascript 和 Python 之间的 RSA 通信,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16823558/

相关文章:

c++ - 使用来自 X509 证书 c++ 的公钥进行 RSA 公共(public)加密

java - 来自公共(public)字符串的 Android RSA 加密

php - XML 签名 - PHP 中的不同签名值?

javascript - 相对于页面定位元素

javascript - 在 MapBox 中设置 geoJSON 要素图层的样式

javascript - jQuery 的 Form Data() 和 Ajax 导致文件提交失败

python-2.7 - 带有颜色图 matplotlib 的堆栈图

python - 学习 : Is there any way to debug Pipelines?

javascript - 访问与指令实例关联的 Controller

python - 在选项卡之间切换并关闭窗口中的选项卡会出错