用Delphi實(shí)現文本加密
我們編程時(shí)常常要用到文本加密,例如做一個(gè)多用戶(hù)的程序,通常需要將用戶(hù)名和口令加密保存,這樣程序便具有了更高的安全性。對文本的加密方法有很多種,下面我就向大家介紹比較常用的一種方法。
編程思路:
該種加密方法是逐一取出文本內的字符,按照一定的規律對字符的ASCII碼進(jìn)行運算,運算后再把ASCII碼轉換為字符,得到的字符串即為加密后的文本。
編程過(guò)程:
一、新建一個(gè)窗體Form1,在窗體上加入下列控件: Edit1、Edit2、 Edit3、Edit4、Label1、Label2、Label3、Label4、Button1、Button2、Button3。把Label1、Label2、Label3、Label4的“Caption”屬性分別改為“加密前”、“加密后”、“解密前”、“解密后”,同時(shí)把Button1、Button2、Button3的“Caption”屬性分別改為“加密”、“解密”、“退出”。
二、編寫(xiě)加密和解密的函數
1.編寫(xiě)加密函數
加密函數的輸入參數和輸出參數都是一個(gè)字符串。該函數加密的密鑰是由變量i、j組成的代數式j(luò )^2- i^2+3。其中j代表輸入的字符串長(cháng)度,i代表字符處于字符串內的位數。通過(guò)該代數式計算得到變量k,k即是輸出字符串中對應于輸入字符串第i位字符的ASCII碼偏移量。從上面的代數式可以看出:同樣一個(gè)字符,在字符串中的位置不一樣或所在字符串的長(cháng)度不一樣,加密后得到的結果就不一樣,因此算法雖簡(jiǎn)單,但也不易破解。
加密函數的代碼如下:
function TForm1.encrypt(s:string):string;
var
i,j,k:integer;
s1:string;
begin
s1:=‘‘;
j:=length(s);
for i:=1 to j do
begin
k:=j*j-i*i+3;
s1:=s1+chr(ord(s)+k);
end;
result:=s1
end;
2.編寫(xiě)解密函數
解密運算即是加密的反運算,根據上面的加密函數,我們編寫(xiě)如下解密函數:
function TForm1.decrypt(s:string):string;
var
i,j,k:integer;
s1:string;
begin
s1:=‘‘;
j:=length(s);
for i:=1 to j do
begin
k:=j*j-i*i+3;
s1:=s1+chr(ord(s)-k);
end;
result:=s1
end;
三、引用加密和解密函數,進(jìn)行加密解密
1.在Button1的Onclick事件中加入以下代碼,引用加密函數進(jìn)行加密:
procedure TForm1.Button1Click(Sender: TObject);
var
ss:string;
begin
ss:=Edit1.Text;
Edit2.Text:=encrypt(ss);
end;
2.在Button2的Onclick事件中加入以下代碼,引用解密函數進(jìn)行解密:
procedure TForm1.Button2Click(Sender: TObject);
var ss:string;
begin
ss:=Edit3.Text;
Edit4.Text:=decrypt(ss);
end;
程序編寫(xiě)完成后,我們可以隨意輸入幾個(gè)字符,看看程序的運行結果。
綜上所述,這是一種常用的文本加密的方法,簡(jiǎn)便易用,你也可以根據需要靈活地改變密鑰。此種加密方法非常適用于小型文本或字符串的加密。
注:以上程序在Windows 2000、Delphi6.0下調試通過(guò)。"

