해결할 수없는 까다로운 문제가 있습니다. 서명되지 않은 문자 버퍼와 그 크기 (바이너리이기 때문에)를 받아들이는 dll을 만들고 있습니다. 그럼 내가 암호화하고 버퍼를 반환합니다. 이 함수의 호출 원은 나중에이 버퍼를 파일에 씁니다.데이터가 키 크기의 배수가 아닌 경우 암호화 및 해독
파일 크기가 클수록 호출자는 파일 쓰기 전에 버퍼를 고정 크기가 아닌 암호화 (chunk)로 보내야합니다. 결국 최종 파일이 암호화됩니다.
이제 암호화를 위해 버퍼의 각 문자를 암호화하는 16 자 키를 사용하고 있습니다. 버퍼 크기는 16의 배수가 아니기 때문에 내 키의 모든 문자가 암호화에 사용되지 않을 수도 있습니다. 이로 인해 해독 중에 문제가 발생합니다. 모든 문자가 동일한 키 패턴을 사용하여 암호화되지는 않기 때문입니다. 따라서 암호 해독에 실패합니다.
이 문제를 어떻게 해결할 수 있습니까?
답변 해 주셔서 감사합니다. 내 문제에 대한 완벽한 해결책 인 것 같습니다. 내 패딩 값이 실제 가치와 동일한 상황이 있습니까? 그러한 시나리오에서 우리는 어떻게 구별 할 수 있습니까? – AnswerSeeker
PKCS # 7 패딩은 모호하지 않습니다. 즉 마지막 바이트를보고 데이터 버퍼에서 해당 바이트 수를 빼서 패딩이 무엇인지 항상 알 수 있습니다. 그 의미는 입력 내용이 정확히 블록 크기의 길이 인 경우, PKCS # 7없이 해당 상황에 채워 넣지 않아도 패딩 블록 (모두 값 16)을 추가해야합니다. . 다른 패딩 방식을 사용하는 경우 데이터의 작은 헤더를 암호화하여 길이를 알려줄 수 있습니다. – indiv
이 스키마에 대한 데이터가 침입으로부터 데이터를 보호하지 않는다는 점에 유의하고 싶습니다. 길이 헤더를 추가하면 공격자가 암호화 된 데이터를 단순히 뒤집어 놓는 것을 막을 수있는 방법은 없으며 암호를 해독하면 다른 길이가됩니다. 나는 당신의 암호화 계획이 오직 교육적인 목적을위한 것이라는 가정하에이 질문에 답했습니다. – indiv