2012-03-14 8 views
-1

암호에 대해 자세히 알아 보려면 RSA 프로그램을 작성하려고합니다. Java를 사용하고 있지만 일반적인 조언을 원합니다.더 나은 프로그래밍 실습

제 질문은, 파일의 내용을 취해 그것을 두 배의 블럭으로 변환하여 권력을 얻는 가장 좋은 방법은 무엇입니까?

hamlet의 전체 텍스트 (또는 K & RC, 또는 무엇이든간에) 을 바이트 블록으로 변환하고 전체 블록을 강력하게 만드는 ASCII 텍스트 파일이 있다고 가정 해보십시오. 각 바이트를 하나의 전원으로 올리면 주파수 분석에 취약합니다.

지금 당장 파일을 바이트 배열로 읽어서 double 배열로 변환하고 크기가 [64] [file/64] 인 2 차원 배열로 변환하고 2 차원 배열의 각 double []에 연결합니다 모든 문자열을 두 배로 늘리고 문자열을 이중으로 캐스팅합니다 (또는 biginteger가되어야합니까?). 그런 다음 내 수학을 수행합니다.

끔찍하게 복잡합니다.

2d 배열 없이도 할 수 있지만 자바에서 배열을 슬라이스 할 수 없으므로 블록을 처리하는 더 쉬운 방법처럼 보입니다. 코드를 제공 할 필요는 없지만 더 나은 아키텍처를 찾고 있습니다.

답변

0

다른 구현물을 살펴보고 더 이상 진행하기 전에 RSA에 대해 조금 배우는 것이 좋습니다. 이제는 꽤 잃어 버렸기 때문입니다. 복식을 사용해서는 안되며 전체 텍스트를 하나의 숫자로 처리 할 수 ​​없습니다. 큰 텍스트는 항상 먼저 대칭 키로 암호화 된 다음 해당 키가 대신 RSA 키로 암호화됩니다. 단일 RSA 암호화는 모듈러스보다 작은 수에만 적용 할 수 있으며 실제로는 패딩 때문에 더 적습니다.

BigInteger는 좋은 선택입니다. 그렇습니다. 좋은 이유 때문에 소수 계산을위한 메소드가 있습니다. 그것은 오랫동안 배후 구현의 배열을 사용합니다. (오라클 JDK는 그렇지만, 다른 Java 구현도 long을 사용할 것으로 추정합니다.)

+0

전체 텍스트를 숫자로 처리 할 수는 없지만 모든 바이트를 암호화하면 패턴을 찾기위한 프로그램을 작성하는 것이 매우 쉽습니다. – Muricula

+0

전체 텍스트를 숫자로 처리 할 수는 없지만 난 그냥 모든 바이트를 암호화, 주파수 분석에 빠질 것이다. 전체 블록을 권력에 올릴 필요가 있습니다. 또한 AES와 같은 대칭 알고리즘으로 암호화 할 경우 RSA의 핵심은 무엇입니까? 내가 열쇠를 암호화하는 것에 대해 당신이 말하는 것을 보았지만, 왜 duffie hellman 키 교환을 사용하지 않습니까? 두 배가 가장 큰 기본 데이터 형식이므로 두 배를 사용하고 있습니다. 그들은 갈비뼈보다 길다. 곧 bigIntegers를 위해 재 작업 할 것이라고 생각합니다. 다른 구현에 관해 조언이 있습니까? – Muricula

+0

주석 편집시 타임 스탬프가 잘못되었습니다. – Muricula