VISUALBASIC의 RND() 함수에는 중요한 기능이 있습니다. RND()의 매개변수(여기서는 시드라고 부를 수 있음)가 음수 값인 경우 동일한 시드(음수 값)가 동일한 난수 시퀀스를 생성합니다. 동시에 VISUALBASIC에는 강력한 바이너리 기술 기능도 있으므로 다음 아이디어에 따라 파일 콘텐츠 암호화를 달성할 수 있습니다.
X=RND(-키)
'KEY는 양수입니다.
VAULE=INT(256*RND)'난수 생성(비밀번호로 사용)
OpenFILENAME$ForBinaryAs#FILENUM'파일 열기
Get#FILENUM,I,A'파일 내용 가져오기
B=AXORVAULE'암호화된 파일 가져오기
결합하다
C=BXORVAULE'은 해독된 파일을 가져옵니다. (B는 암호화된 파일의 내용입니다.)
참고: 여기에 있는 내용은 전체 파일 내용이 아니며 매우 작은 부분, 몇 바이트 또는 단일 바이트일 수 있습니다. 단일 바이트인 경우 파일의 각 바이트는 다른 숫자로 XOR됩니다. 해독하기 어렵습니다. 특정 프로세스:
SubENDECODE(FILENAME$,MA,FILE2$)' 매개변수는 소스 파일, 비밀번호, 대상 파일입니다.
DimFILENUMAsInteger,XAsSingle,IAsSingle
DimCHARNUMAsInteger,RANDOMINTEGERAsInteger
DimSINGLECHARAsString*1,filen2AsInteger'는 단일 바이트를 사용합니다.
MA<0이면
MA=MA*(-1)
종료
X=Rnd(-MA)' 매개변수가 음수입니다.
FILENUM=무료 파일
OpenFILENAME$ForBinaryAs#FILENUM'바이너리 모드의 오픈 소스 파일
filen2=무료파일
OpenFILE2$ForOutputAs#filen2'순차 파일에서 대상 파일 열기
ForI=1ToLOF(FILENUM)'LOF() 파일 길이(바이트)
Get#FILENUM,I,SINGLECHAR'싱글바이트 콘텐츠 가져오기
CHARNUM=오름차순(단일 문자)
RANDOMINTEGER=Int(256*Rnd)'알파벳 가져오기
CHARNUM=CHARNUMXorRANDOMINTEGER'XOR
PRint#filen2,Chr$(CHARNUM);'대상 파일에 쓰기
다음I
닫기FILENUM
클로즈파일렌2
ok'는 성공 대화 상자를 호출합니다.
EndSub
호출 형식: ENDECODE 소스 파일 이름, 비밀번호, 대상 파일 이름
위 프로세스는 다중 랜덤 처리 등의 추가 처리를 수행하면 뛰어난 재현성과 기밀성을 바탕으로 모든 EXE, COM, 텍스트 및 기타 파일(암호화 횟수는 홀수, 복호화 횟수는 짝수)을 암호화 및 복호화할 수 있습니다. , 그러면 더 높은 수준으로 이동하므로 여기서는 반복하지 않겠습니다.
그런데 위 과정도 대상 파일을 바이너리 파일로 열어서 쓴다면 순수 서양 텍스트만 암호화하고 복호화할 수 있다. 순수 중국어 텍스트의 경우 더블 바이트를 차지하도록 수정하고 I의 단계 크기는 2. 구현 시 기타(중국어와 서양어가 결합된 텍스트, EXE, COM 및 기타 파일)는 예상한 결과를 얻지 못할 수 있습니다. 그 이유는 127보다 큰 ASCII 문자가 정상적으로 표시될 수 없고 파일을 정상적으로 쓸 수 없기 때문일 수 있습니다. put 문(결과는 단지 공백임)에 관심이 있는 사람들은 시도해 볼 수 있습니다.
->