Jue Abr 21, 2011 5:16 pm
- Código:
Public Function Vigenere(A As String, B As String, C As Integer) As String
On Error Resume Next
'==============================================================================='
' AX: Vigenère '
' Uso: Call Vigenere(Texto, Clave, Cifrar/Descifrar) '
' Cifrar: 1 '
' Descifrar: 2 '
'==============================================================================='
Dim S As String
Dim T As String
Dim U As String
Dim N As String
Dim F As Integer
Dim D As Integer
Dim E As Integer
Dim x As Long
If Not 1 >= C <= 2 Then Exit Function
S = Trim(Replace(A, " ", ""))
T = Trim(Replace(B, " ", ""))
If Len(B) < Len(S) Then
For x = Len(T) To Len(S) Step Len(T)
U = U & T
Next x
End If
If C = 1 Then
For x = 1 To Len(S)
If Asc(Mid(S, x, 1)) >= 65 And Asc(Mid(S, x, 1)) <= 90 Then D = Asc(Mid(S, x, 1)) Mod 65
If Asc(Mid(S, x, 1)) >= 97 And Asc(Mid(S, x, 1)) <= 122 Then D = Asc(Mid(S, x, 1)) Mod 97
If Asc(Mid(U, x, 1)) >= 65 And Asc(Mid(U, x, 1)) <= 90 Then E = Asc(Mid(U, x, 1)) Mod 65
If Asc(Mid(U, x, 1)) >= 97 And Asc(Mid(U, x, 1)) <= 122 Then E = Asc(Mid(U, x, 1)) Mod 97
F = (D + E) Mod 26
N = N & Chr((F + 65))
Next x
End If
If C = 2 Then
For x = 1 To Len(S)
If Asc(Mid(S, x, 1)) >= 65 And Asc(Mid(S, x, 1)) <= 90 Then D = Asc(Mid(S, x, 1)) Mod 65
If Asc(Mid(S, x, 1)) >= 97 And Asc(Mid(S, x, 1)) <= 122 Then D = Asc(Mid(S, x, 1)) Mod 97
If Asc(Mid(U, x, 1)) >= 65 And Asc(Mid(U, x, 1)) <= 90 Then E = Asc(Mid(U, x, 1)) Mod 65
If Asc(Mid(U, x, 1)) >= 97 And Asc(Mid(U, x, 1)) <= 122 Then E = Asc(Mid(U, x, 1)) Mod 97
F = (D - E) Mod 26
If F < 0 Then F = (26 + F) Mod 26
N = N & Chr((F + 65))
Next x
End If
Vigenere = N
End Function
Este es el famoso cifrado de Vigenère. Desde hace tiempo quise convertir este cifrado a VB6, pero hasta hoy no lo había concretado.
Para cifrar el texto:
- Código:
Call Vigenere(Texto, Clave, 1)
- Código:
Call Vigenere(Texto, Clave, 2)
Utiliza el siguiente alfabeto:
A -- 00
B -- 01
C -- 02
D -- 03
E -- 04
F -- 05
G -- 06
H -- 07
I -- 08
J -- 09
K -- 10
L -- 11
M -- 12
N -- 13
O -- 14
P -- 15
Q -- 16
R -- 17
S -- 18
T -- 19
U -- 20
V -- 21
W -- 22
X -- 23
Y -- 24
Z -- 25
Con un total de 26 carácteres y no utiliza la Ññ....Recomiendo este nuevo cifrado para cifrar las contraseñas de las herramientas que publican. Y lo próximo que haré será crear una versión del cifrado de Beaufort ya que es muy similar a este.
Información: [Tienes que estar registrado y conectado para ver este vínculo]
Saludos.