일부 암호화/암호 해독 알고리즘을 작업하고 암호화 된 바이트 [] 배열의 길이가 항상 33이고 char [] 배열의 길이가 항상 44임을 알았습니다.암호화 된 바이트 배열의 char [] 표현 길이가 다른 이유는 무엇입니까?
(내가 Rijndael을 암호화를 사용하고 있습니다.)
일부 암호화/암호 해독 알고리즘을 작업하고 암호화 된 바이트 [] 배열의 길이가 항상 33이고 char [] 배열의 길이가 항상 44임을 알았습니다.암호화 된 바이트 배열의 char [] 표현 길이가 다른 이유는 무엇입니까?
(내가 Rijndael을 암호화를 사용하고 있습니다.)
Padding 및 text encoding. 대부분의 암호화 알고리즘은 블록 크기를 가지며 입력은 해당 블록 크기의 배수까지 패딩되어야합니다. 또한 바이너리 데이터를 텍스트로 변환하는 것은 일반적으로 Base64 algorithm을 포함하는데, 3 바이트를 4 문자로 확장합니다.
아니, 전혀 생각하지만, 내 첫번째 생각을 암호화 알고리즘은 (는) 출력 데이터에서 10 당 1 개 비트를 제거하도록 내장되어 있다는 것입니다. 우리는 확실히 모든 암호화 알고리즘에 대한 사실이 아니다
:-) 밖으로 여기에서 당신의 코드를 볼 수 없기 때문에
만 당신이 확실히 알 수 있습니다, 그것은 당신이 사용하고있는 특정 하나의 속성이어야합니다. 어떤 알고리즘인지 알지 못해도 나는 추측 할 수 있지만 비율 33/44는 알고리즘이 각 문자를 출력 바이트 배열에서 6 비트로 압축하고 있음을 나타냅니다. 이것은 아마 64 개 이상의 별개의 문자가 사용된다는 가정을하고 있다는 것을 의미합니다. 이것은 평범한 텍스트에 대한 좋은 가정입니다 (사실, base64 디코딩이 작동하는 방식입니다).
그러나 사용하고있는 알고리즘을 알지 못해도 모두 추측입니다.
나는 Rijndael을 사용하고 있습니다. 감사. – devlord
사용중인 암호화를 알지 못하면 정확한 원인을 파악하기가 다소 어려워집니다. 시작하려면 여기 How to Calculate the Size of Encrypted Data에 대한 기사가 있습니다. 평문의 해시를 사용하는 것 같아 결과가 더 짧습니다.
편집 : 소스가 Rijndael Implementation 인 경우. ciphertext 출력은 처음에는 plaintext 입력과 동일한 길이로 보이고 base64를 사용하여 앞의 포스터에서와 같이 최종 출력을 원래 입력의 3/4으로 줄입니다.
바이트를 1 대 1로 바꾼다면 매우 치사한 암호화 알고리즘이 될 것입니다. 50 년 전 최첨단이었고 it didn't work very well even then입니다. :)
그래서 Base64의 속성입니다! 그것은 많은 것을 설명합니다. 고마워요! – devlord