2015-10-08 3 views
2

Как шифровать данные в erlang и расшифровывать их в python? Я написал эти коды, но не работает. Как это исправить?RSA-шифрование между 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:

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 

Что такое моя проблема кода?

ответ

3

Учитывая how asymmetric cryptography usually works, вы должны, вероятно:

  • Шифрование с открытым ключом (т.е. PubKey).
  • Расшифровать с помощью закрытого ключа.

Удачи вам!

EDIT>

В Эрл, вы используете показатель открытого ключа 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) 
+0

I'v сделал. Вот моя ошибка: 'Traceback (последний последний звонок): Файл« », строка 1, in Файл« /usr/lib/python2.7/dist-packages/rsa/pkcs1.py », строка 227, в дешифровке decrypted = core.decrypt_int (encrypted, priv_key.d, priv_key.n) AttributeError: объект PublicKey не имеет атрибута 'd'' – Amin

+0

Оставьте закрытый ключ в python - он был правдоподобным. – vlp

+0

Не работает. Ошибка: 'Decryption failed' – Amin

Смежные вопросы