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í.

Imagen


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!
UDTools.net
GitHub: https://github.com/MetalUDT
Muy buena!! :D

Este tipo de encriptaciones son muy simples, pero muy eficaces también :D

Saludos!!
github.com/Slek-Z
Responder

Volver a “Nuestros Programas”