我用的加密解密
function EncryptString(Source, Key: string): string;
//对字符串加密(Source:源 Key:密匙)
var
KeyLen: integer;
KeyPos: integer;
Offset: integer;
Dest: string;
SrcPos: integer;
SrcAsc: integer;
Range: integer;
begin
KeyLen := Length(Key);
if KeyLen = 0 then
Key := 'delphi';
KeyPos := 0;
Range := 256;
randomize;
Offset := random(Range);
Dest := format('%1.2x', [Offset]);
for SrcPos := 1 to Length(Source) do
begin
SrcAsc := (Ord(Source[SrcPos]) + Offset) mod 255;
if KeyPos < KeyLen then
KeyPos := KeyPos + 1
else
KeyPos := 1;
SrcAsc := SrcAsc xor Ord(Key[KeyPos]);
Dest := Dest + format('%1.2x', [SrcAsc]);
Offset := SrcAsc;
end;
result := Dest;
end;
function UnEncryptString(Source, Key: string): string;
//对字符串解密(Src:源 Key:密匙)
var
KeyLen: integer;
KeyPos: integer;
Offset: integer;
Dest: string;
SrcPos: integer;
SrcAsc: integer;
TmpSrcAsc: integer;
begin
KeyLen := Length(Key);
if KeyLen = 0 then
Key := 'delphi';
KeyPos := 0;
Offset := strtoint('$' + (Source, 1, 2));
SrcPos := 3;
repeat
SrcAsc := strtoint('$' + (Source, SrcPos, 2));
if KeyPos < KeyLen then
KeyPos := KeyPos + 1
else
KeyPos := 1;
TmpSrcAsc := SrcAsc xor Ord(Key[KeyPos]);
if TmpSrcAsc <= Offset then
TmpSrcAsc := 255 + TmpSrcAsc - Offset
else
TmpSrcAsc := TmpSrcAsc - Offset;
Dest := Dest + chr(TmpSrcAsc);
Offset := SrcAsc;
SrcPos := SrcPos + 2;
until SrcPos >= Length(Source);
result := Dest;
end;
⑵ Delphi常用的字符串(密码)加密方式都有哪几种哪种方法可以将数字字母混合加密成纯数字
多了,des、aes、base64、rsa、md5、sha等等,等等,数不胜数。每一种算法,都可以将数字字母加密成纯数字。因为加密的结果可以再加密。比如aes加密后的密文,是16进制的东西,我们可以把这个结果转换成10进制,不就成了纯数字了吗?所以,所有算法,都可以实现你所说的。
⑶ delphi分组算法
MD5即Message-Digest Algorithm 5(信息-摘要算法 5),是在计算机语言当中普遍使用的一种杂凑程序,由于它类似于函数,我们称为算法。此杂凑函数是由MD2、MD3和MD4完善而来。其基本原理就是将一个字符串(包括汉字等)通过一定的函数转换为一种新的字符串,并且这种杂凑运算是以不可逆转的形式存在。在1992年8月Ronald L. Rivest在向IEFT提交了一份重要文件,描述了这种算法的原理,由于这种算法的公开性和安全性,在90年代被广泛使用在各种程序语言中,用以确保资料传递无误等。
由于MD5算法的可靠性,被广泛用于杂凑资料正确性验证。经过许多程序员的努力,MD5算法已经被各种语言实现,.asp,.php,.java ,c,c#,vb,vc++,delphi等语言。
MD5算法以16个32位子分组即512位分组来提供数据杂凑,经过程序流程,生成四个32位数据,最后联合起来成为一个128位散列。基本方式为,求余、取余、调整长度、与链接变量进行循环运算。得出结果。
MD5由MD4、MD3、MD2改进而来,主要是增加了算法难度和不可逆性。
虽然目前对MD5算法本身还没有已知或已公布的攻击方法,但是由于它是一种比较老的算法,使用MD5计算出的的散列值长度只有128位,随着现代计算机运算能力的提高,通过一些方式,寻找一个可能的“碰撞”(冲突)已经变得可能。因此,MD5在一些对安全要求比较高的场合已经逐步被其它的算法所替代。
由于MD5使用的广泛性和可靠性,诸多程序员对其进行了大量的研究,并取得了一些成果,但是并未改变MD5算法的可逆性,没有完整的反MD5函数出现。