`

Delphi实现的简单加解密

阅读更多
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的不同组合使得可以定义出自己的密钥,适用于对安全性要求不是很高的加密场合

这种加解密原理较为简单,但是可以有不同的
分享到:
评论

相关推荐

    Delphi RSA 加密解密签名验签控件 RSA_Component(1.0.0.0).rar

    但是没有提供Delphi使用的RSA支持,delphi开发者使用起来还是有些麻烦,特别是RSA加解密及签名验证等等,因此我们开发了这个RSA控件,秩序简单的几个API就可以立即实现RSA的加解密及签名验证等功能。

    RSA加解密在Delphi代码中的实现Demo

    本例直接利用Indy的封装类及OpenSSL的DLL,并用Delphi来实现RAS的密钥对生成、加解密等过程,最大程度地简化了这个复杂的过程,让程序员能够把精力放在业务问题的解决上,减少在这方面探索时所耗费的精力和时间。...

    Delphi 开发的 RSA 加密解密签名验签控件演示程序 RSA_Component_Demo(1.0.0.0).rar

    但是没有提供Delphi使用的RSA支持,delphi开发者使用起来还是有些麻烦,特别是RSA加解密及签名验证等等,因此我们开发了这个RSA控件,秩序简单的几个API就可以立即实现RSA的加解密及签名验证等功能。

    RSA加解密在Delphi代码中的实现Demo-Delphi代码类资源

    本例直接利用Indy的封装类及OpenSSL的DLL,并用Delphi来实现RAS的密钥对生成、加解密等过程,最大程度地简化了这个复杂的过程,让程序员能够把精力放在业务问题的解决上,减少在这方面探索时所耗费的精力和时间。...

    计算机网络RSA加密解密+报告 delphi版

    计算机网络课程设计RSA机密解密,使用大数运算库实现,界面友好,操作简单,另外加送课程设计报告,呵呵!!-合肥工业大学计算机07-3刘俊杰。

    c++ builder xe10 AES加解密

    基于c++builder 10.2 调用 两个delphi AES加解密源代码实现c++下的aes加解密,实现特别简单,不光支持字符串加解密,还支持数据流、文件加解密,特别方便。我的博客有详细使用方法说明。...

    uniGUI for C++ builder下如何实现AES加解密

    本文(含源代码)将介绍在...对于加解密算法常用的有tomcrypt、crypto等,都支持很多主流加密算法,但是使用都有些复杂,而且是引用三方lib库,本文将引入两个delphi加密源代码,混合编译实现AES加密,上手特别简单。

    一个与QQ相关的Delphi解密算法实例.rar

    一个与QQ相关的Delphi解密算法实例,作者: ciert (安安) 。OICQ的密码设置里会显示原始密码,使rebel, viewpwd等软件失去效果。 这本来确实是安全性的体现,但是看到其UDP协议明文传送的情况以后,使我对OICQ密码...

    Delphi PE文件加密加壳源码实例.rar

    Delphi PE文件加密加壳源码实例,思路是在执行exe时尾部添加一个Section,修改PE的入口地址,使exe在运行时跳出一个输入密码对话框,从而实现简单加密。同时源码包中还有一个BIG繁体版本供参考。

    完全掌握加密解密实战超级手册.zip02

    36813.2 不同软件的保护实现 36913.2.1 把ASP编写成DLL 37013.2.2 COM组件的Delphi实现 37213.2.3 实现软件注册保护的VCL组件 37713.2.4 利用伪装壳制造虚假信息 37913.2.5 利用加密锁保护程序 38013.3 邮件加密软件...

    完全掌握加密解密实战超级手册.z01

    深入浅出,注重实践,适用于广大计算机软件加密解密技术新手、爱好者,适用于软件开发从业人员和编程爱好者,也非常适合大专院校相关专业学生,以及有志于从事安全或加解密行业的准专业人员快速掌握实用技术前言第1...

    让Delphi的TZipFile压缩类支持压缩密码的扩展类

    有些人可能已经知道,Delphi(至少从... 幸运的是,在这种特殊情况下,我们只需要读取这些加密的zip文件,所以以某种方式实现解密部分就足够了。查看TZipFile的技术文档,我实际上在文档中找到了如何实现这一点的说明。

    Java Base64.java加密解密类文件.rar

    一个Base64.java加密解密类文件,对字符串或文件进行Base64编码的加密或解密,这个类可实现此种功能。Base64应该算是比较常用的加密方法了,不但在Java编程中常见,其它编程语言VC、Delphi、VB等,也都经常用到,这...

    Delphi 7 新概念百例

     该书精选了100多个经典的实例从易到难、由浅入深、由简单到综合地进行讲解,内容涉及面也很广泛,基本上涵盖了用Delphi进行应用程序设计的方方面面,凝聚了作者多年的Delphi编程经验,相信对启发读者的思想并提高...

    Delphi开发范例宝典目录

    实例190 简单的文件加密解密 244 5.7 其他 246 实例191 在DELPHI中控制Word 246 实例192 带日志的程序 247 实例193 获取窗口文本 248 实例194 判断文件是否正在被使用 250 实例195 提取文件中的图标...

    vc++ 应用源码包_1

    详细讲解了Crypt++的加密解密的使用以及其它的加密解密方法(例如base64加解密、哈希加解密以及其它的文件加解密),分静态库和动态库方法。 JSCalls_demo js调用的演示源码 树控件拖动 演示了在树控件中来回拖动...

    基于USB KEY文件加密工具-USB key管理系统

    具有操作简单、稳定性高、兼容性好、速度快等特点。该系统使用Rockey2加密锁,用Delphi进行开发。本系统分为两部分,一部分是文件的加密解密;另一部分是加密锁的管理工具。后一部分由本人完成。 本文主要介绍了USB ...

    SQLite/Access/SQLServer管理工具

    本程序用Delphi7编写,用到第三方unicode组件、ASGSQLite3,主要功能实现在同一个窗口同时管理多种数据库(目前支持SQLite3、Access、SQL2000,若要支持其它数据库,可实现...7、在Delphi7中 中文字符简单加密、解密。

    vc++ 应用源码包_2

    详细讲解了Crypt++的加密解密的使用以及其它的加密解密方法(例如base64加解密、哈希加解密以及其它的文件加解密),分静态库和动态库方法。 JSCalls_demo js调用的演示源码 树控件拖动 演示了在树控件中来回拖动...

    vc++ 应用源码包_6

    详细讲解了Crypt++的加密解密的使用以及其它的加密解密方法(例如base64加解密、哈希加解密以及其它的文件加解密),分静态库和动态库方法。 JSCalls_demo js调用的演示源码 树控件拖动 演示了在树控件中来回拖动...

Global site tag (gtag.js) - Google Analytics