2011-02-10 4 views
2

가급적이면 AES를 사용하여 텍스트 (16 자)를 암호화해야하며 결과 암호화 된 텍스트의 길이를 제한해야합니다 (14 또는 16 문자). 암호화 된 문자와 숫자 만 사용해야합니다 ('=', '?', ...). 가능합니까?AES를 사용하여 암호화 된 결과를 제한하십시오.

암호 텍스트 (암호화 된)에서 원본 텍스트를 다시 가져와야합니다.

RijndaelManaged (System.Security.Cryptography )를 사용하여이 작업을 수행 할 수 있습니까?

+0

"암호화 된 문자와 숫자 만 사용해야합니다"라고 말하면 원래 텍스트 또는 결과를 의미합니까? –

+0

@ jon-skeet 결과입니다. RijndaelManaged를 사용할 필요가 없습니다. 필요한 경우 다른 것을 사용할 수는 있지만 AES라고합니다. – Evandro

답변

4

cypher-text는 적어도 일반 텍스트와 같이 (엔트로피 적으로) 길어야합니다. 무손실로 임의의 텍스트를 압축 할 수는 없습니다. 따라서 출력을 log2 (10 + 2 * 26) * 16 = 95 비트로 제한하면 입력보다 더 많은 엔트로피를 사용할 수 없습니다. 이것은 AES와는 아무런 관련이 없습니다. 모든 무손실 인코딩에 적용되는 수학적 제한입니다.

캐릭터 란 무엇입니까? A bytechar 또는 유니 코드 코드 포인트?

AES에는 블록 사이퍼라는 추가적인 문제가 있습니다. 최소 출력 크기는 블록 크기 인 128 비트와 같습니다. 출력이 무작위로 나타나므로 암호화 후 압축 할 수 없습니다. 그리고 이미 귀하의 한도를 초과합니다. 대부분의 암호화 모드에서는 약간의 추가 패딩이 추가됩니다.

임의 길이 입력을 일정 길이 출력에 매핑하는 기능이 있습니다. 그것들을 해시 함수라고합니다. 그러나 pidgeon-hole-principle에 따라 여러 입력을 하나의 출력으로 매핑합니다. 따라서 가능한 모든 입력에 대한 입력을 되돌릴 수 없습니다.

+0

char. 사이퍼 텍스트가 태그에 인쇄되고 사용자가 다른 시스템에서 그것을 알려주기 때문에. 이 시스템은 원본 암호화 데이터를 얻기 위해 cypher-text를 생성하는 데 사용되는 루틴과 동일한 루틴을 사용합니다. – Evandro

+0

입력 문자열에 길이가 매우 낮은 엔트로피가 없으면 크기 요구는 수학적으로 불가능합니다. – CodesInChaos

+0

@CodesInChaos 그렇다면 암호화 된 출력의 길이를 제어 (또는 제한) 할 수 없다는 말입니까? 니가 말하는거야? –

관련 문제