Delphi编写的等长加密与解密
加解密单元
作者:张超
}
unit uCrypt;
uses
Windows, SysUtils;
C1 = 52845;
C2 = 22719;
CryptKey = 72957;
function Decrypt(Source: array of Byte; var Dest: array of Byte; Len: Cardinal): BOOL; overload;
function Decrypt(Source: String; var Dest: string): BOOL; overload;
function Decrypt(Source: Pchar; Dest: PChar; Len: Cardinal): BOOL; overload;
var
i: Integer;
Key: Integer;
begin
Key:=CryptKey;
if (not Assigned(Source)) or (not Assigned(Dest)) or (Len <=0) then
begin
Result:=False;
end;
for i:=0 to Len - 1 do
begin
Dest[i]:=Char(Byte(Source[i]) xor (Key shr 8));
Key:=(Byte(Dest[i]) + Key) * C1 + C2;
end;
end;
var
i: Integer;
Key: Integer;
PrevBlock: Byte;
begin
Key:=CryptKey;
if (not Assigned(Source)) or (not Assigned(Dest)) or (Len <=0) then
begin
Result:=False;
end;
for i:=0 to Len - 1 do
begin
PrevBlock:=Byte(Source[i]);
Dest[i]:=Char(Byte(Source[i]) xor (Key shr 8));
Key:=(Byte(PrevBlock) + Key) * C1 + C2;
end;
end;
begin
Result:=False;
begin
SetLength(Dest, Length(Source));
Encrypt(PChar(Source), PChar(Dest), Length(Source));
Result:=True;
end;
end;
begin
Result:=False;
begin
SetLength(Dest, Length(Source));
Decrypt(PChar(Source), PChar(Dest), Length(Source));
Result:=True;
end;
end;
var
i: Integer;
Key: Integer;
begin
Key:=CryptKey;
if Len <= 0 then
begin
Result:=False;
end;
for i:=0 to Len - 1 do
begin
Dest[i]:=Source[i] xor (Key shr 8);
Key:=(Dest[i] + Key) * C1 + C2;
end;
end;
var
i: Integer;
PrevBlock: Byte;
Key: Integer;
begin
Key:=CryptKey;
if (Len <= 0) then
begin
Result:=False;
end;
for i:=0 to Len - 1 do
begin
PrevBlock:=Source[i];
Dest[i]:=Source[i] xor (Key shr 8);
Key:=(PrevBlock + Key) * C1 + C2;
end;
end;
Delphi编写的等长加密与解密的更多相关文章
- [Swift通天遁地]七、数据与安全-(17)使用Swift实现原生的3DES加密和解密
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★➤微信公众号:山青咏芝(shanqingyongzhi)➤博客园地址:山青咏芝(https://www.cnblogs. ...
- OD学习笔记10:一个VB程序的加密和解密思路
前边,我们的例子中既有VC++开发的程序,也有Delphi开发的程序,今天我们给大家分析一个VB程序的加密和解密思路. Virtual BASIC是由早期DOS时代的BASIC语言发展而来的可视化编程 ...
- 分享一次C#调用Delphi编写Dll程序
1.前言: 最近接手了一个项目需要和Delphi语言编写的一个系统进行一些接口的对接,数据在传输过程中采用Des加密方式,因为Delphi 平台的加密方式和C#平台的加密方式不互通,所以采用的方式是C ...
- C# 网络加密与解密
数据在网络传输过程中的保密性是网络安全中重点要考虑的问题之一.由于通过网络传递数据是在不安全的信道上进行传输的,因此通信双方要想确保任何可能正在侦听的人无法理解通信的内容,而且希望确保接收方接收的信息 ...
- 关于《加密与解密》的读后感----对dump脱壳的一点思考
偶然翻了一下手机日历,原来今天是夏至啊,时间过的真快.ISCC的比赛已经持续了2个多月了,我也跟着比赛的那些题目学了2个月.......虽然过程很辛苦,但感觉还是很幸运的,能在大三的时候遇到ISCC, ...
- Java实现文件的加密与解密
最近在做一个项目,需要将资源文件(包括图片.动画等类型)进行简单的加密后再上传至云上的服务器,而在应用程序中对该资源使用前先将读取到的文件数据进行解密以得到真正的文件信息.此策略的原因与好处是将准备好 ...
- Java Base64加密、解密原理Java代码
Java Base64加密.解密原理Java代码 转自:http://blog.csdn.net/songylwq/article/details/7578905 Base64是什么: Base64是 ...
- JS URL 使用base64加密与解密
JS编码方式: <script type="text/javascript"> document.write(encodeURI("http://www.w3 ...
- 基于私钥加密公钥解密的RSA算法C#实现
RSA算法是第一个能同时用于加密和数字签名的算法,也易于理解和操作. RSA是被研究得最广泛的公钥算法,从提出到现在已近二十年,经历了各种攻击的考验,逐渐为人们接受,普遍认为是目前最优秀的公钥方案之一 ...
随机推荐
- mysql存储json
1. json_merge 合并Json并返回 update `user` set inviteeMap = json_merge(inviteeMap, '{"xx1":100} ...
- Python之datetime模块
datatime模块重新封装了time模块,提供更多接口,提供的类有:date,time,datetime,timedelta,tzinfo. 1.date类 datetime.date(year, ...
- java线程基础巩固---如何给你的应用程序注入钩子程序
这次做一个比较有意思的实验,我们知道当一个程序如果抛异常了其程序肯定会挂掉,那有木有可能在程序异常退出时能执行一段咱们自己的代码,比如说服务器在异常退出时需要做一些额外的资源清理,像这种场景就正好是这 ...
- 微信小程序 getSystemInfoSync
getSystemInfoSync 获取用户设备的相关信息 示例代码: 使用位置:在 JS文件的任意函数中使用 const res = wx.getSystemInfoSync(); console. ...
- 自己写的一个用于往文件中插入字符串及空格的bat
@echo off echo pleas input the filename:set /p file= :while rem set j=0 非得写这儿 写下面:check 上面不行 希望大神指点s ...
- 利用 canvas 实现压缩图片
/** * nase64Data --> 要压缩的图片base64数据 * width --> 宽度 * height --> 高度 * _callback --> 回调函数 ...
- Modbus协议深入讲解_NI
from:https://www.ni.com/zh-cn/innovations/white-papers/14/the-modbus-protocol-in-depth.html 已更新 Mar ...
- Bootstrap-轮播图-No.9
<!DOCTYPE html> <html lang="zh"> <head> <meta charset="UTF-8&quo ...
- UVALive 7308 Tom and Jerry 猫抓老鼠 物理题
题目链接: 就是一个老鼠在环上一速度v开始绕环走,一只猫从圆心出发,任意时刻圆心,猫,老鼠三者在一条直线上,且速度也是v,求多久后猫抓到老鼠. #include <cstdio> #inc ...
- hdu 1133 卡特兰 高精度
Buy the Ticket Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) T ...