hola, os presento mi aplicacion como un proyecto que quedo atascado, y no encuentro la tecla, para seguir.
mi apliacion es un encriptador tipo vigenere
http://es.wikipedia.org/wiki/Cifrado_de_Vigen%C3%A8re (http://es.wikipedia.org/wiki/Cifrado_de_Vigen%C3%A8re)
( con la apliacion del caracter "ñ", ya que al ser frances este tipo, no introdujo en su tabla la "ñ" ), bueno no esta terminada.
bueno mi encriptador cifra de cadenas de 10 y 10, quisiera que pudiera cifrar todas las posiblidades
Para aquellos que no entendieron nada os explico mas detallada:
vigenere creo una tabla
(http://infow.files.wordpress.com/2009/01/vigeneresquare2.jpg)
para cifrar un texto necesitaras 2 palabras
1º la que queremos cifrar
2º la clave
y mediante un "juego" matematicos o visuales sale la letra cifrada
por ejemplo:
mensaje: P A R I S V A U T B I E N U N E M E S S E
clave: L O U P L O U P L O U P L O U P L O U P L
criptograma: A O L X D J U J E P C T Y I H T X S M H P
Clave: loup
la P y la L da la A
la palabra clave como veis se repite sucesivamente, Ese es mi verdadero problema, mi palabra clave no se repite , y no sabria como hacerlo. y una vez solucionado quisiera poder codificar sin limitaciones de caracteres
PD: y mas importante, mi source es algo muy extenso, porque aun no lo termine, pero aun asi admito sugerencia para reducirlo (cosa que ahora no me preocupa)
PD2: si comparas resultados de la tabla vigenere frances con el español, no sera el mismo resultado
para teminar no seais muy estrictos conmigo que aun no esta terminado ;)
source: http://www.megaupload.com/?d=0K5YK436 (http://www.megaupload.com/?d=0K5YK436)
muxas gracias
Gracias por el aporte, lo descargare
bueno,no era un aporte era por si alguien podia hecharme un cable... :silbar:
Si el mensaje es PARIS VAUT BIEN UNE MESSE y la clave LOUP, haz un For ... Next para el mensaje y dentro otro For ... Next para la clave haciend uso de Mod. Si no entiendes lo que te quiero decir te hago un code :xD
for... next, pero como hacer que atribulla la primera letra con la primera, la segunda con la segunda, asi asta acabar con la palabra clave , y repetirla indefinidas veces, paa asi no depender ni de la cantidad de caracteres , ni la extension de la palabra clave...
Muxas gracias ;)
Hola, proba esto haber si te sirve..
Option Explicit
Private Sub Command1_Click()
MsgBox descifrar("P A R I S V A U T B I E N U N E M E S S E ", "L O U P L O U P L O U P L O U P L O U P L ")
End Sub
Private Function descifrar(ByVal pCadena As String, ByVal pPassword As String) As String
Dim vContador As Integer, vIndice As Integer, vFila As Integer, vNumero As Integer
pCadena = LCase(pCadena)
pPassword = LCase(pPassword)
For vContador = 1 To Len(pCadena)
vIndice = vIndice + 1
If vIndice > Len(pPassword) Then vIndice = vIndice - Len(pPassword)
vFila = Asc(Mid(pPassword, vIndice, 1)) - 97
If vFila = 0 Then vFila = 26
vNumero = Asc(Mid(pCadena, vContador, 1))
If vNumero >= 97 And vNumero <= 122 Then vNumero = vNumero + vFila
If vNumero > 122 Then vNumero = vNumero - 26
descifrar = descifrar & Chr(vNumero)
Next vContador
End Function
saludos.
Function Algo(ByVal Texto As String, ByVal Clave As String)
Dim i As Long, Tmp As String
For i = 1 To Len(Texto)
If i Mod Len(Clave) = 0 Then
Tmp = Mid$(Clave, Len(Clave), 1)
Else
Tmp = Mid$(Clave, i Mod Len(Clave), 1)
End If
Debug.Print "Texto: " & Mid$(Texto, i, 1) & " " & "Clave: " & Tmp
Next i
End Function
El único inconveniente es que los espacios tambien los cuenta, asi que tendras que usar la funcion palabra por palabra... se puede solucionar fácilmente con un Split, pero eso te lo dejo a ti :P
Muchas gracias, me habeis sido de muxa ayuda, seguire con mi proyecto ;-)