2012-03-15 2 views
1

여기에서 도움을받을 수 있습니다. 나는이 파일에 암호화 스트림을 사용하여 줄을 추가하는 파일을 만듭니다. 모든 줄을 한 번에 작성하면 파일이 올바르게 암호화/해독됩니다. 그러나 추가 모드에서 파일을 열면 파일을 닫고 줄을 추가하십시오. 그런 다음 첫 번째 행만 올바르게 해독되고 다른 행은 쓰레기를 반환합니다.암호화 스트림으로 암호화 된 파일을 추가 한 후 암호 해독에 실패했습니다.

이것이 올바른 동작인지 궁금합니다. 사용자가 하루 동안 입력하는 암호화 된 세부 정보의 텍스트 파일을 작성하려고합니다. 하루가 끝날 때 일괄 처리 할 수 ​​있습니다. 한 줄을 추가하기 위해 전체 파일을 해독하고 암호화하는 오버 헤드가 과도한 것처럼 보입니다. 따라서 하루 동안 1000 줄의 줄이 생길 수 있습니다.

나는 같은 Initialisaion Vector와 동일한 엑셀러레이터를 사용하고 있으며 파일에 대한 모든 액세스 권한을 갖고 있습니까?

내가 잘못했거나 암호화 된 파일에 추가 할 수 있습니까?

건배 노엘

답변

2

예에서는 이러한 동작이 예상됩니다. 한 가지 할 수있는 일은 각 레코드 (텍스트 줄)를 별도로 암호화하고 블록의 시작과 길이를 나타내는 접두사를 추가하는 것입니다. 그런 다음 파일에서 읽을 때 접 두부를 읽고 레코드 길이를 확인한 다음 레코드를로드하십시오. 각 레코드에 대해 반복하십시오.

+0

감사합니다. 유진, 그건 의미있는 일입니다. – Bigtoe

+0

각 블록을 암호화하고 Base64로 인코딩하여 한 번에 한 라인 씩 파일에 썼습니다. – Bigtoe

1

사용중인 암호화가 스트림 또는 연결 암호 인 것으로 의심됩니다. 즉, 하나의 암호화 된 블록의 출력이 다음 블록을 수정하는 데 사용됩니다. 이러한 종류의 데이터에 직접 추가 한 다음 블록 간 종속성이 깨지기 때문에 로트를 해독하려고 시도하면 작동하지 않습니다.

간단히 말하면 마커를 추가하거나 파일의 각 레코드의 오프셋 + 길이에 대한 일부 데이터를 저장하는 것입니다. 일괄 처리를 수행 할 때 각 레코드에 대해 CryptoProvider를 재설정해야합니다.

관련 문제