2012-06-27 4 views
1

У меня есть два отдельных приложения, одно из которых написано на Java и другое в Erlang. Оба приложения отправляют сообщения друг другу в формате String, и эти сообщения зашифровываются в приложении Java и нуждаются в расшифровке в приложении Erlang.Расшифровка строки с использованием erlang + RSA

Проблема заключается в следующем: Я использую общедоступные/закрытые ключи RSA для шифрования/дешифрования.

Если я шифрую данные и расшифровываю все внутри своего кода Erlang, все в порядке. Но я не могу расшифровать строку, исходящую из моей конечной точки java.

Вот простой тест, который я делаю:

PrivKey = "-----BEGIN RSA PRIVATE KEY----- ...", 
% Data is the string I receive from Java 
Data = "s013aA/SGN2iGYEbEIXXKvJiipqisRVfVEDneL8npRgThTHxTnYZESzVfCF463phPZyo5aOozisU7pwDdGKXgY8aqYZC+a3uES5muTb2RrzJ17yYku+g4S44vgIwZ9EyustZafNVGEYfgbWOYaPP/q5k683uR+MRHVqp6UbqMok=", 
[PrivEntry] = public_key:pem_decode(list_to_binary(PrivKey)), 
Priv = public_key:pem_entry_decode(PrivEntry), 
BinData = iolist_to_binary(Data), 
public_key:decrypt_private(Data, Priv). 

Выполнение этого кода генерирует ошибку, как это:

** exception error: decrypt_failed 

Я думаю, что проблема в формате BinData, но я не мог Не найди никакого места, говоря, как я кодирую строку, чтобы перейти к функции decrypt_private.

Кто-нибудь знает, как это сделать? Это кажется простым, но мне нужно много времени, чтобы разобраться.

Спасибо.

ответ

5

После копания немного больше, я нашел ответ! Мне нужно было расшифровать мою строку в двоичном файле base64.

PrivKey = "-----BEGIN RSA PRIVATE KEY----- ...", 
% Data is the string I receive from Java 
Data = "s013aA/SGN2iGYEbEIXXKvJiipqisRVfVEDneL8npRgThTHxTnYZESzVfCF463phPZyo5aOozisU7pwDdGKXgY8aqYZC+a3uES5muTb2RrzJ17yYku+g4S44vgIwZ9EyustZafNVGEYfgbWOYaPP/q5k683uR+MRHVqp6UbqMok=", 
[PrivEntry] = public_key:pem_decode(list_to_binary(PrivKey)), 
Priv = public_key:pem_entry_decode(PrivEntry), 

BinData = base64:decode(Data), %<-- THIS IS THE MAGIC 

public_key:decrypt_private(BinData, Priv). 

Надеюсь, это поможет другим людям.

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