La función RND() de VISUALBASIC tiene una característica importante: cuando el parámetro de RND() (aquí podemos llamarlo semilla) es un valor negativo, la misma semilla (valor negativo) genera la misma secuencia de números aleatorios. Al mismo tiempo, VISUALBASIC también tiene poderosas funciones de tecnología binaria, de modo que podemos lograr el cifrado del contenido del archivo de acuerdo con las siguientes ideas:
X=RND(-TECLA)
'KEY es un número positivo
VAULE=INT(256*RND)'Generar un número aleatorio (use esto como contraseña)
OpenFILENAME$ForBinaryAs#FILENUM'Abrir archivo
Obtener#FILENUM,I,A'Obtener contenido del archivo
B=AXORVAULE'obtener archivo cifrado
combinar
C=BXORVAULE' obtiene el archivo descifrado (B es el contenido del archivo cifrado)
Nota: A aquí no se trata de todo el contenido del archivo, puede ser una parte muy pequeña, unos pocos bytes o incluso un solo byte. Si es un solo byte, cada byte del archivo se realizará mediante operación XOR con un número diferente, lo que lo hará. Difícil de descifrar. Proceso específico:
Los parámetros SubENDECODE(FILENAME$,MA,FILE2$)' son: archivo fuente, contraseña, archivo de destino
DimFILENUMAsInteger,XAsSingle,IAsSingle
DimCHARNUMAsInteger,RANDOMINTEGERAsInteger
DimSINGLECHARAsString*1,filen2AsInteger' ocupa un solo byte
SiMA<0Ellos
MA=MA*(-1)
Fin si
El parámetro X=Rnd(-MA)'es negativo
FILENUM=Archivo gratuito
OpenFILENAME$ForBinaryAs#FILENUM'archivo de código abierto en modo binario
filen2=Archivo gratuito
OpenFILE2$ForOutputAs#filen2'Abrir el archivo de destino en un archivo secuencial
ForI=1ToLOF(FILENUM)'LOF() longitud del archivo en bytes
Obtener#FILENUM,I,SINGLECHAR'Obtener contenido de un solo byte
CHARNUM=Asc(SINGLECHAR)
RANDOMINTEGER=Int(256*Rnd)'Obtener el alfabeto
CHARNUM=CHARNUMXoRANDOMINTEGER'XOR
PRint#filen2,Chr$(CHARNUM);'Escribir en el archivo de destino
siguienteyo
CerrarFILENUM
Cerrarfilen2
ok' llama al cuadro de diálogo de éxito
FinSub
Formato de llamada: nombre del archivo de origen ENDECODE, contraseña, nombre del archivo de destino
El proceso anterior puede cifrar y descifrar cualquier archivo EXE, COM, texto y otros archivos (número impar de veces de cifrado, número par de veces de descifrado), con excelente reproducibilidad y excelente confidencialidad si el proceso anterior se procesa más, como el procesamiento aleatorio múltiple. Luego pasará a un nivel superior, que no repetiré aquí.
Por cierto, si el proceso anterior también abre y escribe el archivo de destino como un archivo binario, entonces solo se puede cifrar y descifrar texto occidental puro. Para el texto chino puro, se modifica para que tome bytes dobles y el tamaño de paso de I es. 2. La implementación, otros (texto combinado chino y occidental, EXE, COM y otros archivos) no obtendrá los resultados esperados. La razón puede ser que los caracteres con ASCII mayores a 127 no se pueden mostrar normalmente y el archivo no se puede escribir normalmente. la declaración put (solo el espacio), aquellos que estén interesados pueden intentarlo.
->