V2 - Generador de cifrados de sustitución by Metal [Delphi]
Publicado: 28 May 2013, 03:58
Hola..
En esta versión se generarán 2 funciones, una para encriptar y otra para desencriptar.
Aunque la otra versión es igual de efectiva y está más unificado, es posible que de esta forma la función de desencriptar sea más rápida (inapreciable a decir verdad..) al desencriptar de forma directa al igual que se encripta, basándose en una regeneración de la tabla usada para encriptar.
Gracias Slek por la idea de hacerla así.

Ejemplo de función Cifrar generada:
Descarga: [Enlace externo eliminado para invitados]
Pass: udtools.net
Saludos!
En esta versión se generarán 2 funciones, una para encriptar y otra para desencriptar.
Aunque la otra versión es igual de efectiva y está más unificado, es posible que de esta forma la función de desencriptar sea más rápida (inapreciable a decir verdad..) al desencriptar de forma directa al igual que se encripta, basándose en una regeneración de la tabla usada para encriptar.
Gracias Slek por la idea de hacerla así.

Ejemplo de función Cifrar generada:
Function Cifrar(Texto: string): string;
Const Letr: array [0..255] of byte = (
$FE,$1F,$37,$4F,$67,$77,$8F,$A7,$BF,$D7,$E7,$00,$10,$28,$38,$50,
$68,$78,$90,$A0,$B8,$C8,$D8,$F1,$01,$11,$21,$31,$41,$51,$61,$71,
$89,$91,$A1,$B1,$B9,$C9,$D9,$E2,$F2,$02,$0A,$1A,$2A,$3A,$4A,$52,
$62,$72,$7A,$8A,$9A,$A2,$B2,$C2,$D3,$DB,$EB,$F3,$03,$13,$2B,$33,
$43,$53,$5B,$6B,$73,$83,$93,$9B,$AB,$B3,$C4,$D4,$DC,$EC,$FC,$04,
$14,$2C,$34,$44,$54,$5C,$6C,$74,$84,$8C,$9C,$AC,$B5,$C5,$D5,$DD,
$ED,$FD,$05,$15,$25,$2D,$3D,$45,$55,$5D,$6D,$7D,$8D,$9D,$A6,$B6,
$BE,$CE,$DE,$E6,$F6,$06,$0E,$1E,$2E,$36,$46,$4E,$5E,$66,$76,$86,
$97,$9F,$AF,$B7,$C7,$DF,$EF,$F7,$07,$0F,$27,$2F,$3F,$47,$57,$5F,
$6F,$7F,$98,$A8,$B0,$C0,$D0,$E0,$E8,$F8,$08,$18,$20,$30,$40,$48,
$58,$70,$79,$99,$A9,$C1,$D1,$E1,$E9,$F9,$09,$19,$29,$39,$49,$59,
$6A,$82,$92,$AA,$BA,$CA,$D2,$EA,$FA,$12,$22,$32,$42,$63,$7B,$8B,
$A3,$BB,$C3,$E3,$FB,$0B,$1B,$23,$3B,$4C,$64,$7C,$94,$A4,$B4,$BC,
$CC,$E4,$F4,$0C,$1C,$24,$4D,$65,$75,$85,$95,$A5,$AD,$BD,$CD,$E5,
$F5,$0D,$1D,$3E,$56,$6E,$7E,$8E,$96,$AE,$C6,$D6,$EE,$16,$87,$CF,
$FF,$60,$80,$88,$F0,$69,$81,$5A,$DA,$4B,$CB,$3C,$35,$26,$9E,$17);
var
i: integer;
begin
SetLength(Result, Length(Texto));
for i:= 1 to Length(Texto) do
Texto[i]:= chr(Letr[ord(Texto[i])]);
Result:= Texto;
end;
Ejemplo de función Descifrar generada:Function Descifrar(Texto: string): string;
Const Letr: array [0..255] of byte = (
$0B,$18,$29,$3C,$4F,$62,$75,$88,$9A,$AA,$2A,$C5,$D3,$E1,$76,$89,
$0C,$19,$B9,$3D,$50,$63,$ED,$FF,$9B,$AB,$2B,$C6,$D4,$E2,$77,$01,
$9C,$1A,$BA,$C7,$D5,$64,$FD,$8A,$0D,$AC,$2C,$3E,$51,$65,$78,$8B,
$9D,$1B,$BB,$3F,$52,$FC,$79,$02,$0E,$AD,$2D,$C8,$FB,$66,$E3,$8C,
$9E,$1C,$BC,$40,$53,$67,$7A,$8D,$9F,$AE,$2E,$F9,$C9,$D6,$7B,$03,
$0F,$1D,$2F,$41,$54,$68,$E4,$8E,$A0,$AF,$F7,$42,$55,$69,$7C,$8F,
$F1,$1E,$30,$BD,$CA,$D7,$7D,$04,$10,$F5,$B0,$43,$56,$6A,$E5,$90,
$A1,$1F,$31,$44,$57,$D8,$7E,$05,$11,$A2,$32,$BE,$CB,$6B,$E6,$91,
$F2,$F6,$B1,$45,$58,$D9,$7F,$EE,$F3,$20,$33,$BF,$59,$6C,$E7,$06,
$12,$21,$B2,$46,$CC,$DA,$E8,$80,$92,$A3,$34,$47,$5A,$6D,$FE,$81,
$13,$22,$35,$C0,$CD,$DB,$6E,$07,$93,$A4,$B3,$48,$5B,$DC,$E9,$82,
$94,$23,$36,$49,$CE,$5C,$6F,$83,$14,$24,$B4,$C1,$CF,$DD,$70,$08,
$95,$A5,$37,$C2,$4A,$5D,$EA,$84,$15,$25,$B5,$FA,$D0,$DE,$71,$EF,
$96,$A6,$B6,$38,$4B,$5E,$EB,$09,$16,$26,$F8,$39,$4C,$5F,$72,$85,
$97,$A7,$27,$C3,$D1,$DF,$73,$0A,$98,$A8,$B7,$3A,$4D,$60,$EC,$86,
$F4,$17,$28,$3B,$D2,$E0,$74,$87,$99,$A9,$B8,$C4,$4E,$61,$00,$F0);
var
i: integer;
begin
SetLength(Result, Length(Texto));
for i:= 1 to Length(Texto) do
Texto[i]:= chr(Letr[ord(Texto[i])]);
Result:= Texto;
end;
Ejemplo de uso de ambas funciones:var
txt: string;
begin
txt:= 'Hola puta';
txt:= Cifrar(txt); //ciframos
showmessage(txt) //mostramos texto cifrado
txt:= Descifrar(txt); //desciframos
showmessage(txt); //mostramos texto descifrado
end;
Al generar las funciones copiamos las 2 ya que sus tablas sólo son compatibles entre sí, NO copiéis la de Cifrar y luego pulsáis en generar y copiáis la de Descifrar (o viceversa) porque joderéis las funciones, creo que tiene sentido que haya que seguir el órden lógico..Descarga: [Enlace externo eliminado para invitados]
Pass: udtools.net
Saludos!