about me
Google_search
hot
latest
photos
links
Delphi实现的简单加解密
来源:来自网络 作者:不详 日期:2010-05-11 热度:- var:
- key: string; //加解密关键字
- percent1: Double; //加解密转换百分比,与关键字一同构成一个加密解密算法
- //移位解密函数
- function TfrmCryptograph.DeCode(aCryptograph, aKey: string): string;
- var
- i,keylen,codelen:integer;
- begin
- keylen :=Length(akey);
- codelen:=Length(aCryptograph);
- SetLength(Result, Length(aCryptograph));
- for i:=1 to codelen do
- begin
- Result[i]:=Chr(Ord(aCryptograph[i])-Ord(aKey[(i mod KeyLen)+1]));
- end;
- end;
- //移位加密函数
- function TfrmCryptograph.EnCode(aCryptograph, aKey: string): string;
- var
- i,keylen,codelen:integer;
- begin
- keylen:=Length(akey);
- codelen:=Length(aCryptograph);
- SetLength(Result, Length(aCryptograph));
- for i:=1 to codelen do
- begin
- Result[i]:=Chr(Ord(aCryptograph[i])+Ord(aKey[(i mod KeyLen)+1]));
- end;
- end;
- //移位加解密过程
- function TfrmCryptograph.GetKey(aKey: string; aPercent: Double): string;
- var
- i:integer;
- begin
- SetLength(Result,Length(aKey));
- for i:=1 to Length(aKey) do
- begin
- Result[i]:=Chr(Round(Ord(aKey[i])*aPercent));
- end;
- end;
- //在代码中调用加解密过程
- for i := 0 to mmoInput.Lines.Count-1 do
- begin
- strTemp := mmoInput.Lines.Strings[i];
- str := EnCode(strTemp,GetKey(Key,Percent1));
- mmoOutput.Lines.Append(str);
- //进度百分比的计算
- pbEnDecodeProcess.Position := pbEnDecodeProcess.Position + 1;
- per := Trunc(pbEnDecodeProcess.Position / pbEnDecodeProcess.Max * 100);
- pnlProcess.Caption := IntToStr(per) + '%';
- pnlProcess.Repaint;
- end;
Ord()其实更容易被理解成是一个类型转换符而非函数,其可以取得字符的ASCII码的值
原理就是通过Ord()将一个字符转为用ord其对应的ASCII码的值。
Chr()是Ord()的逆运算,负责将一个ASCII码值转换为对应的char.
Chr(Ord(aCryptograph[i])+Ord(aKey[(i mod KeyLen)+1]));
循环取key字符串中各个字符值,转换为ASCII码,乘以一个percent得到新的ASCII值,再循环取要加密的明文中一个字符转换为ASCII码,二者相加得到新的ASCII值,转换为字符就是加密后的密文;
解密的过程就是
密文ASCII- (加上的key对应ASCII值) * percent , 再转换为char,就可以解释出明文。
这种加解密原理比较简单,但是可以定义多个key和percent多层加密。同时,由于key和percent的不同组合使得可以定义出自己的密钥,适用于对安全性要求不是很高的加密场合
这种加解密原理较为简单,但是可以有不同的
↑ 返回顶部
Tags: Delphi 算法
广告位招租,广告代号:gg468
↑ 返回顶部




![还你真实的开幕式!震撼美图[转]【连载】](/up_files/image/Article/2008/08/12/57015031.jpg)



