博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
rc4加密
阅读量:5280 次
发布时间:2019-06-14

本文共 1285 字,大约阅读时间需要 4 分钟。

function 
RC4(Expression, Password: 
string
): 
string
;
var
RB : 
array
[
0..255
of 
Integer
;
X, Y, Z: 
longint
;
Key : 
array 
of 
byte
;
ByteArray : 
array 
of 
Word
;
//原来delphi 7下面 是 byte;
Temp: 
byte
;
Counter: 
integer
;
begin
  
If 
(Length(Expression) = 
0
then 
Exit;
  
If 
(Length(Password) = 
0
then 
Exit;
  
If 
(Length(Password) > 
256
then 
begin
    
Password := Copy(Password, 
1
256
);
  
end
;
  
SetLength(Key, Length(Password));
  
for 
Counter := 
0 
to 
Length(Password) - 
1 
do
  
begin
    
Key[Counter] := ord(Password[Counter + 
1
]);
  
end
;
  
for 
X := 
0 
to 
255 
do
  
begin
    
RB[X] := X;
  
end
;
  
X := 
0
;
  
Y := 
0
;
  
Z := 
0
;
  
for 
X := 
0 
to 
255 
do
  
begin
    
Y := (Y + RB[X] + Key[X 
mod 
Length(Password)]) 
mod 
256
;
    
Temp := RB[X];
    
RB[X] := RB[Y];
    
RB[Y] := Temp;
  
end
;
  
X := 
0
;
  
Y := 
0
;
  
Z := 
0
;
  
SetLength(ByteArray, Length(Expression));
  
for 
Counter := 
0 
to 
Length(Expression) - 
1 
do
  
begin
    
ByteArray[Counter] := ord(Expression[Counter + 
1
]);
  
end
;
  
for 
X := 
0 
to 
Length(Expression) 
do
  
begin
    
Y := (Y + 
1
mod 
256
;
    
Z := (Z + RB[Y]) 
mod 
256
;
    
Temp := RB[Y];
    
RB[Y] := RB[Z];
    
RB[Z] := Temp;
    
ByteArray[X] := ByteArray[X] 
xor 
(RB[(RB[Y] + RB[Z]) 
mod 
256
]);
  
end
;
  
for 
Counter := 
0 
to 
Length(Expression) - 
1 
do
  
begin
    
Result := Result + chr(ord(ByteArray[Counter]));
  
end
;
end
;

转载于:https://www.cnblogs.com/onionhacker/p/3533641.html

你可能感兴趣的文章
kill新号专题
查看>>
MVC学习系列——Model验证扩展
查看>>
字符串
查看>>
vue2.x directive - 限制input只能输入正整数
查看>>
实现MyLinkedList类深入理解LinkedList
查看>>
自定义返回模型
查看>>
C#.NET 大型通用信息化系统集成快速开发平台 4.1 版本 - 客户端多网络支持
查看>>
HDU 4122
查看>>
Suite3.4.7和Keil u3自带fx2.h、fx2regs.h文件的异同
查看>>
打飞机游戏【来源于Crossin的编程教室 http://chuansong.me/account/crossincode 】
查看>>
[LeetCode] Merge Intervals
查看>>
【翻译自mos文章】当点击完 finishbutton后,dbca 或者dbua hang住
查看>>
Linux编程简介——gcc
查看>>
2019年春季学期第四周作业
查看>>
MVC4.0 利用IActionFilter实现简单的后台操作日志功能
查看>>
rotate the clock
查看>>
bugku 变量
查看>>
数据库01 /Mysql初识以及基本命令操作
查看>>
数据库02 /MySQL基础数据类型以及多表之间建立联系
查看>>
Python并发编程04/多线程
查看>>