注册账号 登录
用友之家-用友软件论坛 返回首页

wozengcong的个人空间 https://www.oyonyou.com/?242966 [收藏] [复制] [分享] [RSS]

日志

用Delphi实现文本加密

已有 689 次阅读2013-4-23 22:02 |个人分类:Delphi7| 加密, 用户名, 安全性

我们编程时常常要用到文本加密,例如做一个多用户的程序,通常需要将用户名和口令加密保存,这样程序便具有了更高的安全性。对文本的加密方法有很多种,下面我就向大家介绍比较常用的一种方法。

    编程思路:

    该种加密方法是逐一取出文本内的字符,按照一定的规律对字符的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;

    程序编写完成后,我们可以随意输入几个字符,看看程序的运行结果。

    综上所述,这是一种常用的文本加密的方法,简便易用,你也可以根据需要灵活地改变密钥。此种加密方法非常适用于小型文本或字符串的加密。


路过

雷人

握手

鲜花

鸡蛋

评论 (0 个评论)

facelist

您需要登录后才可以评论 登录 | 注册账号

QQ|站长微信|Archiver|手机版|小黑屋|用友之家 ( 蜀ICP备07505338号|51072502110008 )

GMT+8, 2024-5-15 20:26 , Processed in 0.021183 second(s), 10 queries , Gzip On, Redis On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

返回顶部