Erlang 和 Python 之间的 RSA 加密
RSA encryption between Erlang and Python
如何在 erlang 中加密数据并在 python 中解密?我写了这段代码,但不起作用。怎么解决?
Erlang 代码:
PrvKey = [257, 77181119504409699204797322144340611322502523292227043692039327666381749008487, 77131657261414365158890407156927969457179535804176721705182844017912686753873].
PubKey = [257, 77181119504409699204797322144340611322502523292227043692039327666381749008487].
Enc = crypto:rsa_private_encrypt(<<"hello">>, PrvKey, rsa_pkcs1_padding).
B64 = base64:encode_to_string(Enc).
现在 B64 的值是 "ITSqh/3jlijZR6qxeGjoutUlP5Bvzy+MjULqnY3CSxg="
,我将它发送到 python 并尝试解密它。
Python代码:
import rsa
import base64
pub = PublicKey(77181119504409699204797322144340611322502523292227043692039327666381749008487, 65537)
prv = PrivateKey(77181119504409699204797322144340611322502523292227043692039327666381749008487, 65537, 77131657261414365158890407156927969457179535804176721705182844017912686753873, 64921744597321522210744827947572972024591, 1188833109509413311172008266846274857)
b64 = base64.b64decode("ITSqh/3jlijZR6qxeGjoutUlP5Bvzy+MjULqnY3CSxg=")
rsa.decrypt(b64, prv)
这里我有错误python:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib/python2.7/dist-packages/rsa/pkcs1.py", line 232, in decrypt
raise DecryptionError('Decryption failed')
rsa.pkcs1.DecryptionError: Decryption failed
我的代码有什么问题?
给定 how asymmetric cryptography usually works,你可能应该:
- 使用 public 密钥加密(即
PubKey
)。
- 用私钥解密。
祝你好运!
编辑>
在 erlang 中,您使用 public 键指数 257
,这是错误的。请改用 65537
。
这应该有效:
PubKey = [65537, 77181119504409699204797322144340611322502523292227043692039327666381749008487].
Enc = crypto:rsa_public_encrypt(<<"hello">>, PubKey, rsa_pkcs1_padding).
B64 = base64:encode_to_string(Enc).
和
prv = rsa.PrivateKey(77181119504409699204797322144340611322502523292227043692039327666381749008487, 65537, 77131657261414365158890407156927969457179535804176721705182844017912686753873, 64921744597321522210744827947572972024591, 1188833109509413311172008266846274857)
b64 = base64.b64decode("BlqO1VeQJmvqqIYZJx+7QXEJzSb8XuIvVD+v665NkH0=")
rsa.decrypt(b64, prv)
如何在 erlang 中加密数据并在 python 中解密?我写了这段代码,但不起作用。怎么解决?
Erlang 代码:
PrvKey = [257, 77181119504409699204797322144340611322502523292227043692039327666381749008487, 77131657261414365158890407156927969457179535804176721705182844017912686753873].
PubKey = [257, 77181119504409699204797322144340611322502523292227043692039327666381749008487].
Enc = crypto:rsa_private_encrypt(<<"hello">>, PrvKey, rsa_pkcs1_padding).
B64 = base64:encode_to_string(Enc).
现在 B64 的值是 "ITSqh/3jlijZR6qxeGjoutUlP5Bvzy+MjULqnY3CSxg="
,我将它发送到 python 并尝试解密它。
Python代码:
import rsa
import base64
pub = PublicKey(77181119504409699204797322144340611322502523292227043692039327666381749008487, 65537)
prv = PrivateKey(77181119504409699204797322144340611322502523292227043692039327666381749008487, 65537, 77131657261414365158890407156927969457179535804176721705182844017912686753873, 64921744597321522210744827947572972024591, 1188833109509413311172008266846274857)
b64 = base64.b64decode("ITSqh/3jlijZR6qxeGjoutUlP5Bvzy+MjULqnY3CSxg=")
rsa.decrypt(b64, prv)
这里我有错误python:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib/python2.7/dist-packages/rsa/pkcs1.py", line 232, in decrypt
raise DecryptionError('Decryption failed')
rsa.pkcs1.DecryptionError: Decryption failed
我的代码有什么问题?
给定 how asymmetric cryptography usually works,你可能应该:
- 使用 public 密钥加密(即
PubKey
)。 - 用私钥解密。
祝你好运!
编辑>
在 erlang 中,您使用 public 键指数 257
,这是错误的。请改用 65537
。
这应该有效:
PubKey = [65537, 77181119504409699204797322144340611322502523292227043692039327666381749008487].
Enc = crypto:rsa_public_encrypt(<<"hello">>, PubKey, rsa_pkcs1_padding).
B64 = base64:encode_to_string(Enc).
和
prv = rsa.PrivateKey(77181119504409699204797322144340611322502523292227043692039327666381749008487, 65537, 77131657261414365158890407156927969457179535804176721705182844017912686753873, 64921744597321522210744827947572972024591, 1188833109509413311172008266846274857)
b64 = base64.b64decode("BlqO1VeQJmvqqIYZJx+7QXEJzSb8XuIvVD+v665NkH0=")
rsa.decrypt(b64, prv)