自己独立设计的字符串加密算法
2007-10-29 10:37
218 查看
2006年08月23日 18:12:00
自己独立设计的字符串加密算法 作者:成晓旭这是本人自行设计的第一个数据加密算法,当初是想设计成分组的对称加密算法,但后来工作一忙,就没有实现,就草草完成便开始应用起来了。但是目前的混淆度已经能够满足绝大多数的简单加密应用。1、 简介:设计一个算法,对字符串进行加密和解决,要求有一定的混淆度,并且,无须复杂的密钥管理。为简化应用,我将混淆码(类似于密钥)直接混淆存储在加密后密文中。2、 算法设计:开始想将此算法设计成分组的对称加密算法,所以在算法的核心处理轮尽可能地选择"对称"的计算方法:比较异或、字节内转换、对称倒。此算法设计成三大步骤:输入调整,核心加、解密过程,输出调整。1、 输入调整:就是用混淆码将源串调整成长度为8的整数倍的新串,以作为核心处理过程的输入。2、 输出调整:就是将通过核心处理过程计算后的结果串,按输出要求进行转换。加密时,就是转换成希望的密文串;解密时,转换成希望的明文串。3、 核心处理过程:是整个算法的核心过程,主要包括位异或、左右倒置、交换字节、移位等几个子过程。3.1:位异或:对串的每一个Byte位进行异或运算; 3.2:左右倒置:对串进行镜像对称处理,将串分成前后两部分,完成对换。 3.3:交换字节:对每一个Byte的前、后半字节进行镜像对称倒置。 3.4:移位:对串进行移位处理。具体的加、解密处理过程如下图所示:
![](http://p.blog.csdn.net/images/p_blog_csdn_net/CXXSoft/加、解密处理流程.JPG)
3、 算法点评:1、 此算法没有实现正在的对称加密算法。只需要对输入、输出调整过程进行优化,并且,重新调整核心处理过程的计算顺序,就可以了。2、 源码演示的版本有些缺陷:最大处理串长度为255,应该进行优化;并且混淆码过于粗糙,也有待优化;对混淆码的应用不全面,处理之后,混淆码主要集中在密文的部分区段,分布不够均匀,混淆程度也不够充分。4、 算法源码:
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
//------------------------------------------------------------------------------
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
//
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
// 产品名称:自有版权的字符串加密算法
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
// 产品简介:将字符串按自行独立设计的加密算法进行加、解密处理
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
// 产品作者:成晓旭
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
// E-Main: CXXSoft@sohu.com
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
// 产品版本:1.0版
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
// 版权所有:成晓旭
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
// 备注: 任何人使用此类时,请保留此段自述文件,谢谢!
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
// 单元文件:unSecurity.pas
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
// 单元说明:算法类TCXXStrSecurity的定义及实现
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
// 开发时间:2004-12-25
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
// 设计本加、解密算法,并用原型程序测试、实现
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
// 修改时间:2005-01-15
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
// 增加加、解密返回、输入串码制属性更新功能
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
//------------------------------------------------------------------------------
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
unit unSecurity;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
interface
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
uses
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
SysUtils;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
type
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
TCXXStrSecurity = class
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
private
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
//本算法的加密最终结果标志(true:字节码串/false:字符串)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
isByteResult:boolean;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
//本算法的字符串长度位数目(16制式)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
lenStrWidth:Byte;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
//本算法要求的最小模糊字符串
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
minTextLen:Word;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
//本算法处理的最大串长度
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
maxStrLen:Word;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
//本算法的串移位位数
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
bitStrMoved:Byte;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
//根据本算法的处理规则,以加密前明文进行串调整
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
function TransFillText(const strText:string):string;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
//根据本算法的处理规则,以加密后密文进行串调整
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
function ReTransFillText(const strText:string; const mvSize: Byte):string;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
//将字符串转换成Ascii码串的方法
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
function TransStringToNumber(const strText:string):string;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
//将一个字节的前后两个半字节互换的方法
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
function ChangeNumber(const byt:Byte):Byte;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
//将字符串循环移动的方法(左移/右移)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
function MoveTextByCircle(const strText:string;const mvSize:Byte;const isFromHead:boolean):string;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
//将字符串内每个字节的前后两个半字节互换的方法
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
function ExChangeNumber(const strText:string):string;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
//将字符串进行前后倒置的方法
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
function RevertString(const strText:string):string;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
//将字符串的相邻两位进行调换的方法
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
function TransOneByte(const strText:string):string;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
//将Ascii码串转换后常规字符串的方法
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
function TransNumberToString(const strText:string):string;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
//将字符串进行位异或处理方法
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
function XORString(const strText:string):string;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
public
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
//本算法的加、解密处理成功标志(true:成功,否则:失败)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
isOK:boolean;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
//本算法的处理过程消息
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
Msg:string;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
constructor Create(const isReturnByte:boolean);
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
//字符串加密方法
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
function EncodeString(const strText:string):string;overload;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
//字符串加密方法
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
function EncodeString(const strText:string;const isByteStr:boolean):string;overload;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
//字符串解密方法
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
function DecodeString(const strPassword:string):string;overload;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
//字符串解密方法
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
function DecodeString(const strPassword:string;const isByteStr:boolean):string;overload;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
end;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
implementation
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedBlockStart.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedBlock.gif)
...{ TCXXStrSecurity }
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
function TCXXStrSecurity.ChangeNumber(const byt: Byte): Byte;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
begin
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
Result := (byt mod 16) * 16 + (byt div 16);
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
end;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
constructor TCXXStrSecurity.Create(const isReturnByte:boolean);
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
const
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
default_MoveBit = 5;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
begin
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
minTextLen := 6;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
lenStrWidth := 2;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
maxStrLen := 255;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
bitStrMoved := 5;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
isByteResult := isReturnByte;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
end;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
function TCXXStrSecurity.EncodeString(const strText: string): string;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
var
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
str:string;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
begin
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
str := '';
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
str := TransFillText(strText);
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
str := XORString(str);
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
str := RevertString(str);
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
str := TransOneByte(str);
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
str := TransStringToNumber(str);
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
str := ExChangeNumber(str);
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
str := MoveTextByCircle(str,bitStrMoved,true);
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
if NOT isByteResult then
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
str := TransNumberToString(str);
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
Result := str;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
end;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
function TCXXStrSecurity.ExChangeNumber(const strText: string): string;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
var
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
len,i:Word;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
begin
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
len := Length(strText);
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
for i := 0 to len div 2 - 1 do
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
begin
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
Result := Result + IntToHex(ChangeNumber(StrToInt('$'+Copy(strText,i*2+1,2))),2);
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
end;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
end;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
function TCXXStrSecurity.MoveTextByCircle(const strText: string;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
const mvSize: Byte; const isFromHead: boolean): string;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
var
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
len:Word;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
begin
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
len := Length(strText);
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
if isFromHead then
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
Result := Copy(strText,mvSize+1,len-mvSize) + Copy(strText,1,mvSize)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
else
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
Result := Copy(strText,len-mvSize+1,mvSize) + Copy(strText,1,len-mvSize);
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
end;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
function TCXXStrSecurity.DecodeString(const strPassword: string): string;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
var
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
str:string;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
begin
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
str := strPassword;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
if NOT isByteResult then
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
str := TransStringToNumber(str);
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
str := MoveTextByCircle(str,bitStrMoved,false);
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
str := ExChangeNumber(str);
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
str := TransNumberToString(str);
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
str := TransOneByte(str);
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
str := RevertString(str);
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
str := XORString(str);
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
str := ReTransFillText(str,bitStrMoved);
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
Result := str;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
end;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
function TCXXStrSecurity.ReTransFillText(const strText: string; const mvSize: Byte): string;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
var
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
len:Word;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
begin
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
len := StrToInt('$'+Copy(strText,1,lenStrWidth));
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
Result := Copy(strText,lenStrWidth+1,len);
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
end;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
function TCXXStrSecurity.RevertString(const strText: string): string;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
var
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
i,len:word;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
t:char;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
pch:PChar;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
begin
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
pch := PChar(strText);
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
len := Length(strText);
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
for i := 0 to len div 2 -1 do
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
begin
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
//ChangeChar(pch[i],pch[len-1-i]);
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
t := pch[i];
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
pch[i] := pch[len-1-i];
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
pch[len-1-i] := t;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
end;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
Result := String(pch);
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
end;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
function TCXXStrSecurity.TransFillText(const strText: string): string;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
var
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
i,oLen:Word;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
str,strPower:string;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
begin
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
strPower := FormatDateTime('HHMMSS',Now());
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
//strPower := RevertString(strPower);
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
//strPower := TransOneByte(strPower);
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
str := strText;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
oLen := Length(str);
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
i := 1;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
while(Length(str) > minTextLen) do
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
begin
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
str := str + strPower[i];
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
Inc(i);
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
end;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
Result := IntToHex(oLen,lenStrWidth)+str;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
end;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
function TCXXStrSecurity.TransNumberToString(const strText: string): string;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
var
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
i:word;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
begin
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
Result := '';
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
for i := 0 to Length(strText) div 2 - 1 do
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
begin
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
Result := Result +CHR(StrToInt('$'+Copy(strText,i*2+1,2)));
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
end;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
end;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
function TCXXStrSecurity.TransOneByte(const strText: string): string;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
var
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
i,len:word;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
t:char;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
pch:PChar;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
begin
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
pch := PChar(strText);
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
len := Length(strText);
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
for i := 0 to len div 2 - 1 do
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
begin
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
t := pch[2*i];
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
pch[2*i] := pch[2*i+1];
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
pch[2*i+1] := t;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
end;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
Result := String(pch);
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
end;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
function TCXXStrSecurity.TransStringToNumber(const strText: string): string;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
var
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
len,i:Word;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
str:string;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
begin
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
len := Length(strText);
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
str := '';
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
for i := 1 to len do
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
begin
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
str := str + IntToHex(Ord(strText[i]),2);
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
end;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
Result := str;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
end;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
function TCXXStrSecurity.XORString(const strText: string): string;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
var
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
len,k:word;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
b:Byte;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
begin
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
Result := '';
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
len := Length(strText);
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
for k := 1 to len do
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
begin
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
b := Ord(strText[k]);
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
if k mod 2 =0 then
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
b := b xor k
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
else
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
b := b xor (len-k);
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
Result := Result + CHR(b);
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
end;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
end;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
function TCXXStrSecurity.DecodeString(const strPassword: string;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
const isByteStr: boolean): string;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
begin
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
isByteResult := isByteStr;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
Result := DecodeString(strPassword);
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
end;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
function TCXXStrSecurity.EncodeString(const strText: string;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
const isByteStr: boolean): string;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
begin
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
isByteResult := isByteStr;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
Result := EncodeString(strText);
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
end;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
end.
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
5、 应用适应器源码:
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
//------------------------------------------------------------------------------
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
//
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
// 产品名称:自有版权的字符串加密算法
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
// 产品简介:将字符串按自行独立设计的加密算法进行加、解密处理
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
// 产品作者:成晓旭
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
// E-Main: CXXSoft@sohu.com
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
// 产品版本:1.0版
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
// 版权所有:成晓旭
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
// 备注: 任何人使用此类时,请保留此段自述文件,谢谢!
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
// 单元文件:unSecurityAdapter.pas
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
// 单元说明:算法接口类TCXXStrSecurity的定义及实现
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
// 开发时间:2006-06-27
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
// 增加接口类,封闭对算法类的管理细节,以方便客户使用
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
//------------------------------------------------------------------------------
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
unit unSecurityAdapter;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
interface
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
uses
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
unSecurity;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
type
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
TSecurityAdapter = class
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
private
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
public
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
//字符串加密方法
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
class function EncodeString(const strText:string):string;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
//字符串解密方法
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
class function DecodeString(const strPassword:string):string;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
end;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
implementation
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
var
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
security:TCXXStrSecurity;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedBlockStart.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedBlock.gif)
...{ TSecurityAdapter }
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
class function TSecurityAdapter.DecodeString(
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
const strPassword: string): string;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
begin
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
Result := '';
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
if Assigned(security) then
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
Result := security.DecodeString(strPassword,true);
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
end;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
class function TSecurityAdapter.EncodeString(const strText: string): string;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
begin
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
Result := '';
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
if Assigned(security) then
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
Result := security.EncodeString(strText,true);
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
end;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
initialization
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
security := TCXXStrSecurity.Create(false);
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
finalization
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
security.Free();
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
security := nil;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
end.
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1109356
自己独立设计的字符串加密算法 作者:成晓旭这是本人自行设计的第一个数据加密算法,当初是想设计成分组的对称加密算法,但后来工作一忙,就没有实现,就草草完成便开始应用起来了。但是目前的混淆度已经能够满足绝大多数的简单加密应用。1、 简介:设计一个算法,对字符串进行加密和解决,要求有一定的混淆度,并且,无须复杂的密钥管理。为简化应用,我将混淆码(类似于密钥)直接混淆存储在加密后密文中。2、 算法设计:开始想将此算法设计成分组的对称加密算法,所以在算法的核心处理轮尽可能地选择"对称"的计算方法:比较异或、字节内转换、对称倒。此算法设计成三大步骤:输入调整,核心加、解密过程,输出调整。1、 输入调整:就是用混淆码将源串调整成长度为8的整数倍的新串,以作为核心处理过程的输入。2、 输出调整:就是将通过核心处理过程计算后的结果串,按输出要求进行转换。加密时,就是转换成希望的密文串;解密时,转换成希望的明文串。3、 核心处理过程:是整个算法的核心过程,主要包括位异或、左右倒置、交换字节、移位等几个子过程。3.1:位异或:对串的每一个Byte位进行异或运算; 3.2:左右倒置:对串进行镜像对称处理,将串分成前后两部分,完成对换。 3.3:交换字节:对每一个Byte的前、后半字节进行镜像对称倒置。 3.4:移位:对串进行移位处理。具体的加、解密处理过程如下图所示:
3、 算法点评:1、 此算法没有实现正在的对称加密算法。只需要对输入、输出调整过程进行优化,并且,重新调整核心处理过程的计算顺序,就可以了。2、 源码演示的版本有些缺陷:最大处理串长度为255,应该进行优化;并且混淆码过于粗糙,也有待优化;对混淆码的应用不全面,处理之后,混淆码主要集中在密文的部分区段,分布不够均匀,混淆程度也不够充分。4、 算法源码:
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
//------------------------------------------------------------------------------
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
//
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
// 产品名称:自有版权的字符串加密算法
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
// 产品简介:将字符串按自行独立设计的加密算法进行加、解密处理
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
// 产品作者:成晓旭
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
// E-Main: CXXSoft@sohu.com
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
// 产品版本:1.0版
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
// 版权所有:成晓旭
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
// 备注: 任何人使用此类时,请保留此段自述文件,谢谢!
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
// 单元文件:unSecurity.pas
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
// 单元说明:算法类TCXXStrSecurity的定义及实现
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
// 开发时间:2004-12-25
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
// 设计本加、解密算法,并用原型程序测试、实现
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
// 修改时间:2005-01-15
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
// 增加加、解密返回、输入串码制属性更新功能
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
//------------------------------------------------------------------------------
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
unit unSecurity;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
interface
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
uses
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
SysUtils;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
type
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
TCXXStrSecurity = class
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
private
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
//本算法的加密最终结果标志(true:字节码串/false:字符串)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
isByteResult:boolean;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
//本算法的字符串长度位数目(16制式)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
lenStrWidth:Byte;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
//本算法要求的最小模糊字符串
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
minTextLen:Word;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
//本算法处理的最大串长度
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
maxStrLen:Word;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
//本算法的串移位位数
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
bitStrMoved:Byte;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
//根据本算法的处理规则,以加密前明文进行串调整
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
function TransFillText(const strText:string):string;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
//根据本算法的处理规则,以加密后密文进行串调整
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
function ReTransFillText(const strText:string; const mvSize: Byte):string;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
//将字符串转换成Ascii码串的方法
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
function TransStringToNumber(const strText:string):string;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
//将一个字节的前后两个半字节互换的方法
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
function ChangeNumber(const byt:Byte):Byte;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
//将字符串循环移动的方法(左移/右移)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
function MoveTextByCircle(const strText:string;const mvSize:Byte;const isFromHead:boolean):string;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
//将字符串内每个字节的前后两个半字节互换的方法
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
function ExChangeNumber(const strText:string):string;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
//将字符串进行前后倒置的方法
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
function RevertString(const strText:string):string;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
//将字符串的相邻两位进行调换的方法
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
function TransOneByte(const strText:string):string;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
//将Ascii码串转换后常规字符串的方法
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
function TransNumberToString(const strText:string):string;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
//将字符串进行位异或处理方法
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
function XORString(const strText:string):string;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
public
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
//本算法的加、解密处理成功标志(true:成功,否则:失败)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
isOK:boolean;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
//本算法的处理过程消息
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
Msg:string;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
constructor Create(const isReturnByte:boolean);
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
//字符串加密方法
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
function EncodeString(const strText:string):string;overload;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
//字符串加密方法
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
function EncodeString(const strText:string;const isByteStr:boolean):string;overload;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
//字符串解密方法
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
function DecodeString(const strPassword:string):string;overload;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
//字符串解密方法
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
function DecodeString(const strPassword:string;const isByteStr:boolean):string;overload;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
end;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
implementation
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedBlockStart.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedBlock.gif)
...{ TCXXStrSecurity }
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
function TCXXStrSecurity.ChangeNumber(const byt: Byte): Byte;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
begin
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
Result := (byt mod 16) * 16 + (byt div 16);
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
end;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
constructor TCXXStrSecurity.Create(const isReturnByte:boolean);
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
const
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
default_MoveBit = 5;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
begin
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
minTextLen := 6;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
lenStrWidth := 2;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
maxStrLen := 255;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
bitStrMoved := 5;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
isByteResult := isReturnByte;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
end;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
function TCXXStrSecurity.EncodeString(const strText: string): string;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
var
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
str:string;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
begin
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
str := '';
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
str := TransFillText(strText);
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
str := XORString(str);
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
str := RevertString(str);
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
str := TransOneByte(str);
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
str := TransStringToNumber(str);
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
str := ExChangeNumber(str);
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
str := MoveTextByCircle(str,bitStrMoved,true);
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
if NOT isByteResult then
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
str := TransNumberToString(str);
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
Result := str;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
end;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
function TCXXStrSecurity.ExChangeNumber(const strText: string): string;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
var
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
len,i:Word;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
begin
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
len := Length(strText);
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
for i := 0 to len div 2 - 1 do
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
begin
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
Result := Result + IntToHex(ChangeNumber(StrToInt('$'+Copy(strText,i*2+1,2))),2);
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
end;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
end;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
function TCXXStrSecurity.MoveTextByCircle(const strText: string;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
const mvSize: Byte; const isFromHead: boolean): string;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
var
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
len:Word;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
begin
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
len := Length(strText);
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
if isFromHead then
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
Result := Copy(strText,mvSize+1,len-mvSize) + Copy(strText,1,mvSize)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
else
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
Result := Copy(strText,len-mvSize+1,mvSize) + Copy(strText,1,len-mvSize);
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
end;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
function TCXXStrSecurity.DecodeString(const strPassword: string): string;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
var
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
str:string;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
begin
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
str := strPassword;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
if NOT isByteResult then
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
str := TransStringToNumber(str);
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
str := MoveTextByCircle(str,bitStrMoved,false);
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
str := ExChangeNumber(str);
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
str := TransNumberToString(str);
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
str := TransOneByte(str);
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
str := RevertString(str);
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
str := XORString(str);
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
str := ReTransFillText(str,bitStrMoved);
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
Result := str;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
end;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
function TCXXStrSecurity.ReTransFillText(const strText: string; const mvSize: Byte): string;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
var
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
len:Word;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
begin
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
len := StrToInt('$'+Copy(strText,1,lenStrWidth));
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
Result := Copy(strText,lenStrWidth+1,len);
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
end;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
function TCXXStrSecurity.RevertString(const strText: string): string;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
var
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
i,len:word;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
t:char;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
pch:PChar;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
begin
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
pch := PChar(strText);
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
len := Length(strText);
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
for i := 0 to len div 2 -1 do
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
begin
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
//ChangeChar(pch[i],pch[len-1-i]);
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
t := pch[i];
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
pch[i] := pch[len-1-i];
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
pch[len-1-i] := t;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
end;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
Result := String(pch);
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
end;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
function TCXXStrSecurity.TransFillText(const strText: string): string;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
var
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
i,oLen:Word;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
str,strPower:string;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
begin
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
strPower := FormatDateTime('HHMMSS',Now());
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
//strPower := RevertString(strPower);
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
//strPower := TransOneByte(strPower);
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
str := strText;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
oLen := Length(str);
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
i := 1;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
while(Length(str) > minTextLen) do
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
begin
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
str := str + strPower[i];
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
Inc(i);
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
end;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
Result := IntToHex(oLen,lenStrWidth)+str;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
end;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
function TCXXStrSecurity.TransNumberToString(const strText: string): string;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
var
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
i:word;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
begin
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
Result := '';
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
for i := 0 to Length(strText) div 2 - 1 do
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
begin
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
Result := Result +CHR(StrToInt('$'+Copy(strText,i*2+1,2)));
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
end;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
end;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
function TCXXStrSecurity.TransOneByte(const strText: string): string;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
var
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
i,len:word;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
t:char;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
pch:PChar;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
begin
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
pch := PChar(strText);
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
len := Length(strText);
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
for i := 0 to len div 2 - 1 do
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
begin
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
t := pch[2*i];
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
pch[2*i] := pch[2*i+1];
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
pch[2*i+1] := t;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
end;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
Result := String(pch);
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
end;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
function TCXXStrSecurity.TransStringToNumber(const strText: string): string;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
var
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
len,i:Word;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
str:string;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
begin
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
len := Length(strText);
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
str := '';
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
for i := 1 to len do
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
begin
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
str := str + IntToHex(Ord(strText[i]),2);
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
end;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
Result := str;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
end;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
function TCXXStrSecurity.XORString(const strText: string): string;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
var
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
len,k:word;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
b:Byte;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
begin
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
Result := '';
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
len := Length(strText);
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
for k := 1 to len do
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
begin
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
b := Ord(strText[k]);
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
if k mod 2 =0 then
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
b := b xor k
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
else
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
b := b xor (len-k);
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
Result := Result + CHR(b);
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
end;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
end;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
function TCXXStrSecurity.DecodeString(const strPassword: string;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
const isByteStr: boolean): string;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
begin
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
isByteResult := isByteStr;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
Result := DecodeString(strPassword);
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
end;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
function TCXXStrSecurity.EncodeString(const strText: string;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
const isByteStr: boolean): string;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
begin
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
isByteResult := isByteStr;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
Result := EncodeString(strText);
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
end;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
end.
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
5、 应用适应器源码:
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
//------------------------------------------------------------------------------
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
//
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
// 产品名称:自有版权的字符串加密算法
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
// 产品简介:将字符串按自行独立设计的加密算法进行加、解密处理
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
// 产品作者:成晓旭
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
// E-Main: CXXSoft@sohu.com
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
// 产品版本:1.0版
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
// 版权所有:成晓旭
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
// 备注: 任何人使用此类时,请保留此段自述文件,谢谢!
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
// 单元文件:unSecurityAdapter.pas
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
// 单元说明:算法接口类TCXXStrSecurity的定义及实现
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
// 开发时间:2006-06-27
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
// 增加接口类,封闭对算法类的管理细节,以方便客户使用
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
//------------------------------------------------------------------------------
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
unit unSecurityAdapter;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
interface
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
uses
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
unSecurity;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
type
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
TSecurityAdapter = class
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
private
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
public
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
//字符串加密方法
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
class function EncodeString(const strText:string):string;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
//字符串解密方法
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
class function DecodeString(const strPassword:string):string;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
end;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
implementation
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
var
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
security:TCXXStrSecurity;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedBlockStart.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedBlock.gif)
...{ TSecurityAdapter }
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
class function TSecurityAdapter.DecodeString(
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
const strPassword: string): string;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
begin
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
Result := '';
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
if Assigned(security) then
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
Result := security.DecodeString(strPassword,true);
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
end;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
class function TSecurityAdapter.EncodeString(const strText: string): string;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
begin
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
Result := '';
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
if Assigned(security) then
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
Result := security.EncodeString(strText,true);
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
end;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
initialization
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
security := TCXXStrSecurity.Create(false);
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
finalization
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
security.Free();
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
security := nil;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
end.
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1109356
相关文章推荐
- 自己独立设计的字符串加密算法
- 自己独立设计的字符串加密算法
- 自己独立设计的字符串加密算法
- 自己独立设计的字符串加密算法
- 自己独立设计的字符串加密算法
- 自己独立设计的字符串加密算法
- 自己独立设计的字符串加密算法
- 自己独立设计的字符串加密算法
- 自己独立设计的字符串加密算法
- 自己独立设计的字符串加密算法
- 自己独立设计的字符串加密算法
- 自己独立设计的字符串加密算法
- 自己独立设计的字符串加密算法
- 自己独立设计的字符串加密算法
- 自己独立设计开发的一个fullpage+css3响应式页面
- 第三章 设计自己TLS类CPP文件 Windows程序设计 王艳平版
- 基于高斯算法 CSDN挑战编程题自己尝试的设计思路
- 如何提高自己的设计水平(一)
- 如何提高自己的设计水平(一)
- 如何提高自己的设计水平(四)