Cómo escribir un programa de cifrado de archivos usando VB
El método de cifrado de clasificación inversa byte a bit es un método de cifrado de transposición basado en bits. El algoritmo específico implementado con VB es:
(1) Abra el archivo fuente en binario. mode ;
(2) Lee un byte del archivo fuente en el bit I, asumiendo que es la letra "A", y obtiene el valor ASCII de "A" como 65; >(3) Convierta 65 en una cadena binaria de ocho bits como "01000001";
(4) Ordene "01000001" bit a byte en orden inverso para obtener otra cadena binaria de ocho bits "10000010";
(5) Convierta "10000010" a decimal y vuelva a escribirlo en el archivo fuente en la posición I para completar el cifrado de un byte
(6) Repita (2), (3), (4) y (5) hasta que todos los bytes estén cifrados.
Para modularizar el programa, utilizamos el procedimiento de función ByteToBin para convertir datos de bytes en una cadena binaria (cuya esencia es convertir un número decimal en una cadena binaria de ocho dígitos); el procedimiento de función BinToByte para convertir una cadena binaria Convertir a datos de bytes (esencialmente convertir una cadena binaria de ocho bits en un número decimal): Utilice el procedimiento de función Invertir para ordenar la cadena binaria de ocho bits bit a bit en orden inverso.
El programa específico es el siguiente:
Función ByteToBin(m As Byte) As String ' Convierte datos de bytes en una cadena binaria de ocho bits
Dim c$
c$ = ""
Hacer mientras m <> 0
r = m Mod 2
m = m \ 2
c $ = r & c$
Bucle
c$ = Derecha("00000000" & c$, 8)
ByteToBin = c$
Función final
Función inversa (m como cadena) como cadena ' Invierte el orden de la cadena binaria de ocho dígitos
Dim i%, x$
x = ""
Para i = 1 a 8
x = Medio(m, i, 1) & x
Siguiente i p>
Inversa = x
Función final
Función BinToByte(m como cadena) Como byte ' Convierte una cadena binaria de ocho dígitos a decimal
Dim x como cadena * 1, y%, z%
z = 0
Para i = 1 a 8
x = Mid(m, i, 1 )
p>
y = x * 2 ^ (8 - i)
z = z + y
Siguiente i
BinToByte = z
Función final
Subcomando privado1_Click()
Dim x como byte, i%, fname$
fname = InputBox("¡Ingrese el nombre del archivo cifrado requerido! Tenga en cuenta el nombre de la ruta: ")
Si Dir(fname) = "" Entonces
MsgBox "El archivo no existe !"
Salir de Sub
End If
Abrir fname para binario como #1 ' Abre el archivo que se va a cifrar en modo de acceso binario
For i = 1 To LOF(1) ' La función LOF es una función interna para encontrar la longitud del archivo
Get #1, i, x ' Obtiene el i-ésimo byte
x = BinToByte(Reverse(ByteToBin(x))) ' Aquí se llaman tres funciones personalizadas
Put #1, i, x ' Escribe el byte cifrado en la ubicación original del archivo p>
Siguiente i
Cerrar
MsgBox "¡Misión cumplida! "
End Sub
Este ejemplo puede completar el cifrado y descifrado de cualquier archivo. El primer procesamiento del mismo archivo es el cifrado y el segundo procesamiento es el descifrado. Para depurar este programa , puede usar el Bloc de notas para crear un archivo de texto en el directorio raíz de la unidad C (suponiendo que el nombre del archivo sea aaa.txt), con cualquier contenido (puede incluir letras, caracteres chinos, números, retornos de carro, avances de línea, etc. ) y ejecútelo. Después de este procedimiento, ingrese el nombre del archivo (por ejemplo: "C:\aaa.txt") en el cuadro de diálogo de entrada del nombre del archivo y presione Entrar para completar el cifrado del archivo. puede abrirlo en el Bloc de notas. Verifique el efecto de cifrado del archivo. Si desea descifrarlo, ejecute el programa nuevamente e ingrese el mismo nombre de archivo.