2012-04-03 2 views
0

불만이있는 질문은 충분히 구체적이지 않은 것으로 보입니다.ASCII 용 Java Regex 범위

p = 263, Q = 587, 공개 키 E = 683 및 개인 키 D = 81599. 따라서 N = PQ = 154,381와 RSA 시스템 주어.

  • 어떤 편지 변환 (된답니다 : 메시지를 들어, 다음과 같이 암호화를 수행한다, "나는 학생입니다"라고 3 자리수 ASCII 코드로 딩 공백), 즉 073 032 065 077 032 065 032 083 084 085 068 069 078 084.
  • 는 073,032 065,077 032,065 032,083 084,085 즉, 블록을 형성하는 모든 인접한 두 ASCII 코드 참여 068069 078084. (마지막 문자에 아무 것도 입력하지 않으면 000을 사용하십시오). 암호화 알고리즘을 사용
  • C =m E 개조 N 모든 블록을 암호화하는 단계; 33815872282353670979238213794429016637939017111351. 내용이 무엇인가 등 C = 73032 683 모드 154381 = 103300는

는 메시지의 수신기입니다 가정?

조금 더 생각해 보면, 부분적으로 해독해야하므로 (예 : 33815, 87228 등을 해독해야하므로 생각하고 있습니다.) 해독 된 부분을 반으로 분할하고 각각을 확인해야합니다. 반은 ASCII 범위에 있고, 그렇지 않으면 원본으로 돌아가서 다르게 분할합니다. 이 소리는 정규식으로 뭔가를 해킹하려고 시도하는 것보다 나은 해결책과 같습니까?

P. 디코딩은 숙제로 간주됩니다.이 작업을 직접 수행했으며 "암호를 싫어합니다"(내 강사가 유머 감각을 가지고있는 것 같습니다)라는 메시지를 디코딩하므로 숙제를 도와주지 않습니다. 이것을 프로그램으로 바꾸는 것은 내가 재미 있고 흥미로울 것이라고 생각한 과외 활동 일뿐입니다.

+4

RSA로 얻으려는 것을 조금 더 설명해 주시겠습니까?우리는 당신의 정규 표현식으로 당신을 도울 수 있지만, 나는이 모든 것의 위에 뭔가 더 잘못된 것이 있다고 생각합니다. 이 오류를 수정하면 위에 설명 된 복잡한 솔루션의 필요성이 제거 될 것입니다 –

+0

나는 직접적으로 RSA를 직접 사용해 본 적이 없지만 이것이 문자를 다시 얻는 올바른 경로라고 상상할 수 없습니다. – stema

+0

RSA가 메시지를'byte []'로 디코드하지 않습니까? 영숫자 문자열 표현으로 디코딩하는 경우는 없습니다. 연관된'String'을 되 돌리려면'new String (bytes)'을 할 수 있어야합니다. – Gray

답변

0

delimeter 나 index없이 가변 길이 레코드를 갖는 것은 대단히 나쁜 생각입니다. 이 경우 가장 좋은 방법은 앞에 0이 붙는 고정 너비 정수를 사용하는 것입니다.

즉, 건너 뛰지 않고 항상 문자열의 처음부터 끝까지 읽고 있다고 가정 할 때 실제로 암시 적 구분 기호가 있습니다. 0 또는 1을 사용하여 3 자리 숫자임을 나타내면 2-9를 사용하여 2 자리 숫자를 나타냅니다. 이런 식으로 뭔가가 작동 것이다 : 정말

[01][0-9][0-9]|[2-9][0-9]

하지만를 - 단지 앞에 0이 문자열로 숫자를 인쇄 할 수 있습니다. 또는 공간에 대해 걱정할 경우 2 자리 16 진수 인코딩을 살펴보십시오. 또는 Base 64 또는 다른 인쇄 가능한 인코딩 중 하나.