2014-12-17 2 views
0

Java를 사용하여 간단한 RSA 암호화/암호 해독 프로그램을 만들려고했습니다. 그러나 암호화와 복호화가 작동하지 않는 것 같습니다. 문제는 파일을 bigInteger로 변환하려고 할 때라고 생각합니다. 왜냐하면 일부 디버깅 후에는 암호화 및 암호 해독의 "십진수 표현"이 일치한다는 것을 알게되었으므로 bigInteger에서 문제를 일으키는 파일로의 변환 일뿐입니다.텍스트를 BigInteger로 변환 할 때의 RSA 구현 문제

File file = new File(inputPath); 
FileInputStream fis = new FileInputStream(file); 
int fileLen = (int)(file.length()); 
data = new byte[fileLen]; 
fis.read(data); 
fis.close(); 

내가 (C = m.modPow (필자는 RSA 물건의 나머지 부분을 수행하는시 큰 정수 (m)로 파일을 설정하려고 :

내가 파일에 읽기 방법이다 e, n)).

BigInteger m = new BigInteger(data); 

해독 들어, I는 해당 파일을 읽고 BigInteger로를 설정하고, m = c.modPow (d, N)을 사용하고, I는 암호화 구축 다음 사용

BigInteger c = new BigInteger(data); 

output = m.toByteArray(); or c.toByteArray(); 
fos = new FileOutputStream(path); 
fos.write(output); 
fos.close(); 

가 나는 BigInteger를로 C와 m를 인쇄하는 경우, 그들은 일치하지만, 때문에 RSA modPow 및 키 생성 작업, 파일이 아무튼 알고 :

그리고 두 경우 모두, 나는 BigInteger를에게 다음과 같은 방법을 쓰기 '티. 왜 그런가? 많은 감사드립니다.

+3

변환에 문제가 있다고 생각되면 코드의 해당 부분을 분리하고 문제를 나타내는 예제를 만듭니다. RSA 클래스에 대한 모든 코드를 제공하지 마십시오. –

+0

조언 해 주셔서 감사합니다. –

답변

0

new BigInteger(1, data)을 사용하십시오. 음수를 생성하고 RSA는 양수 만 사용합니다.