我们编程时常常要用到文本加密,例如做一个多用户的程序,通常需要将用户名和口令加密保存,这样程序便具有了更高的安全性。对文本的加密方法有很多种,下面我就向大家介绍比较常用的一种方法。
编程思路:
该种加密方法是逐一取出文本内的字符,按照一定的规律对字符的ASCII码进行运算,运算后再把ASCII码转换为字符,得到的字符串即为加密后的文本。
编程过程:
一、新建一个窗体Form1,在窗体上加入下列控件: Edit1、Edit2、 Edit3、Edit4、Label1、Label2、Label3、Label4、Button1、Button2、Button3。把Label1、Label2、Label3、Label4的“Caption”属性分别改为“加密前”、“加密后”、“解密前”、“解密后”,同时把Button1、Button2、Button3的“Caption”属性分别改为“加密”、“解密”、“退出”。
二、编写加密和解密的函数
1.编写加密函数
加密函数的输入参数和输出参数都是一个字符串。该函数加密的密钥是由变量i、j组成的代数式j^2- i^2+3。其中j代表输入的字符串长度,i代表字符处于字符串内的位数。通过该代数式计算得到变量k,k即是输出字符串中对应于输入字符串第i位字符的ASCII码偏移量。从上面的代数式可以看出:同样一个字符,在字符串中的位置不一样或所在字符串的长度不一样,加密后得到的结果就不一样,因此算法虽简单,但也不易破解。
加密函数的代码如下:
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.编写解密函数
解密运算即是加密的反运算,根据上面的加密函数,我们编写如下解密函数:
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;
三、引用加密和解密函数,进行加密解密
1.在Button1的Onclick事件中加入以下代码,引用加密函数进行加密:
procedure TForm1.Button1Click(Sender: TObject);
var
ss:string;
begin
ss:=Edit1.Text;
Edit2.Text:=encrypt(ss);
end;
2.在Button2的Onclick事件中加入以下代码,引用解密函数进行解密:
procedure TForm1.Button2Click(Sender: TObject);
var ss:string;
begin
ss:=Edit3.Text;
Edit4.Text:=decrypt(ss);
end;
程序编写完成后,我们可以随意输入几个字符,看看程序的运行结果。
综上所述,这是一种常用的文本加密的方法,简便易用,你也可以根据需要灵活地改变密钥。此种加密方法非常适用于小型文本或字符串的加密。