首先有两个自定的转换函数:  function myStrToHex(s:string):string; //字串转16进制
var    TmpStr:string;    i:integer;
begin    TmpStr:='';    for i:=1 to Length(s)do    TmpStr:=TmpStr+IntToHex(ord(s[i]),2);    Result:=TmpStr;
end;    function myHexToStr(S:string):string; //16进制转字串
var    HexS,TmpStr:string;    i:Integer;    a:Byte;
begin    HexS:=s;    if Length(HexS) mod 2=1 then    HexS:=HexS+'0';    TmpStr:='';    for i:=1 to(Length(HexS)div 2)do    begin    a:=StrToInt('$'+HexS[2*i-1]+HexS[2*i]);    TmpStr:=TmpStr+Chr(a);    end;    Result:=TmpStr;
end;
function myStrToHex(s:string):string; //字串转16进制
var  TmpStr:string;  i:integer;
begin  TmpStr:='';  for i:=1 to Length(s)do  TmpStr:=TmpStr+IntToHex(ord(s[i]),2);  Result:=TmpStr;
end;  function myHexToStr(S:string):string; //16进制转字串
var  HexS,TmpStr:string;  i:Integer;  a:Byte;
begin  HexS:=s;  if Length(HexS) mod 2=1 then  HexS:=HexS+'0';  TmpStr:='';  for i:=1 to(Length(HexS)div 2)do  begin  a:=StrToInt('$'+HexS[2*i-1]+HexS[2*i]);  TmpStr:=TmpStr+Chr(a);  end;  Result:=TmpStr;
end;   然后就是加密、解密函数了:  {两个函数的参数相同,s为要加密、解密的字串;sKey为密匙}
function EncryptStr(const s:string;sKey:string):string; //加密
var    i,j:Integer;    HexS,HexsKey,MidS,TmpStr:string;    a,b,c:byte;
begin    HexS:=myStrToHex(s);    HexsKey:=myStrToHex(sKey);    MidS:=HexS;    for i:=1 to(Length(HexsKey)div 2)do    begin    if i<>1 then MidS:=TmpStr;    TmpStr:=''; //下面要用到TmpStr,所以要清空     for j:=1 to (Length(MidS)div 2)do    begin    a:=StrToInt('$'+midS[2*j-1]+midS[2*j]);    b:=StrToInt('$'+HexsKey[2*i-1]+HexsKey[2*i]);    c:=a xor b;    tmpstr:=TmpStr+myStrToHex(Chr(c));    end;    end;    Result:=TmpStr;
end;    function DecryptStr(const s:string;sKey:string):string; //解密
var    i,j:Integer;    HexS,HexsKey,MidS,TmpStr:string;    a,b,c:Byte;
begin    HexS:=s;    if Length(HexS)mod 2=1 then //检查是否为字符串     begin    ShowMessage('密文错误!');    Exit;    end;    HexsKey:=myStrToHex(sKey);    TmpStr:=HexS;    MidS:=HexS;    for i:=(length(HexsKey) div 2) downto 1 do    begin    if i<>(length(HexsKey) div 2)then    MidS:=TmpStr;    TmpStr:=''; //下面要用到TmpStr,所以要清空     for j:=1 to(length(MidS) div 2)do    begin    a:=StrToInt('$'+MidS[2*j-1]+MidS[2*j]);    b:=StrToInt('$'+HexsKey[2*i-1]+HexsKey[2*i]);    c:=a xor b;    TmpStr := TmpStr+myStrToHex(Chr(c));    end;    end;    Result:=myHexToStr(TmpStr);
end;
{两个函数的参数相同,s为要加密、解密的字串;sKey为密匙}
function EncryptStr(const s:string;sKey:string):string; //加密
var  i,j:Integer;  HexS,HexsKey,MidS,TmpStr:string;  a,b,c:byte;
begin  HexS:=myStrToHex(s);  HexsKey:=myStrToHex(sKey);  MidS:=HexS;  for i:=1 to(Length(HexsKey)div 2)do  begin  if i<>1 then MidS:=TmpStr;  TmpStr:=''; //下面要用到TmpStr,所以要清空  for j:=1 to (Length(MidS)div 2)do  begin  a:=StrToInt('$'+midS[2*j-1]+midS[2*j]);  b:=StrToInt('$'+HexsKey[2*i-1]+HexsKey[2*i]);  c:=a xor b;  tmpstr:=TmpStr+myStrToHex(Chr(c));  end;  end;  Result:=TmpStr;
end;  function DecryptStr(const s:string;sKey:string):string; //解密
var  i,j:Integer;  HexS,HexsKey,MidS,TmpStr:string;  a,b,c:Byte;
begin  HexS:=s;  if Length(HexS)mod 2=1 then //检查是否为字符串  begin  ShowMessage('密文错误!');  Exit;  end;  HexsKey:=myStrToHex(sKey);  TmpStr:=HexS;  MidS:=HexS;  for i:=(length(HexsKey) div 2) downto 1 do  begin  if i<>(length(HexsKey) div 2)then  MidS:=TmpStr;  TmpStr:=''; //下面要用到TmpStr,所以要清空  for j:=1 to(length(MidS) div 2)do  begin  a:=StrToInt('$'+MidS[2*j-1]+MidS[2*j]);  b:=StrToInt('$'+HexsKey[2*i-1]+HexsKey[2*i]);  c:=a xor b;  TmpStr := TmpStr+myStrToHex(Chr(c));  end;  end;  Result:=myHexToStr(TmpStr);
end;   现在已经可以使用了,调用EncryptStr和DecryptStr分别加密、解密  例:  [delphi] view plaincopyprint?Edit1.Text:=EncryptStr('Hello','delphi');    Edit1.Text:=DecryptStr(Edit1.Text,'delphi');
Edit1.Text:=EncryptStr('Hello','delphi');  Edit1.Text:=DecryptStr(Edit1.Text,'delphi');   

  

转载于:https://www.cnblogs.com/qingsong/p/4033027.html

DELPHI加密字串(异或运算加密)相关推荐

  1. Java实现 LeetCode 535 TinyURL 的加密与解密(位运算加密)

    535. TinyURL 的加密与解密 TinyURL是一种URL简化服务, 比如:当你输入一个URL https://leetcode.com/problems/design-tinyurl 时,它 ...

  2. 04-String——课后作业1:字串加密

    题目:请编写一个程序,加密或解密用户输入的英文字串要求设计思想.程序流程图.源代码.结果截图. 程序设计思想:首先由用户选择是加密还是解密,利用String类中的charAt函数依次取出字串中的字符, ...

  3. jet mysql连接字符串,关于jet db的连接字串,以及加密后的字串-数据库专栏,SQL Server...

    关于jet db的连接字串,以及加密后的字串 问题: 关于jet db的连接字串,以及加密后的字串 ado连接mdb文件的字串如何写? 加密以后如何写? 回答: access数据库加密分3种 以下以a ...

  4. C 使用异或(xor)加密/解密文件

    C 使用异或(XOR)加密/解密文件 之前写过一篇<php 使用异或(XOR)加密/解密文件>,但php执行的速度很慢,因此这次使用C重写,速度有很大的提高. xor_encrypt.c ...

  5. 透过 Delphi 使用二进位金钥做 AES 加密.

    从 1994 年开始,笔者就开始接触加密与网路安全的世界,从鲁立忠老师的指导当中获益良多,后来在台湾的元智大学就读研究所的时候,也以此为研究主题. 在当时,电子商务是显学,Visa跟 Master C ...

  6. python 字符串加密 唯一数字_python实现字符串加密 生成唯一固定长度字符串

    背景 有时候爬虫爬过的url需要进行指纹核对,比如Scrapy就是进行指纹核对,如果是指纹重复则不再爬取.当然在入库的时候我还是需要做一次核对,否则如果爬虫有漏掉,进入数据库就不合适了. 思路 根据S ...

  7. java ecb加密_AES(Rijndael)算法ECB模式加密

    ECB 电子密码本模式:Electronic codebook 每块堵路加密 优点:分块处理 并行处理 缺点:同样的原文得到相同的密文 容易被攻击 java代码: import javax.crypt ...

  8. 软件与计算机硬件加密,51单片机程序进行软件加密和硬件解密的方法

    由于固化在片外EPROM 里的单片机程序容易复制,所以,如不在技术上采取保护措施,则程序中所采用的处理方法易被他人分析仿制.对单片机程序进行加密是一种有效的保护措施,也是一项实用的技术.虽然本身带有E ...

  9. Python通过异或运算对email地址进行解密与加密

    不少网页的email地址出于防止收到垃圾邮件的目的,JS脚本里对email做加密保护,仅当在加载页面时才通过JS脚本解密再渲染出来.查看网页源代码可以发现关键词往往是cfemail,其后是一大串十六进 ...

最新文章

  1. Linux命令 crontab的理解和使用方法
  2. UA OPTI501 电磁波4 电介质及其极化
  3. (*长期更新)软考网络工程师学习笔记——Section 18 计算机硬件基本知识
  4. count() * ,1,字段 三兄弟
  5. 在JBoss Fuse / Fabric8 / Karaf中使用Byteman
  6. Oracle Controlfile控制文件中记录的信息片段sections
  7. Installshield 文件及文件夹操作
  8. poj 3310(并查集判环,图的连通性,树上最长直径路径标记)
  9. 【java】java 新一代垃圾回收器ZGC的探索与实践
  10. 《游戏大师Chris Crawford谈互动叙事》一1.2 两种思维方式
  11. c语言程序下三子棋,C语言实现三子棋游戏(初级版)
  12. JQuery:常用方法一览
  13. Python 标准库 —— socket(网络编程)
  14. 关于数据库设计是否需要加入(建立)外键
  15. 使用Jorm简单的增删查改数据库
  16. 冷备份实验,裸设备上备份
  17. centos7使用kubeadm部署k8s集群(使用containerd做运行时)
  18. 富士施乐Fuji Xerox DocuPrint M255 z 驱动
  19. empty怎么发音_empty怎么读什么意思
  20. CentOS 7.6使用Percona XtraBackup 2.4备份恢复MySQL 5.7

热门文章

  1. Git常用的基本命令
  2. 7、Docker容器数据卷volumes-from
  3. java域的控制修饰符可分为_Java中的类和方法的修饰符
  4. java创建oracle用户_oracle添加用户并指定数据库
  5. 妈妈帮×神策智能推荐,打造人性化智趣母婴服务
  6. Linux shell 对于文件的删除,复制,修改文件名等操作
  7. java使用JDBC连接数据库的几种方式
  8. Javascript学习------内部对象 String Date event(重要)
  9. 苹果系统从零开始--MAC OS X 教程1 -- Finder
  10. 4e4 Coursework decomposition