文件字节加解密
来源:互联网 发布:氰化钾淘宝叫什么名字 编辑:程序博客网 时间:2024/05/16 19:38
procedure EncryptMemory(Data: Pointer; Size: Cardinal);
procedure EncryptData(var A, B: DWORD);
var
_Constant, i: DWORD;
begin
_Constant := 0;
for i := 0 to 31 do
begin
_Constant := _Constant - $61C88647;
A := A + (((B shr 5) + $2B4805C2) xor ((B shl 4) + $98DFF541) xor (B + _Constant));
B := B + (((A shr 5) + $D8144BA5) xor ((A shl 4) + $01AF979B) xor (A + _Constant));
end;
end;
var
i: Integer;
_Data1, _Data2: Dword;
begin
for I := 0 to (Size div 8) - 1 do
begin
_Data1 := Pdword(dword(Data) + (i * 8))^;
_Data2 := Pdword(dword(Data) + (i * 8) + 4)^;
EncryptData(_Data1, _Data2);
Pdword(dword(Data) + (i * 8))^ := _Data1;
Pdword(dword(Data) + (i * 8) + 4)^ := _Data2;
end;
end;
procedure DecryptMemory(Data: Pointer; Size: Cardinal);
procedure DecryptData(var A, B: DWORD);
var
_Constant, i: DWORD;
begin
_Constant := $C6EF3720;
for i := 0 to 31 do
begin
B := B - (((A shr 5) + $D8144BA5) xor ((A shl 4) + $01AF979B) xor (A + _Constant));
A := A - (((B shr 5) + $2B4805C2) xor ((B shl 4) + $98DFF541) xor (B + _Constant));
_Constant := _Constant + $61C88647;
end;
end;
var
i: Integer;
_Data1, _Data2: Dword;
begin
for I := 0 to (Size div 8) - 1 do
begin
_Data1 := Pdword(dword(Data) + (i * 8))^;
_Data2 := Pdword(dword(Data) + (i * 8) + 4)^;
DecryptData(_Data1, _Data2);
Pdword(dword(Data) + (i * 8))^ := _Data1;
Pdword(dword(Data) + (i * 8) + 4)^ := _Data2;
end;
end;
//使用
procedure TfrmMain.btn1Click(Sender: TObject);
var
memStream: TMemoryStream;
begin
memStream := TMemoryStream.Create;
memStream.LoadFromFile('.\732');
DecryptMemory(memStream.Memory, memStream.Size);
memStream.SaveToFile('.\732_u');
FreeAndNil(memStream);
end;
procedure EncryptData(var A, B: DWORD);
var
_Constant, i: DWORD;
begin
_Constant := 0;
for i := 0 to 31 do
begin
_Constant := _Constant - $61C88647;
A := A + (((B shr 5) + $2B4805C2) xor ((B shl 4) + $98DFF541) xor (B + _Constant));
B := B + (((A shr 5) + $D8144BA5) xor ((A shl 4) + $01AF979B) xor (A + _Constant));
end;
end;
var
i: Integer;
_Data1, _Data2: Dword;
begin
for I := 0 to (Size div 8) - 1 do
begin
_Data1 := Pdword(dword(Data) + (i * 8))^;
_Data2 := Pdword(dword(Data) + (i * 8) + 4)^;
EncryptData(_Data1, _Data2);
Pdword(dword(Data) + (i * 8))^ := _Data1;
Pdword(dword(Data) + (i * 8) + 4)^ := _Data2;
end;
end;
procedure DecryptMemory(Data: Pointer; Size: Cardinal);
procedure DecryptData(var A, B: DWORD);
var
_Constant, i: DWORD;
begin
_Constant := $C6EF3720;
for i := 0 to 31 do
begin
B := B - (((A shr 5) + $D8144BA5) xor ((A shl 4) + $01AF979B) xor (A + _Constant));
A := A - (((B shr 5) + $2B4805C2) xor ((B shl 4) + $98DFF541) xor (B + _Constant));
_Constant := _Constant + $61C88647;
end;
end;
var
i: Integer;
_Data1, _Data2: Dword;
begin
for I := 0 to (Size div 8) - 1 do
begin
_Data1 := Pdword(dword(Data) + (i * 8))^;
_Data2 := Pdword(dword(Data) + (i * 8) + 4)^;
DecryptData(_Data1, _Data2);
Pdword(dword(Data) + (i * 8))^ := _Data1;
Pdword(dword(Data) + (i * 8) + 4)^ := _Data2;
end;
end;
//使用
procedure TfrmMain.btn1Click(Sender: TObject);
var
memStream: TMemoryStream;
begin
memStream := TMemoryStream.Create;
memStream.LoadFromFile('.\732');
DecryptMemory(memStream.Memory, memStream.Size);
memStream.SaveToFile('.\732_u');
FreeAndNil(memStream);
end;
0 0
- 文件字节加解密
- 文件加解密
- C#文件加解密
- android文件加解密
- DES加解密文件
- 文件加解密方法
- DES文件加解密
- 文件加解密操作
- 文件AES加解密
- C#文件加解密
- Android AES 16字节加解密
- 文件加解密,可另存文件
- 文件加解密,文件操作
- 文件加解密—解密版
- c#实现文件加解密
- 文件加解密 - 密钥保存
- Asp.Net 文件加解密
- Asp.Net 文件加解密
- RSA算法原理(二)
- iOS跳转url
- js的函数变量
- 回调函数
- 跨平台的移动开发框架介绍
- 文件字节加解密
- opencv的hog源码分析(详细的hog.cpp注解)
- 黑马程序员—7—Java基础:有关异常学习笔记和学习心得体会
- rails的Mysql一主多从,主写从读解决方案
- iOS开发_统计xcode代码行数
- Oracle VM VirtualBox上安装ubuntu
- hdu 1203 I NEED A OFFER!
- 创建一个Windows 服务
- 【Linux】VirtualBox安装ubuntu排错LowGraphic