delphi7的加密算法与 delphi XE+加解密算法

delphi7加解密算法:

Function JiaMi(Src:String; Key:String):String;
varKeyLen :Integer;KeyPos :Integer;offset :Integer;dest :String;SrcPos :Integer;SrcAsc :Integer;Range :Integer;
beginKeyLen:=Length(Key);KeyPos:=0;Range:=1;Randomize;offset:=Random(Range);dest:=format('%1.2x',[offset]);for SrcPos := 1 to Length(Src) dobeginSrcAsc:=(Ord(Src[SrcPos]) + offset) MOD 255;if KeyPos < KeyLen then KeyPos:= KeyPos + 1 else KeyPos:=1;SrcAsc:= SrcAsc xor Ord(Key[KeyPos]);dest:=dest + format('%1.2x',[SrcAsc]);offset:=SrcAsc;end;Result:=Dest;
end;
//解密函数
Function JieMi (Src:String; Key:String):String;
varKeyLen :Integer;KeyPos :Integer;offset :Integer;dest :String;SrcPos :Integer;SrcAsc :Integer;TmpSrcAsc :Integer;Range :Integer;
beginKeyLen:=Length(Key);if KeyLen = 0 then key:='starlin';KeyPos:=0;SrcPos:=0;SrcAsc:=0;Range:=1;offset:=StrToInt('$'+ copy(src,1,2));SrcPos:=3;repeattrySrcAsc:=StrToInt('$'+ copy(src,SrcPos,2));exceptSrcAsc:=StrToInt('$00');end;if KeyPos < KeyLen Then KeyPos := KeyPos + 1 else KeyPos := 1;TmpSrcAsc := SrcAsc xor Ord(Key[KeyPos]);if TmpSrcAsc <= offset thenTmpSrcAsc := 255 + TmpSrcAsc - offsetelseTmpSrcAsc := TmpSrcAsc - offset;dest := dest + chr(TmpSrcAsc);offset:=srcAsc;SrcPos:=SrcPos + 2;until SrcPos >= Length(Src);Result:=Dest;Result:=Copy(Result,1,Length(Result)-1);
end;
end.

Delphi XE+版本:

Function JiaMi(Src:String; Key:String):String;
// Src 支持汉字,字母,数字,符号
// Key 不支持汉字;适合字母与数字
varKeyLen :Integer;KeyPos :Integer;offset :Integer;dest :String;SrcPos :Integer;SrcAsc :Integer;Range :Integer;IntTemp:integer;SrcAnsi:PAnsiChar;beginKeyLen:=Length(Key);KeyPos:=0;Range:=1;Randomize;offset:=Random(Range);dest:=format('%1.2x',[offset]);SrcAnsi:=PAnsiChar(AnsiString(Src));IntTemp:= Length(SrcAnsi);for SrcPos := 1 to IntTemp dobeginSrcAsc:=(Ord(SrcAnsi[SrcPos-1]) + offset) MOD 255;if KeyPos < KeyLen then KeyPos:= KeyPos + 1 else KeyPos:=1;SrcAsc:= SrcAsc xor Ord(Key[KeyPos]);dest:=dest + format('%1.2x',[SrcAsc]);offset:=SrcAsc;end;Result:=Dest;
end;//解密函数
Function JieMi (Src:String; Key:String):String;
// Src 支持汉字,字母,数字,符号
// Key 不支持汉字;适合字母与数字
varKeyLen :Integer;KeyPos :Integer;offset :Integer;dest :String;SrcPos :Integer;SrcAsc :Integer;TmpSrcAsc :Integer;Range :Integer;SrcAnsi:PAnsiChar;IntTemp,i:Integer;ByteArray: array of Byte;
beginKeyLen:=Length(Key);if KeyLen = 0 then key:='starlin';KeyPos:=0;SrcPos:=0;SrcAsc:=0;Range:=1;offset:=StrToInt('$'+ copy(src,1,2));SrcPos:=3;IntTemp:=Length(Src) div 2;setlength(ByteArray,IntTemp);i:=0;repeattrySrcAsc:=StrToInt('$'+ copy(src,SrcPos,2));exceptSrcAsc:=StrToInt('$00');end;    if KeyPos < KeyLen Then KeyPos := KeyPos + 1 else KeyPos := 1;    TmpSrcAsc := SrcAsc xor Ord(Key[KeyPos]);    if TmpSrcAsc <= offset thenTmpSrcAsc := 255 + TmpSrcAsc - offsetelseTmpSrcAsc := TmpSrcAsc - offset;ByteArray[i]:=TmpSrcAsc;i:=i+1;           offset:=srcAsc;SrcPos:=SrcPos + 2;until SrcPos >= Length(Src);GetMem(SrcAnsi,IntTemp+1); CopyMemory(@SrcAnsi[0],@ByteArray[0],IntTemp);dest:=string(strpas(SrcAnsi));     Result:=Dest;
end;

测试:
str1 :=jiemi(jiami(‘学习ABC123’,‘uabd123’),‘uabd123’);
//返回值:学习ABC123

delphi7的加密算法与 delphi XE+加解密算法相关推荐

  1. 加解密算法的概述和总结

    加解密算法的概述和总结 一.单向散列算法 也称为Hash(哈希)算法.是一种将任意长度的消息压缩到某一固定长度(消息摘要)的函数(该过程不可逆).Hash函数可用于数字签名.消息的完整性检测.消息起源 ...

  2. Python中的AES加解密算法

    AES加密的参数及其条件:这个AES加密的主要坑就在于这些条件,首先AES加密有几个参数 秘钥:加密的时候用秘钥,解密的时候需要同样的秘钥才能解出来 明文:需要加密的内容 模式:aes 加密常用的有E ...

  3. python中凯撒密码_python实现凯撒密码、凯撒加解密算法

    凯撒密码的原理:计算并输出偏移量为3的凯撒密码的结果 注意:密文是大写字母,在变换加密之前把明文字母都替换为大写字母 def casar(message): # *************begin* ...

  4. kotlin写的加解密算法,包括模式和填充方式

    DES加密 DES是一种对称加密(Data Encryption Standard)算法. DES算法一般有两个关键点,第一个是加密算法,第二个是数据补位. 加密算法常见的有ECB模式和CBC模式: ...

  5. php aes 256 加解密,PHP完整的AES加解密算法使用及例子(256位)

    依赖PHP自身的mcrypt扩展 class aes { // CRYPTO_CIPHER_BLOCK_SIZE 32 private $_secret_key = 'default_secret_k ...

  6. AES加解密算法详解

    0 AES简介 美国国家标准技术研究所在2001年发布了高级加密标准(AES).AES是一个对称分组密码算法,旨在取代DES成为广泛使用的标准. 根据使用的密码长度,AES最常见的有3种方案,用以适应 ...

  7. DES加解密算法原理详解与实现

    [DES密码编写] 1. Equipment (1) operating system version :WIN 10 (2) CPU instruction set: x 64 (3) softwa ...

  8. 凯撒加密的python语言程序_python实现凯撒密码、凯撒加解密算法

    凯撒密码的原理:计算并输出偏移量为3的凯撒密码的结果 注意:密文是大写字母,在变换加密之前把明文字母都替换为大写字母 def casar(message): # *************begin* ...

  9. 各种加解密算法分类及其各自的安全性能对比

    常用的加解密算法分三大类:非对称密钥加密算法.对称密钥加密算法.Hash加密算法 一.非对称密钥加密算法(RSA.DSA.ECC.DH等): 非对称加密又叫公开密钥算法(public key algo ...

  10. 程序猿成长之路番外篇之前后端加解密(rsa+aes混合加解密算法)

    今年国庆前夕接手一个外部项目,说是要保障接口数据安全,数据安全相对容易些,接口安全嘛emmmmm, 这个要考虑加解密算法.白名单之类的问题了.于是打算今天搞一期接口安全为题的成长之路番外篇. 为什么要 ...

最新文章

  1. js php滚动图代码,JavaScript_JS实现的N多简单无缝滚动代码(包含图文效果),本文实例讲述了JS实现的N多简 - phpStudy...
  2. HDOJ1114解题报告【完全背包】
  3. 更新node最新版本方法和 npm install -g n 运行错误
  4. 前端学习(1663):前端系列实战课程之禁止保存
  5. php mysql int 日期格式化 string,MYSQL int类型字段的时间存放和显示 和 php的时间存放函数...
  6. SpringCloud入门之应用程序上下文服务(Spring Cloud Context)详解
  7. 从零开始学前端:HTML的一些文本格式化标签、快捷键、和特殊符号 --- 今天你学习了吗?(CSS:Day02)
  8. First of all, let’s talk about the richest man in Japan
  9. 2029.石子游戏 IX-LeetCode
  10. 普通用户通过Putty密钥方式登录
  11. 5开发 时间格式化_2020年,前端开发者必备的10个VS Code扩展插件
  12. 人只会听到他想听的话——与领导甲的一次谈话
  13. 图像频域增强:低通滤波器
  14. CSDN看不见博主博客的评论_解决办法(亲测有效奥)
  15. mysql表单设计_【mysql】自定义表单系统 如何设计数据库
  16. 抽象类和具体类的区别
  17. 创意h5案例作品展示:谁是王牌拆弹专家
  18. 利用Python做一个漂亮小姐姐词云跳舞视频
  19. OVR模式和sklearn模型评价标准学习
  20. Linux下干净卸载mysql详解

热门文章

  1. java如何实现容器_Java的容器都有哪些,怎么实现的
  2. MySQL索引设计与EXPLAIN
  3. MySQL(1)----帮助使用
  4. Linux命令基础5-文件重定向
  5. Matlab Robitic Toolbox学习笔记Day1
  6. input checkbox 选中问题
  7. linux oracle 分号引起大错误
  8. 使用 background:url(#) 解决 IE67 bug
  9. 【C语言】19-static和extern关键字1-对函数的作用
  10. android intent 视频,Android通过发送Intent播放本地视频和网络视频