Expermicid Posted June 4, 2012 Share Posted June 4, 2012 (edited) [lenguaje=delphi]Function Autoclave(A : String; B : String; C : Integer) : String; {'================================================================='} {' AX: Segundo cifrado de Vigenère '} {' Uso: Autoclave('Texto', 'Clave', 1/2) '} {' Cifrar (1) | Descifrar (2) '} {'================================================================='} Var D : LongInt; Var E : String; Var F : Integer; Var G : Integer; Var H : String; Var I : String; Var K : Integer; Var L : Integer; Const T = 'ABCDEFGHIJKLMNÑOPQRSTUVWXYZ'; Begin If (Length(A) = 0) Or (Length(B) = 0) Then Exit; If Not (C = 1) Then If Not (C = 2) Then Exit; L := 1; A := StringReplace(UpperCase(Trim(A)), ' ', '', [rfReplaceAll]); B := StringReplace(UpperCase(Trim(B)), ' ', '', [rfReplaceAll]); If Length(B) < Length(A) Then For D := 1 To Length(A) - Length(B) Do E := E + Copy(A, D, 1); If (C = 2) Then Begin For D := 1 To Length(A) Do Begin F := Pos(Copy(A, D, 1), T) - 1; G := Pos(Copy(B, L, 1), T) - 1; If (F - G) < 0 Then K := 27 + (F - G) + 1 Else K := (F - G) Mod 27 + 1; I := I + Copy(T, Pos(Copy(T, K, 1), T), 1); H := H + Copy(T, Pos(Copy(T, K, 1), T), 1); If Length(B) = Length(I) Then Begin B := I; I := ''; L := 0; end; L := L + 1; end; end Else Begin For D := 1 To Length(A) Do Begin F := Pos(Copy(A, D, 1), T) - 1; G := Pos(Copy(B + E, D, 1), T) - 1; H := H + Copy(T, Pos(Copy(T, (F + G) Mod 27 + 1, 1), T), 1); end; end; Autoclave := H; End;[/lenguaje] Autor: AX Fuente: PitbullSecurity Saludos Edited February 16, 2014 by Expermicid Link to comment Share on other sites More sharing options...
Recommended Posts