开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

查看: 988|回复: 3
收起左侧

[完成] 怎样解Delphi的密文

 关闭 [复制链接]
结帖率:75% (6/8)
发表于 2021-10-12 14:29:21 | 显示全部楼层 |阅读模式   广东省深圳市
60精币
大家好,Delphi加密的密文用易语言怎样可以解密,密文(9961BC47C257BD82DF7C)原文(songxz110),密文(64F9401F3F1822)原文(123456),Delphi的加解密方法如下:
function EncrypKey(Src: string; Key: string): string;
var // 加密函数
  idx: Integer;
  KeyLen: Integer;
  KeyPos: Integer;
  offset: Integer;
  dest: string;
  SrcPos: Integer;
  SrcAsc: Integer;
  TmpSrcAsc: Integer;
  Range: Integer;
begin
  KeyLen := Length(Key);
  if KeyLen = 0 then
    Key := 'CaiChen';
  KeyPos := 0;
  SrcPos := 0;
  SrcAsc := 0;
  Range := 256;
  Randomize;
  offset := Random(Range);
  dest := format('%1.2x', [offset]);
  for SrcPos := 1 to Length(Src) do
  begin
    SrcAsc := (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 UncrypKey(Src: string; Key: string): string;
var // 解密函数
  idx: Integer;
  KeyLen: Integer;
  KeyPos: Integer;
  offset: Integer;
  dest: string;
  SrcPos: Integer;
  SrcAsc: Integer;
  TmpSrcAsc: Integer;
  Range: Integer;
begin
  KeyLen := Length(Key);
  if KeyLen = 0 then
    Key := 'CaiChen';
  KeyPos := 0;
  SrcPos := 0;
  SrcAsc := 0;
  Range := 256;
  offset := StrToInt('$' + copy(Src, 1, 2));
  SrcPos := 3;
  repeat
    SrcAsc := StrToInt('$' + copy(Src, SrcPos, 2));
    if KeyPos < KeyLen then
      KeyPos := KeyPos + 1
    else
      KeyPos := 1;
    TmpSrcAsc := SrcAsc xor Ord(Key[KeyPos]);
    if TmpSrcAsc <= offset then
      TmpSrcAsc := 255 + TmpSrcAsc - offset
    else
      TmpSrcAsc := TmpSrcAsc - offset;
    dest := dest + chr(TmpSrcAsc);
    offset := SrcAsc;
    SrcPos := SrcPos + 2;
  until SrcPos >= Length(Src);
  Result := dest;
end;

最佳答案

查看完整内容

[e=0].版本 2 .子程序 EncrypKey, 文本型 .参数 Src, 文本型 .参数 key, 文本型, 可空 .局部变量 idx .局部变量 KeyLen .局部变量 KeyPos .局部变量 offset .局部变量 dest, 文本型 .局部变量 SrcPos .局部变量 SrcAsc .局部变量 TmpSrcAsc .局部变量 Range KeyLen = 取文本长度 (key) .如果真 (KeyLen = 0) key = “CaiChen” .如果真结束 KeyPos = 0 SrcPos = 0 SrcAsc = 0 Range = 256 置随机数种子 () offset = ...

签到天数: 18 天

发表于 2021-10-12 14:29:22 | 显示全部楼层   河北省石家庄市
  
子程序名返回值类型公开备 注
EncrypKey文本型 
参数名类 型参考可空数组备 注
Src文本型
key文本型
变量名类 型静态数组备 注
idx  
KeyLen  
KeyPos  
offset  
dest文本型 
SrcPos  
SrcAsc  
TmpSrcAsc  
Range  
KeyLen = 取文本长度 (key)
如果真 (KeyLen = 0)
key = “CaiChen”
KeyPos = 0
SrcPos = 0
SrcAsc = 0
Range = 256
置随机数种子 ()
offset = 取随机数 (1, Range)
dest = 取文本右边 (“00”进制_十到十六 (offset), 2)
计次循环首 (取文本长度 (Src), SrcPos)
SrcAsc (取代码 (Src, SrcPos) + offset) % 255
如果 (KeyPos < KeyLen)
KeyPos = KeyPos + 1
KeyPos = 1
SrcAsc = 位异或 (SrcAsc, 取代码 (key, KeyPos))
dest = dest + 取文本右边 (“00”进制_十到十六 (SrcAsc), 2)  ' ’ format('%1.2x', [SrcAsc]);
offset = SrcAsc
计次循环尾 ()
返回 (dest)
子程序名返回值类型公开备 注
UncrypKey文本型 
参数名类 型参考可空数组备 注
Src文本型
Key文本型
变量名类 型静态数组备 注
idx  
KeyLen  
KeyPos  
offset  
dest文本型 
SrcPos  
SrcAsc  
TmpSrcAsc  
KeyLen = 取文本长度 (Key)
如果真 (KeyLen = 0)
key = “CaiChen”
KeyPos = 0
SrcPos = 0
SrcAsc = 0
offset = 进制_十六到十 (取文本左边 (Src, 2))
SrcPos = 3
循环判断首 ()
SrcAsc = 进制_十六到十 (取文本中间 (Src, SrcPos, 2))
如果 (KeyPos < KeyLen)
KeyPos = KeyPos + 1
KeyPos = 1
TmpSrcAsc = 位异或 (SrcAsc, 取代码 (Key, KeyPos))
如果 (TmpSrcAsc ≤ offset)
TmpSrcAsc = 255 + TmpSrcAsc - offset
TmpSrcAsc = TmpSrcAsc - offset
dest = dest + 字符 (TmpSrcAsc)
offset = SrcAsc
SrcPos = SrcPos + 2
循环判断尾 (SrcPos ≤ 取文本长度 (Src))
返回 (dest)


www.png


* A6598BBA619A56C4B6A5
* songxz110
被调试易程序运行完毕


评分

参与人数 1荣誉 +1 收起 理由
笨潴 + 1 热心帮助他人,荣誉+1,希望继续努力(*^__^*) 嘻嘻!

查看全部评分

回复

使用道具 举报

签到天数: 18 天

发表于 2021-10-12 16:09:53 | 显示全部楼层   河北省石家庄市
你的key 不是默认的吧??我翻译完解不开你的密文,我用默认的key 加密完是可以解开的
回复

使用道具 举报

签到天数: 18 天

发表于 2021-10-12 17:07:34 | 显示全部楼层   河北省石家庄市
朋友,来看看啊,没问题记得结贴哦~~
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报电话0663-3422125,QQ: 793400750,邮箱:wp@125.la
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备12094385号-1) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

快速回复 返回顶部 返回列表