<iframe align="top" marginwidth="0" marginheight="0" src="http://www.zealware.com/csdnblog01.html" frameborder="0" width="728" scrolling="no" height="90"></iframe>

自己独立设计的字符串加密算法

作者:成晓旭

这是本人自行设计的第一个数据加密算法,当初是想设计成分组的对称加密算法,但后来工作一忙,就没有实现,就草草完成便开始应用起来了。但是目前的混淆度已经能够满足绝大多数的简单加密应用。

1、 简介:

设计一个算法,对字符串进行加密和解决,要求有一定的混淆度,并且,无须复杂的**管理。为简化应用,我将混淆码(类似于**)直接混淆存储在加密后密文中。

2、 算法设计:

开始想将此算法设计成分组的对称加密算法,所以在算法的核心处理轮尽可能地选择“对称”的计算方法:比较异或、字节内转换、对称倒。

此算法设计成三大步骤:输入调整,核心加、解密过程,输出调整。

1、 输入调整:就是用混淆码将源串调整成长度为8的整数倍的新串,以作为核心处理过程的输入。

2、 输出调整:就是将通过核心处理过程计算后的结果串,按输出要求进行转换。加密时,就是转换成希望的密文串;解密时,转换成希望的明文串。

3、 核心处理过程:是整个算法的核心过程,主要包括位异或、左右倒置、交换字节、移位等几个子过程。

3.1:位异或:对串的每一个Byte位进行异或运算;

3.2:左右倒置:对串进行镜像对称处理,将串分成前后两部分,完成对换。

3.3:交换字节:对每一个Byte的前、后半字节进行镜像对称倒置。

3.4:移位:对串进行移位处理。

具体的加、解密处理过程如下图所示:

自己独立设计的字符串加密算法

3、 算法点评:

1、 此算法没有实现正在的对称加密算法。只需要对输入、输出调整过程进行优化,并且,重新调整核心处理过程的计算顺序,就可以了。

2、 源码演示的版本有些缺陷:最大处理串长度为255,应该进行优化;并且混淆码过于粗糙,也有待优化;对混淆码的应用不全面,处理之后,混淆码主要集中在密文的部分区段,分布不够均匀,混淆程度也不够充分。

4、 算法源码:

自己独立设计的字符串加密算法//------------------------------------------------------------------------------
自己独立设计的字符串加密算法
//
自己独立设计的字符串加密算法
//产品名称:自有版权的字符串加密算法
自己独立设计的字符串加密算法
//产品简介:将字符串按自行独立设计的加密算法进行加、解密处理
自己独立设计的字符串加密算法
//产品作者:成晓旭
自己独立设计的字符串加密算法
//E-Main:[email protected]
自己独立设计的字符串加密算法
//产品版本:1.0版
自己独立设计的字符串加密算法
//版权所有:成晓旭
自己独立设计的字符串加密算法
//备注:任何人使用此类时,请保留此段自述文件,谢谢!
自己独立设计的字符串加密算法
//单元文件:unSecurity.pas
自己独立设计的字符串加密算法
//单元说明:算法类TCXXStrSecurity的定义及实现
自己独立设计的字符串加密算法
//开发时间:2004-12-25
自己独立设计的字符串加密算法
//设计本加、解密算法,并用原型程序测试、实现
自己独立设计的字符串加密算法
//修改时间:2005-01-15
自己独立设计的字符串加密算法
//增加加、解密返回、输入串码制属性更新功能
自己独立设计的字符串加密算法
//------------------------------------------------------------------------------
自己独立设计的字符串加密算法
unitunSecurity;
自己独立设计的字符串加密算法
自己独立设计的字符串加密算法
interface
自己独立设计的字符串加密算法uses
自己独立设计的字符串加密算法SysUtils;
自己独立设计的字符串加密算法type
自己独立设计的字符串加密算法TCXXStrSecurity
=class
自己独立设计的字符串加密算法
private
自己独立设计的字符串加密算法
//本算法的加密最终结果标志(true:字节码串/false:字符串)
自己独立设计的字符串加密算法
isByteResult:boolean;
自己独立设计的字符串加密算法
//本算法的字符串长度位数目(16制式)
自己独立设计的字符串加密算法
lenStrWidth:Byte;
自己独立设计的字符串加密算法
//本算法要求的最小模糊字符串
自己独立设计的字符串加密算法
minTextLen:Word;
自己独立设计的字符串加密算法
//本算法处理的最大串长度
自己独立设计的字符串加密算法
maxStrLen:Word;
自己独立设计的字符串加密算法
//本算法的串移位位数
自己独立设计的字符串加密算法
bitStrMoved:Byte;
自己独立设计的字符串加密算法
//根据本算法的处理规则,以加密前明文进行串调整
自己独立设计的字符串加密算法
functionTransFillText(conststrText:string):string;
自己独立设计的字符串加密算法
//根据本算法的处理规则,以加密后密文进行串调整
自己独立设计的字符串加密算法
functionReTransFillText(conststrText:string;constmvSize:Byte):string;
自己独立设计的字符串加密算法
//将字符串转换成Ascii码串的方法
自己独立设计的字符串加密算法
functionTransStringToNumber(conststrText:string):string;
自己独立设计的字符串加密算法
//将一个字节的前后两个半字节互换的方法
自己独立设计的字符串加密算法
functionChangeNumber(constbyt:Byte):Byte;
自己独立设计的字符串加密算法
//将字符串循环移动的方法(左移/右移)
自己独立设计的字符串加密算法
functionMoveTextByCircle(conststrText:string;constmvSize:Byte;constisFromHead:boolean):string;
自己独立设计的字符串加密算法
//将字符串内每个字节的前后两个半字节互换的方法
自己独立设计的字符串加密算法
functionExChangeNumber(conststrText:string):string;
自己独立设计的字符串加密算法
//将字符串进行前后倒置的方法
自己独立设计的字符串加密算法
functionRevertString(conststrText:string):string;
自己独立设计的字符串加密算法
//将字符串的相邻两位进行调换的方法
自己独立设计的字符串加密算法
functionTransOneByte(conststrText:string):string;
自己独立设计的字符串加密算法
//将Ascii码串转换后常规字符串的方法
自己独立设计的字符串加密算法
functionTransNumberToString(conststrText:string):string;
自己独立设计的字符串加密算法
//将字符串进行位异或处理方法
自己独立设计的字符串加密算法
functionXORString(conststrText:string):string;
自己独立设计的字符串加密算法
public
自己独立设计的字符串加密算法
//本算法的加、解密处理成功标志(true:成功,否则:失败)
自己独立设计的字符串加密算法
isOK:boolean;
自己独立设计的字符串加密算法
//本算法的处理过程消息
自己独立设计的字符串加密算法
Msg:string;
自己独立设计的字符串加密算法constructorCreate(
constisReturnByte:boolean);
自己独立设计的字符串加密算法
//字符串加密方法
自己独立设计的字符串加密算法
functionEncodeString(conststrText:string):string;overload;
自己独立设计的字符串加密算法
//字符串加密方法
自己独立设计的字符串加密算法
functionEncodeString(conststrText:string;constisByteStr:boolean):string;overload;
自己独立设计的字符串加密算法
//字符串解密方法
自己独立设计的字符串加密算法
functionDecodeString(conststrPassword:string):string;overload;
自己独立设计的字符串加密算法
//字符串解密方法
自己独立设计的字符串加密算法
functionDecodeString(conststrPassword:string;constisByteStr:boolean):string;overload;
自己独立设计的字符串加密算法end;
自己独立设计的字符串加密算法implementation
自己独立设计的字符串加密算法
自己独立设计的字符串加密算法自己独立设计的字符串加密算法
...{TCXXStrSecurity}
自己独立设计的字符串加密算法
自己独立设计的字符串加密算法functionTCXXStrSecurity.ChangeNumber(
constbyt:Byte):Byte;
自己独立设计的字符串加密算法begin
自己独立设计的字符串加密算法Result:
=(bytmod16)*16+(bytdiv16);
自己独立设计的字符串加密算法end;
自己独立设计的字符串加密算法
自己独立设计的字符串加密算法constructorTCXXStrSecurity.Create(
constisReturnByte:boolean);
自己独立设计的字符串加密算法
const
自己独立设计的字符串加密算法default_MoveBit
=5;
自己独立设计的字符串加密算法begin
自己独立设计的字符串加密算法minTextLen:
=6;
自己独立设计的字符串加密算法lenStrWidth:
=2;
自己独立设计的字符串加密算法maxStrLen:
=255;
自己独立设计的字符串加密算法bitStrMoved:
=5;
自己独立设计的字符串加密算法isByteResult:
=isReturnByte;
自己独立设计的字符串加密算法end;
自己独立设计的字符串加密算法
自己独立设计的字符串加密算法functionTCXXStrSecurity.EncodeString(
conststrText:string):string;
自己独立设计的字符串加密算法var
自己独立设计的字符串加密算法str:string;
自己独立设计的字符串加密算法begin
自己独立设计的字符串加密算法str:
='';
自己独立设计的字符串加密算法str:
=TransFillText(strText);
自己独立设计的字符串加密算法str:
=XORString(str);
自己独立设计的字符串加密算法str:
=RevertString(str);
自己独立设计的字符串加密算法str:
=TransOneByte(str);
自己独立设计的字符串加密算法str:
=TransStringToNumber(str);
自己独立设计的字符串加密算法str:
=ExChangeNumber(str);
自己独立设计的字符串加密算法str:
=MoveTextByCircle(str,bitStrMoved,true);
自己独立设计的字符串加密算法
ifNOTisByteResultthen
自己独立设计的字符串加密算法str:
=TransNumberToString(str);
自己独立设计的字符串加密算法Result:
=str;
自己独立设计的字符串加密算法end;
自己独立设计的字符串加密算法
自己独立设计的字符串加密算法functionTCXXStrSecurity.ExChangeNumber(
conststrText:string):string;
自己独立设计的字符串加密算法var
自己独立设计的字符串加密算法len,i:Word;
自己独立设计的字符串加密算法begin
自己独立设计的字符串加密算法len:
=Length(strText);
自己独立设计的字符串加密算法
fori:=0tolendiv2-1do
自己独立设计的字符串加密算法begin
自己独立设计的字符串加密算法Result:
=Result+IntToHex(ChangeNumber(StrToInt('$'+Copy(strText,i*2+1,2))),2);
自己独立设计的字符串加密算法end;
自己独立设计的字符串加密算法end;
自己独立设计的字符串加密算法
自己独立设计的字符串加密算法functionTCXXStrSecurity.MoveTextByCircle(
conststrText:string;
自己独立设计的字符串加密算法
constmvSize:Byte;constisFromHead:boolean):string;
自己独立设计的字符串加密算法var
自己独立设计的字符串加密算法len:Word;
自己独立设计的字符串加密算法begin
自己独立设计的字符串加密算法len:
=Length(strText);
自己独立设计的字符串加密算法
ifisFromHeadthen
自己独立设计的字符串加密算法Result:
=Copy(strText,mvSize+1,len-mvSize)+Copy(strText,1,mvSize)
自己独立设计的字符串加密算法
else
自己独立设计的字符串加密算法Result:
=Copy(strText,len-mvSize+1,mvSize)+Copy(strText,1,len-mvSize);
自己独立设计的字符串加密算法end;
自己独立设计的字符串加密算法
自己独立设计的字符串加密算法functionTCXXStrSecurity.DecodeString(
conststrPassword:string):string;
自己独立设计的字符串加密算法var
自己独立设计的字符串加密算法str:string;
自己独立设计的字符串加密算法begin
自己独立设计的字符串加密算法str:
=strPassword;
自己独立设计的字符串加密算法
ifNOTisByteResultthen
自己独立设计的字符串加密算法str:
=TransStringToNumber(str);
自己独立设计的字符串加密算法str:
=MoveTextByCircle(str,bitStrMoved,false);
自己独立设计的字符串加密算法str:
=ExChangeNumber(str);
自己独立设计的字符串加密算法str:
=TransNumberToString(str);
自己独立设计的字符串加密算法str:
=TransOneByte(str);
自己独立设计的字符串加密算法str:
=RevertString(str);
自己独立设计的字符串加密算法str:
=XORString(str);
自己独立设计的字符串加密算法str:
=ReTransFillText(str,bitStrMoved);
自己独立设计的字符串加密算法Result:
=str;
自己独立设计的字符串加密算法end;
自己独立设计的字符串加密算法
自己独立设计的字符串加密算法functionTCXXStrSecurity.ReTransFillText(
conststrText:string;constmvSize:Byte):string;
自己独立设计的字符串加密算法var
自己独立设计的字符串加密算法len:Word;
自己独立设计的字符串加密算法begin
自己独立设计的字符串加密算法len:
=StrToInt('$'+Copy(strText,1,lenStrWidth));
自己独立设计的字符串加密算法Result:
=Copy(strText,lenStrWidth+1,len);
自己独立设计的字符串加密算法end;
自己独立设计的字符串加密算法
自己独立设计的字符串加密算法functionTCXXStrSecurity.RevertString(
conststrText:string):string;
自己独立设计的字符串加密算法var
自己独立设计的字符串加密算法i,len:word;
自己独立设计的字符串加密算法t:
char;
自己独立设计的字符串加密算法pch:PChar;
自己独立设计的字符串加密算法begin
自己独立设计的字符串加密算法pch:
=PChar(strText);
自己独立设计的字符串加密算法len:
=Length(strText);
自己独立设计的字符串加密算法
fori:=0tolendiv2-1do
自己独立设计的字符串加密算法begin
自己独立设计的字符串加密算法
//ChangeChar(pch[i],pch[len-1-i]);
自己独立设计的字符串加密算法
t:=pch[i];
自己独立设计的字符串加密算法pch[i]:
=pch[len-1-i];
自己独立设计的字符串加密算法pch[len
-1-i]:=t;
自己独立设计的字符串加密算法end;
自己独立设计的字符串加密算法Result:
=String(pch);
自己独立设计的字符串加密算法end;
自己独立设计的字符串加密算法
自己独立设计的字符串加密算法functionTCXXStrSecurity.TransFillText(
conststrText:string):string;
自己独立设计的字符串加密算法var
自己独立设计的字符串加密算法i,oLen:Word;
自己独立设计的字符串加密算法str,strPower:string;
自己独立设计的字符串加密算法begin
自己独立设计的字符串加密算法strPower:
=FormatDateTime('HHMMSS',Now());
自己独立设计的字符串加密算法
//strPower:=RevertString(strPower);
自己独立设计的字符串加密算法
//strPower:=TransOneByte(strPower);
自己独立设计的字符串加密算法
str:=strText;
自己独立设计的字符串加密算法oLen:
=Length(str);
自己独立设计的字符串加密算法i:
=1;
自己独立设计的字符串加密算法
while(Length(str)minTextLen)do
自己独立设计的字符串加密算法begin
自己独立设计的字符串加密算法str:
=str+strPower[i];
自己独立设计的字符串加密算法Inc(i);
自己独立设计的字符串加密算法end;
自己独立设计的字符串加密算法Result:
=IntToHex(oLen,lenStrWidth)+str;
自己独立设计的字符串加密算法end;
自己独立设计的字符串加密算法
自己独立设计的字符串加密算法functionTCXXStrSecurity.TransNumberToString(
conststrText:string):string;
自己独立设计的字符串加密算法var
自己独立设计的字符串加密算法i:word;
自己独立设计的字符串加密算法begin
自己独立设计的字符串加密算法Result:
='';
自己独立设计的字符串加密算法
fori:=0toLength(strText)div2-1do
自己独立设计的字符串加密算法begin
自己独立设计的字符串加密算法Result:
=Result+CHR(StrToInt('$'+Copy(strText,i*2+1,2)));
自己独立设计的字符串加密算法end;
自己独立设计的字符串加密算法end;
自己独立设计的字符串加密算法
自己独立设计的字符串加密算法functionTCXXStrSecurity.TransOneByte(
conststrText:string):string;
自己独立设计的字符串加密算法var
自己独立设计的字符串加密算法i,len:word;
自己独立设计的字符串加密算法t:
char;
自己独立设计的字符串加密算法pch:PChar;
自己独立设计的字符串加密算法begin
自己独立设计的字符串加密算法pch:
=PChar(strText);
自己独立设计的字符串加密算法len:
=Length(strText);
自己独立设计的字符串加密算法
fori:=0tolendiv2-1do
自己独立设计的字符串加密算法begin
自己独立设计的字符串加密算法t:
=pch[2*i];
自己独立设计的字符串加密算法pch[
2*i]:=pch[2*i+1];
自己独立设计的字符串加密算法pch[
2*i+1]:=t;
自己独立设计的字符串加密算法end;
自己独立设计的字符串加密算法Result:
=String(pch);
自己独立设计的字符串加密算法end;
自己独立设计的字符串加密算法
自己独立设计的字符串加密算法functionTCXXStrSecurity.TransStringToNumber(
conststrText:string):string;
自己独立设计的字符串加密算法var
自己独立设计的字符串加密算法len,i:Word;
自己独立设计的字符串加密算法str:string;
自己独立设计的字符串加密算法begin
自己独立设计的字符串加密算法len:
=Length(strText);
自己独立设计的字符串加密算法str:
='';
自己独立设计的字符串加密算法
fori:=1tolendo
自己独立设计的字符串加密算法begin
自己独立设计的字符串加密算法str:
=str+IntToHex(Ord(strText[i]),2);
自己独立设计的字符串加密算法end;
自己独立设计的字符串加密算法Result:
=str;
自己独立设计的字符串加密算法end;
自己独立设计的字符串加密算法
自己独立设计的字符串加密算法functionTCXXStrSecurity.XORString(
conststrText:string):string;
自己独立设计的字符串加密算法var
自己独立设计的字符串加密算法len,k:word;
自己独立设计的字符串加密算法b:Byte;
自己独立设计的字符串加密算法begin
自己独立设计的字符串加密算法Result:
='';
自己独立设计的字符串加密算法len:
=Length(strText);
自己独立设计的字符串加密算法
fork:=1tolendo
自己独立设计的字符串加密算法begin
自己独立设计的字符串加密算法b:
=Ord(strText[k]);
自己独立设计的字符串加密算法
ifkmod2=0then
自己独立设计的字符串加密算法b:
=bxork
自己独立设计的字符串加密算法
else
自己独立设计的字符串加密算法b:
=bxor(len-k);
自己独立设计的字符串加密算法Result:
=Result+CHR(b);
自己独立设计的字符串加密算法end;
自己独立设计的字符串加密算法end;
自己独立设计的字符串加密算法
自己独立设计的字符串加密算法functionTCXXStrSecurity.DecodeString(
conststrPassword:string;
自己独立设计的字符串加密算法
constisByteStr:boolean):string;
自己独立设计的字符串加密算法begin
自己独立设计的字符串加密算法isByteResult:
=isByteStr;
自己独立设计的字符串加密算法Result:
=DecodeString(strPassword);
自己独立设计的字符串加密算法end;
自己独立设计的字符串加密算法
自己独立设计的字符串加密算法functionTCXXStrSecurity.EncodeString(
conststrText:string;
自己独立设计的字符串加密算法
constisByteStr:boolean):string;
自己独立设计的字符串加密算法begin
自己独立设计的字符串加密算法isByteResult:
=isByteStr;
自己独立设计的字符串加密算法Result:
=EncodeString(strText);
自己独立设计的字符串加密算法end;
自己独立设计的字符串加密算法
自己独立设计的字符串加密算法end

相关文章:

  • 2021-12-31
  • 2022-12-23
  • 2021-12-18
  • 2022-01-07
  • 2022-12-23
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2021-08-20
  • 2022-01-27
  • 2021-11-25
  • 2021-06-12
相关资源
相似解决方案