function RC4(Expression, Password: string): string;
var
RB : array[0..255of Integer;
X, Y, Z: longint;
Key : array of byte;
ByteArray : array of Word;//原来delphi 7下面 是 byte;
Temp: byte;
Counter: integer;
begin
  If (Length(Expression) = 0then Exit;
  If (Length(Password) = 0then Exit;
  If (Length(Password) > 256then begin
    Password := Copy(Password, 1256);
  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 + 1mod 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;

rc4加密的更多相关文章

  1. RC4加密解密算法

    RC4相对是速度快.安全性高的加密算法.在实际应用中,我们可以对安全系数要求高的文本进行多重加密,这样破解就有一定困难了.如下测试给出了先用RC4加密,然后再次用BASE64编码,这样双重锁定,保证数 ...

  2. [转]RC4加密已不再安全,破解效率极高

    原文链接:http://freebuf.com/news/72622.html 原文发表时间:2015.7.17 安全研究人员称,现在世界上近三分之一的HTTPS加密连接可被破解,并且效率极高.这种针 ...

  3. VB使用API进行RC4加密解密(MD5密钥)

    根据网络资料整改,来源未知,已调试通过. Option Explicit Private Declare Function CryptAcquireContext Lib "advapi32 ...

  4. golang rc4加密

    package main import "crypto/rc4" import "fmt" func main() { key := []byte(" ...

  5. 【java】RC4加密转16进制获取长度为40的不重复优惠码字符串 【未优化版本】

    需求:需要一串给各机构独有的优惠码 间接需求:固定长度.不重复.没有规律可循 实现思想如下: 1.首先获取一个UUID 2.去除UUID中的“-” 3.小写转大写 4.获取一个固定长度字符串 5.按照 ...

  6. java RC4加密和解码

    package com.*; public class RC4 { public static String decry_RC4(byte[] data, String key) { if (data ...

  7. java RC4加密解密

    package com.dgut.app.utils; import java.lang.Byte; import java.util.UUID; public class RC4 { public ...

  8. RC4加密解密

    package util; public class RC4Util { public static String decry_RC4(byte[] data, String key) { if (d ...

  9. C#加密解密(DES,AES,Base64,md5,SHA256,RSA,RC4)

    一:异或^简单加解密(数字类型) 1:原理: 异或用于比较两个二进制数的相应位,在执行按位"异或"运算时,如果两个二进制数的相应位都为1或者都为0,则返回0;如果两个二进制数的相应 ...

随机推荐

  1. Visual Studio 2015 下载地址

    Visual Studio 2015  发行说明: https://visualstudio.com/zh-cn/news/vs2015-vs.aspx Visual Studio  2015 特性简 ...

  2. [转]ASP.NET MVC 入门7、Hellper与数据的提交与绑定

    ASP.NET MVC提供了很多Hellper的方法,Hellper就是一些生成HTML代码的方法,方便我们书写HTML代码(有一部分的朋友更喜欢直接写HTML代码).我们也可以利用.NET 3.5的 ...

  3. java命名规范和编程技巧

    一个好的java程序首先命名要规范. 命名规范 定义这个规范的目的是让项目中所有的文档都看起来像一个人写的,增加可读性,方便维护等作用 Package 的命名 Package 的名字应该都是由一个小写 ...

  4. C# 多线程是否结束可通过线程池可以判断

    C# ManualResetEvent信号状态判断线程池是否结束  这是一段重要的代码,小猪两个小时的研究成果,记下来备查. using System; using System.Collection ...

  5. 关于mysql的error-based injection payload

    今天用sqlmap扫一个网站,想得到一个表的所有列名,注意到sqlmap用到的一个error-based payload的: 1 AND (SELECT 3174 FROM(SELECT COUNT( ...

  6. 教程-Delphi资源文件(全面分析于使用)

    Delphi资源文件(全面分析之位图.光标.图标.AVI.JPEG.Wave)   几乎每个Windows应用程序都使用图标.图片.光标等资源.资源是程序的一部分,但是它是不可执行代码.下面我们就详细 ...

  7. Python队列服务 Python RQ Functions from the __main__ module cannot be processed by workers.

    在使用Python队列服务 Python RQ 时候的报错: Functions from the __main__ module cannot be processed by workers. 原因 ...

  8. BAPI

    MM模块 1. BAPI_MATERIAL_SAVEDATA 创建物料主数据 注意参数EXTENSIONIN的使用,可以创建自定义字段 例如:WA_BAPI_TE_MARA-MATERIAL = IT ...

  9. ActionBarSherlock

    https://github.com/JakeWharton/ActionBarSherlock https://github.com/ddewaele/GoogleMapsV2WithActionB ...

  10. 阿里云ONS而微软Azure Service Bus体系结构和功能比较

    阿里云ONS而微软Azure Service bus体系结构和功能比较 版权所有所有,转载请注明出处http://blog.csdn.net/yangzhenping.谢谢! 阿里云的开放消息服务: ...