2012-06-27 3 views
1

두 개의 분리 된 응용 프로그램이 있습니다. 하나는 Java로, 다른 하나는 Erlang으로 작성되었습니다. 두 응용 프로그램 모두 String 형식으로 서로 메시지를 보내고 이러한 메시지는 Java 응용 프로그램에서 암호화되므로 Erlang 응용 프로그램에서 암호를 해독해야합니다.erlang + RSA를 사용하여 문자열 암호 해독

문제는 다음과 같습니다. RSA 공개 키/개인 키를 사용하여 암호화/암호 해독을 수행하고 있습니다.

데이터를 암호화하고 내 얼랭 코드 안의 모든 데이터를 해독하면 모든 것이 정상입니다. 하지만, 내 자바 엔드 포인트에서 오는 문자열을 해독 할 수 없습니다. 여기

는 내가 뭘 간단한 테스트입니다 :

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). 

희망이 있으면 다른 사람들에게 도움이됩니다.