自己獨立設計的字符串加密算法
來源:互聯網網民 2007-09-15 05:03:09
評論自己獨立設計的字符串加密算法
作者:成曉旭
這是本人自行設計的第一個數據加密算法,當初是想設計成分組的對稱加密算法,但後來工作一忙,就沒有實現,就草草完成便開始應用起來了。但是目前的混淆度已經能夠滿足絕大多數的簡單加密應用。
1、 簡介:
設計一個算法,對字符串進行加密和解決,要求有一定的混淆度,並且,無須複雜的密鑰管理。爲簡化應用,我將混淆碼(類似于密鑰)直接混淆存儲在加密後密文中。
2、 算法設計:
開始想將此算法設計成分組的對稱加密算法,所以在算法的核心處理輪盡可能地選擇“對稱”的計算方法:比較異或、字節內轉換、對稱倒。
此算法設計成三大步驟:輸入調整,核心加、解密過程,輸出調整。
1、 輸入調整:就是用混淆碼將源串調整成長度爲8的整數倍的新串,以作爲核心處理過程的輸入。
2、 輸出調整:就是將通過核心處理過程計算後的結果串,按輸出要求進行轉換。加密時,就是轉換成希望的密文串;解密時,轉換成希望的明文串。
3、 核心處理過程:是整個算法的核心過程,主要包括位異或、左右倒置、交換字節、移位等幾個子過程。
3.1:位異或:對串的每一個Byte位進行異或運算;
3.2:左右倒置:對串進行鏡像對稱處理,將串分成前後兩部分,完成對換。
3.3:交換字節:對每一個Byte的前、後半字節進行鏡像對稱倒置。
3.4:移位:對串進行移位處理。
具體的加、解密處理過程如下圖所示:
3、 算法點評:
1、 此算法沒有實現正在的對稱加密算法。只需要對輸入、輸出調整過程進行優化,並且,重新調整核心處理過程的計算順序,就可以了。
2、 源碼演示的版本有些缺陷:最大處理串長度爲255,應該進行優化;並且混淆碼過于粗糙,也有待優化;對混淆碼的應用不全面,處理之後,混淆碼主要集中在密文的部分區段,分布不夠均勻,混淆程度也不夠充分。
4、 算法源碼:
//------------------------------------------------------------------------------
//
// 産品名稱:自有版權的字符串加密算法
// 産品簡介:將字符串按自行獨立設計的加密算法進行加、解密處理
// 産品作者:成曉旭
// E-Main: CXXSoft@sohu.com
// 産品版本:1.0版
// 版權所有:成曉旭
// 備注: 任何人使用此類時,請保留此段自述文件,謝謝!
// 單元文件:unSecurity.pas
// 單元說明:算法類TCXXStrSecurity的定義及實現
// 開發時間:2004-12-25
// 設計本加、解密算法,並用原型程序測試、實現
// 修改時間:2005-01-15
// 增加加、解密返回、輸入串碼制屬性更新功能
//------------------------------------------------------------------------------
unit unSecurity;
interface
uses
SysUtils;
type
TCXXStrSecurity = class
private
//本算法的加密最終結果標志(true:字節碼串/false:字符串)
isByteResult:boolean;
//本算法的字符串長度位數目(16制式)
lenStrWidth:Byte;
//本算法要求的最小模糊字符串
minTextLen:Word;
//本算法處理的最大串長度
maxStrLen:Word;
//本算法的串移位位數
bitStrMoved:Byte;
//根據本算法的處理規則,以加密前明文進行串調整
function TransFillText(const strText:string):string;
//根據本算法的處理規則,以加密後密文進行串調整
function ReTransFillText(const strText:string; const mvSize: Byte):string;
//將字符串轉換成Ascii碼串的方法
function TransStringToNumber(const strText:string):string;
//將一個字節的前後兩個半字節互換的方法
function ChangeNumber(const byt:Byte):Byte;
//將字符串循環移動的方法(左移/右移)
function MoveTextByCircle(const strText:string;const mvSize:Byte;const isFromHead:boolean):string;
//將字符串內每個字節的前後兩個半字節互換的方法
function ExChangeNumber(const strText:string):string;
//將字符串進行前後倒置的方法
function RevertString(const strText:string):string;
//將字符串的相鄰兩位進行調換的方法
function TransOneByte(const strText:string):string;
//將Ascii碼串轉換後常規字符串的方法
function TransNumberToString(const strText:string):string;
//將字符串進行位異或處理方法
function XORString(const strText:string):string;
public
//本算法的加、解密處理成功標志(true:成功,否則:失敗)
isOK:boolean;
//本算法的處理過程消息
Msg:string;
constructor Create(const isReturnByte:boolean);
//字符串加密方法
function EncodeString(const strText:string):string;overload;
//字符串加密方法
function EncodeString(const strText:string;const isByteStr:boolean):string;overload;
//字符串解密方法
function DecodeString(const strPassword:string):string;overload;
//字符串解密方法
function DecodeString(const strPassword:string;const isByteStr:boolean):string;overload;
end;
implementation
...{ TCXXStrSecurity }
function TCXXStrSecurity.ChangeNumber(const byt: Byte): Byte;
begin
Result := (byt mod 16) * 16 + (byt div 16);
end;
constructor TCXXStrSecurity.Create(const isReturnByte:boolean);
const
default_MoveBit = 5;
begin
minTextLen := 6;
lenStrWidth := 2;
maxStrLen := 255;
bitStrMoved := 5;
isByteResult := isReturnByte;
end;
function TCXXStrSecurity.EncodeString(const strText: 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);
if NOT isByteResult then
str := TransNumberToString(str);
Result := str;
end;
function TCXXStrSecurity.ExChangeNumber(const strText: string): string;
var
len,i:Word;
begin
len := Length(strText);
for i := 0 to len div 2 - 1 do
begin
Result := Result + IntToHex(ChangeNumber(StrToInt('$'+Copy(strText,i*2+1,2))),2);
end;
end;
function TCXXStrSecurity.MoveTextByCircle(const strText: string;
const mvSize: Byte; const isFromHead: boolean): string;
var
len:Word;
begin
len := Length(strText);
if isFromHead then
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;
function TCXXStrSecurity.DecodeString(const strPassword: string): string;
var
str:string;
begin
str := strPassword;
if NOT isByteResult then
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;
function TCXXStrSecurity.ReTransFillText(const strText: string; const mvSize: Byte): string;
var
len:Word;
begin
len := StrToInt('$'+Copy(strText,1,lenStrWidth));
Result := Copy(strText,lenStrWidth+1,len);
end;
function TCXXStrSecurity.RevertString(const strText: string): string;
var
i,len:word;
t:char;
pch:PChar;
begin
pch := PChar(strText);
len := Length(strText);
for i := 0 to len div 2 -1 do
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;
function TCXXStrSecurity.TransFillText(const strText: 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;
function TCXXStrSecurity.TransNumberToString(const strText: string): string;
var
i:word;
begin
Result := '';
for i := 0 to Length(strText) div 2 - 1 do
begin
Result := Result +CHR(StrToInt('$'+Copy(strText,i*2+1,2)));
end;
end;
function TCXXStrSecurity.TransOneByte(const strText: string): string;
var
i,len:word;
t:char;
pch:PChar;
begin
pch := PChar(strText);
len := Length(strText);
for i := 0 to len div 2 - 1 do
begin
t := pch[2*i];
pch[2*i] := pch[2*i+1];
pch[2*i+1] := t;
end;
Result := String(pch);
end;
function TCXXStrSecurity.TransStringToNumber(const strText: string): string;
var
len,i:Word;
str:string;
begin
len := Length(strText);
str := '';
for i := 1 to len do
begin
str := str + IntToHex(Ord(strText[i]),2);
end;
Result := str;
end;
function TCXXStrSecurity.XORString(const strText: string): string;
var
len,k:word;
b:Byte;
begin
Result := '';
len := Length(strText);
for k := 1 to len do
begin
b := Ord(strText[k]);
if k mod 2 =0 then
b := b xor k
else
b := b xor (len-k);
Result := Result + CHR(b);
end;
end;
function TCXXStrSecurity.DecodeString(const strPassword: string;
const isByteStr: boolean): string;
begin
isByteResult := isByteStr;
Result := DecodeString(strPassword);
end;
function TCXXStrSecurity.EncodeString(const strText: string;
const isByteStr: boolean): string;
begin
isByteResult := isByteStr;
Result := EncodeString(strText);
end;
end.
5、 應用適應器源碼:
//------------------------------------------------------------------------------
//
// 産品名稱:自有版權的字符串加密算法
// 産品簡介:將字符串按自行獨立設計的加密算法進行加、解密處理
// 産品作者:成曉旭
// E-Main: CXXSoft@sohu.com
// 産品版本:1.0版
// 版權所有:成曉旭
// 備注: 任何人使用此類時,請保留此段自述文件,謝謝!
// 單元文件:unSecurityAdapter.pas
// 單元說明:算法接口類TCXXStrSecurity的定義及實現
// 開發時間:2006-06-27
// 增加接口類,封閉對算法類的管理細節,以方便客戶使用
//------------------------------------------------------------------------------
unit unSecurityAdapter;
interface
uses
unSecurity;
type
TSecurityAdapter = class
private
public
//字符串加密方法
class function EncodeString(const strText:string):string;
//字符串解密方法
class function DecodeString(const strPassword:string):string;
end;
implementation
var
security:TCXXStrSecurity;
...{ TSecurityAdapter }
class function TSecurityAdapter.DecodeString(
const strPassword: string): string;
begin
Result := '';
if Assigned(security) then
Result := security.DecodeString(strPassword,true);
end;
class function TSecurityAdapter.EncodeString(const strText: string): string;
begin
Result := '';
if Assigned(security) then
Result := security.EncodeString(strText,true);
end;
initialization
security := TCXXStrSecurity.Create(false);
finalization
security.Free();
security := nil;
end.
特别声明:以上内容(如有图片或视频亦包括在内)为网络用户发布,本站仅提供信息存储服务。
自己獨立設計的字符串加密算法
作者:成曉旭
這是本人自行設計的第一個數據加密算法,當初是想設計成分組的對稱加密算法,但後來工作一忙,就沒有實現,就草草完成便開始應用起來了。但是目前的混淆度已經能夠滿足絕大多數的簡單加密應用。
1、 簡介:
設計一個算法,對字符串進行加密和解決,要求有一定的混淆度,並且,無須複雜的密鑰管理。爲簡化應用,我將混淆碼(類似于密鑰)直接混淆存儲在加密後密文中。
2、 算法設計:
開始想將此算法設計成分組的對稱加密算法,所以在算法的核心處理輪盡可能地選擇“對稱”的計算方法:比較異或、字節內轉換、對稱倒。
此算法設計成三大步驟:輸入調整,核心加、解密過程,輸出調整。
1、 輸入調整:就是用混淆碼將源串調整成長度爲8的整數倍的新串,以作爲核心處理過程的輸入。
2、 輸出調整:就是將通過核心處理過程計算後的結果串,按輸出要求進行轉換。加密時,就是轉換成希望的密文串;解密時,轉換成希望的明文串。
3、 核心處理過程:是整個算法的核心過程,主要包括位異或、左右倒置、交換字節、移位等幾個子過程。
3.1:位異或:對串的每一個Byte位進行異或運算;
3.2:左右倒置:對串進行鏡像對稱處理,將串分成前後兩部分,完成對換。
3.3:交換字節:對每一個Byte的前、後半字節進行鏡像對稱倒置。
3.4:移位:對串進行移位處理。
具體的加、解密處理過程如下圖所示:
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803778677.jpg[/img][/url]
3、 算法點評:
1、 此算法沒有實現正在的對稱加密算法。只需要對輸入、輸出調整過程進行優化,並且,重新調整核心處理過程的計算順序,就可以了。
2、 源碼演示的版本有些缺陷:最大處理串長度爲255,應該進行優化;並且混淆碼過于粗糙,也有待優化;對混淆碼的應用不全面,處理之後,混淆碼主要集中在密文的部分區段,分布不夠均勻,混淆程度也不夠充分。
4、 算法源碼:
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803778724.png[/img][/url]//------------------------------------------------------------------------------
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803778755.png[/img][/url]//
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803778786.png[/img][/url]// 産品名稱:自有版權的字符串加密算法
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803778817.png[/img][/url]// 産品簡介:將字符串按自行獨立設計的加密算法進行加、解密處理
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803778833.png[/img][/url]// 産品作者:成曉旭
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803778880.png[/img][/url]// E-Main: CXXSoft@sohu.com
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803778911.png[/img][/url]// 産品版本:1.0版
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803778942.png[/img][/url]// 版權所有:成曉旭
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803778974.png[/img][/url]// 備注: 任何人使用此類時,請保留此段自述文件,謝謝!
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803778989.png[/img][/url]// 單元文件:unSecurity.pas
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803779021.png[/img][/url]// 單元說明:算法類TCXXStrSecurity的定義及實現
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803779052.png[/img][/url]// 開發時間:2004-12-25
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803779083.png[/img][/url]// 設計本加、解密算法,並用原型程序測試、實現
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803779114.png[/img][/url]// 修改時間:2005-01-15
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803779130.png[/img][/url]// 增加加、解密返回、輸入串碼制屬性更新功能
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803779161.png[/img][/url]//------------------------------------------------------------------------------
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803779192.png[/img][/url]unit unSecurity;
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803779224.png[/img][/url]
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803779239.png[/img][/url]interface
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803779271.png[/img][/url]uses
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803779302.png[/img][/url] SysUtils;
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803779333.png[/img][/url]type
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803779349.png[/img][/url] TCXXStrSecurity = class
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803779380.png[/img][/url] private
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803779411.png[/img][/url] //本算法的加密最終結果標志(true:字節碼串/false:字符串)
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803779442.png[/img][/url] isByteResult:boolean;
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803779474.png[/img][/url] //本算法的字符串長度位數目(16制式)
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803779505.png[/img][/url] lenStrWidth:Byte;
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803779521.png[/img][/url] //本算法要求的最小模糊字符串
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803779552.png[/img][/url] minTextLen:Word;
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803779583.png[/img][/url] //本算法處理的最大串長度
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803779614.png[/img][/url] maxStrLen:Word;
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803779646.png[/img][/url] //本算法的串移位位數
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803779677.png[/img][/url] bitStrMoved:Byte;
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803779692.png[/img][/url] //根據本算法的處理規則,以加密前明文進行串調整
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803779755.png[/img][/url] function TransFillText(const strText:string):string;
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803779771.png[/img][/url] //根據本算法的處理規則,以加密後密文進行串調整
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803779802.png[/img][/url] function ReTransFillText(const strText:string; const mvSize: Byte):string;
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803779833.png[/img][/url] //將字符串轉換成Ascii碼串的方法
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803779864.png[/img][/url] function TransStringToNumber(const strText:string):string;
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803779896.png[/img][/url] //將一個字節的前後兩個半字節互換的方法
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803779911.png[/img][/url] function ChangeNumber(const byt:Byte):Byte;
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803779942.png[/img][/url] //將字符串循環移動的方法(左移/右移)
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803779974.png[/img][/url] function MoveTextByCircle(const strText:string;const mvSize:Byte;const isFromHead:boolean):string;
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803780005.png[/img][/url] //將字符串內每個字節的前後兩個半字節互換的方法
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803780021.png[/img][/url] function ExChangeNumber(const strText:string):string;
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803780052.png[/img][/url] //將字符串進行前後倒置的方法
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803780083.png[/img][/url] function RevertString(const strText:string):string;
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803780114.png[/img][/url] //將字符串的相鄰兩位進行調換的方法
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803780146.png[/img][/url] function TransOneByte(const strText:string):string;
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803780161.png[/img][/url] //將Ascii碼串轉換後常規字符串的方法
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803780192.png[/img][/url] function TransNumberToString(const strText:string):string;
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803780224.png[/img][/url] //將字符串進行位異或處理方法
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803780255.png[/img][/url] function XORString(const strText:string):string;
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803780286.png[/img][/url] public
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803780302.png[/img][/url] //本算法的加、解密處理成功標志(true:成功,否則:失敗)
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803780333.png[/img][/url] isOK:boolean;
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803780364.png[/img][/url] //本算法的處理過程消息
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803780396.png[/img][/url] Msg:string;
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803780427.png[/img][/url] constructor Create(const isReturnByte:boolean);
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803780442.png[/img][/url] //字符串加密方法
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803780474.png[/img][/url] function EncodeString(const strText:string):string;overload;
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803780505.png[/img][/url] //字符串加密方法
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803780536.png[/img][/url] function EncodeString(const strText:string;const isByteStr:boolean):string;overload;
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803780552.png[/img][/url] //字符串解密方法
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803780583.png[/img][/url] function DecodeString(const strPassword:string):string;overload;
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803780614.png[/img][/url] //字符串解密方法
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803780646.png[/img][/url] function DecodeString(const strPassword:string;const isByteStr:boolean):string;overload;
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803780677.png[/img][/url]end;
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803780692.png[/img][/url]implementation
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803780724.png[/img][/url]
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803780755.png[/img][/url][url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803780786.png[/img][/url]...{ TCXXStrSecurity }
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803780802.png[/img][/url]
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803780833.png[/img][/url]function TCXXStrSecurity.ChangeNumber(const byt: Byte): Byte;
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803780864.png[/img][/url]begin
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803780896.png[/img][/url] Result := (byt mod 16) * 16 + (byt div 16);
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803780927.png[/img][/url]end;
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803780942.png[/img][/url]
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803780974.png[/img][/url]constructor TCXXStrSecurity.Create(const isReturnByte:boolean);
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803781005.png[/img][/url]const
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803781036.png[/img][/url] default_MoveBit = 5;
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803781067.png[/img][/url]begin
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803781099.png[/img][/url] minTextLen := 6;
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803781224.png[/img][/url] lenStrWidth := 2;
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803781255.png[/img][/url] maxStrLen := 255;
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803781286.png[/img][/url] bitStrMoved := 5;
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803781317.png[/img][/url] isByteResult := isReturnByte;
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803781333.png[/img][/url]end;
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803781364.png[/img][/url]
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803781396.png[/img][/url]function TCXXStrSecurity.EncodeString(const strText: string): string;
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803781427.png[/img][/url]var
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803781458.png[/img][/url] str:string;
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803781489.png[/img][/url]begin
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803781505.png[/img][/url] str := '';
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803781536.png[/img][/url] str := TransFillText(strText);
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803781567.png[/img][/url] str := XORString(str);
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803781599.png[/img][/url] str := RevertString(str);
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803781614.png[/img][/url] str := TransOneByte(str);
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803781646.png[/img][/url] str := TransStringToNumber(str);
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803781677.png[/img][/url] str := ExChangeNumber(str);
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803781708.png[/img][/url] str := MoveTextByCircle(str,bitStrMoved,true);
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803781739.png[/img][/url] if NOT isByteResult then
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803781755.png[/img][/url] str := TransNumberToString(str);
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803781786.png[/img][/url] Result := str;
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803781817.png[/img][/url]end;
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803781849.png[/img][/url]
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803781880.png[/img][/url]function TCXXStrSecurity.ExChangeNumber(const strText: string): string;
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803781911.png[/img][/url]var
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803781942.png[/img][/url] len,i:Word;
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803781958.png[/img][/url]begin
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803781989.png[/img][/url] len := Length(strText);
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803782021.png[/img][/url] for i := 0 to len div 2 - 1 do
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803782052.png[/img][/url] begin
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803782067.png[/img][/url] Result := Result + IntToHex(ChangeNumber(StrToInt('$'+Copy(strText,i*2+1,2))),2);
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803782099.png[/img][/url] end;
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803782130.png[/img][/url]end;
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803782161.png[/img][/url]
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803782192.png[/img][/url]function TCXXStrSecurity.MoveTextByCircle(const strText: string;
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803782224.png[/img][/url] const mvSize: Byte; const isFromHead: boolean): string;
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803782255.png[/img][/url]var
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803782286.png[/img][/url] len:Word;
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803782302.png[/img][/url]begin
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803782333.png[/img][/url] len := Length(strText);
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803782364.png[/img][/url] if isFromHead then
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803782396.png[/img][/url] Result := Copy(strText,mvSize+1,len-mvSize) + Copy(strText,1,mvSize)
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803782411.png[/img][/url] else
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803782442.png[/img][/url] Result := Copy(strText,len-mvSize+1,mvSize) + Copy(strText,1,len-mvSize);
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803782474.png[/img][/url]end;
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803782505.png[/img][/url]
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803782536.png[/img][/url]function TCXXStrSecurity.DecodeString(const strPassword: string): string;
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803782552.png[/img][/url]var
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803782583.png[/img][/url] str:string;
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803782614.png[/img][/url]begin
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803782646.png[/img][/url] str := strPassword;
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803782661.png[/img][/url] if NOT isByteResult then
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803782692.png[/img][/url] str := TransStringToNumber(str);
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803782724.png[/img][/url] str := MoveTextByCircle(str,bitStrMoved,false);
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803782755.png[/img][/url] str := ExChangeNumber(str);
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803782786.png[/img][/url] str := TransNumberToString(str);
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803782802.png[/img][/url] str := TransOneByte(str);
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803782833.png[/img][/url] str := RevertString(str);
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803782864.png[/img][/url] str := XORString(str);
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803782896.png[/img][/url] str := ReTransFillText(str,bitStrMoved);
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803782911.png[/img][/url] Result := str;
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803782958.png[/img][/url]end;
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803782974.png[/img][/url]
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803783005.png[/img][/url]function TCXXStrSecurity.ReTransFillText(const strText: string; const mvSize: Byte): string;
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803783036.png[/img][/url]var
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803783067.png[/img][/url] len:Word;
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803783099.png[/img][/url]begin
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803783114.png[/img][/url] len := StrToInt('$'+Copy(strText,1,lenStrWidth));
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803783146.png[/img][/url] Result := Copy(strText,lenStrWidth+1,len);
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803783177.png[/img][/url]end;
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803783208.png[/img][/url]
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803783239.png[/img][/url]function TCXXStrSecurity.RevertString(const strText: string): string;
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803783255.png[/img][/url]var
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803783286.png[/img][/url] i,len:word;
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803783317.png[/img][/url] t:char;
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803783349.png[/img][/url] pch:PChar;
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803783364.png[/img][/url]begin
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803783396.png[/img][/url] pch := PChar(strText);
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803783427.png[/img][/url] len := Length(strText);
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803783458.png[/img][/url] for i := 0 to len div 2 -1 do
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803783489.png[/img][/url] begin
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803783505.png[/img][/url] //ChangeChar(pch[i],pch[len-1-i]);
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803783536.png[/img][/url] t := pch[i];
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803783567.png[/img][/url] pch[i] := pch[len-1-i];
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803783599.png[/img][/url] pch[len-1-i] := t;
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803783630.png[/img][/url] end;
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803783646.png[/img][/url] Result := String(pch);
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803783677.png[/img][/url]end;
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803783708.png[/img][/url]
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803783739.png[/img][/url]function TCXXStrSecurity.TransFillText(const strText: string): string;
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803783755.png[/img][/url]var
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803783786.png[/img][/url] i,oLen:Word;
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803783817.png[/img][/url] str,strPower:string;
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803783849.png[/img][/url]begin
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803783864.png[/img][/url] strPower := FormatDateTime('HHMMSS',Now());
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803783896.png[/img][/url] //strPower := RevertString(strPower);
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803783927.png[/img][/url] //strPower := TransOneByte(strPower);
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803783958.png[/img][/url] str := strText;
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803783989.png[/img][/url] oLen := Length(str);
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803784021.png[/img][/url] i := 1;
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803784036.png[/img][/url] while(Length(str) < minTextLen) do
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803784067.png[/img][/url] begin
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803784099.png[/img][/url] str := str + strPower[i];
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803784130.png[/img][/url] Inc(i);
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803784146.png[/img][/url] end;
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803784177.png[/img][/url] Result := IntToHex(oLen,lenStrWidth)+str;
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803784208.png[/img][/url]end;
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803784239.png[/img][/url]
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803784255.png[/img][/url]function TCXXStrSecurity.TransNumberToString(const strText: string): string;
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803784286.png[/img][/url]var
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803784317.png[/img][/url] i:word;
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803784349.png[/img][/url]begin
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803784380.png[/img][/url] Result := '';
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803784396.png[/img][/url] for i := 0 to Length(strText) div 2 - 1 do
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803784427.png[/img][/url] begin
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803784458.png[/img][/url] Result := Result +CHR(StrToInt('$'+Copy(strText,i*2+1,2)));
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803784489.png[/img][/url] end;
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803784505.png[/img][/url]end;
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803784536.png[/img][/url]
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803784567.png[/img][/url]function TCXXStrSecurity.TransOneByte(const strText: string): string;
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803784599.png[/img][/url]var
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803784630.png[/img][/url] i,len:word;
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803784646.png[/img][/url] t:char;
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803784677.png[/img][/url] pch:PChar;
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803784708.png[/img][/url]begin
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803784755.png[/img][/url] pch := PChar(strText);
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803784771.png[/img][/url] len := Length(strText);
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803784802.png[/img][/url] for i := 0 to len div 2 - 1 do
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803784833.png[/img][/url] begin
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803784864.png[/img][/url] t := pch[2*i];
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803784896.png[/img][/url] pch[2*i] := pch[2*i+1];
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803784911.png[/img][/url] pch[2*i+1] := t;
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803784942.png[/img][/url] end;
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803784974.png[/img][/url] Result := String(pch);
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803785005.png[/img][/url]end;
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803785036.png[/img][/url]
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803785052.png[/img][/url]function TCXXStrSecurity.TransStringToNumber(const strText: string): string;
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803785083.png[/img][/url]var
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803785114.png[/img][/url] len,i:Word;
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803786052.png[/img][/url] str:string;
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803786083.png[/img][/url]begin
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803786114.png[/img][/url] len := Length(strText);
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803786146.png[/img][/url] str := '';
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803786177.png[/img][/url] for i := 1 to len do
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803786333.png[/img][/url] begin
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803786364.png[/img][/url] str := str + IntToHex(Ord(strText[i]),2);
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803786396.png[/img][/url] end;
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803786411.png[/img][/url] Result := str;
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803786442.png[/img][/url]end;
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803786474.png[/img][/url]
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803786505.png[/img][/url]function TCXXStrSecurity.XORString(const strText: string): string;
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803786536.png[/img][/url]var
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803786567.png[/img][/url] len,k:word;
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803786599.png[/img][/url] b:Byte;
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803786630.png[/img][/url]begin
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803786661.png[/img][/url] Result := '';
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803786677.png[/img][/url] len := Length(strText);
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803786708.png[/img][/url] for k := 1 to len do
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803786739.png[/img][/url] begin
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803786771.png[/img][/url] b := Ord(strText[k]);
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803786786.png[/img][/url] if k mod 2 =0 then
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803786817.png[/img][/url] b := b xor k
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803786849.png[/img][/url] else
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803786880.png[/img][/url] b := b xor (len-k);
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803786911.png[/img][/url] Result := Result + CHR(b);
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803786927.png[/img][/url] end;
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803786958.png[/img][/url]end;
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803787005.png[/img][/url]
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803787036.png[/img][/url]function TCXXStrSecurity.DecodeString(const strPassword: string;
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803787067.png[/img][/url] const isByteStr: boolean): string;
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803787099.png[/img][/url]begin
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803787114.png[/img][/url] isByteResult := isByteStr;
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803787146.png[/img][/url] Result := DecodeString(strPassword);
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803787177.png[/img][/url]end;
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803787208.png[/img][/url]
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803787224.png[/img][/url]function TCXXStrSecurity.EncodeString(const strText: string;
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803787255.png[/img][/url] const isByteStr: boolean): string;
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803787286.png[/img][/url]begin
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803787317.png[/img][/url] isByteResult := isByteStr;
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803787349.png[/img][/url] Result := EncodeString(strText);
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803787364.png[/img][/url]end;
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803787396.png[/img][/url]
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803787427.png[/img][/url]end.
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803787474.png[/img][/url]
5、 應用適應器源碼:
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803787505.png[/img][/url]//------------------------------------------------------------------------------
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803787536.png[/img][/url]//
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803787583.png[/img][/url]// 産品名稱:自有版權的字符串加密算法
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803787599.png[/img][/url]// 産品簡介:將字符串按自行獨立設計的加密算法進行加、解密處理
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803787630.png[/img][/url]// 産品作者:成曉旭
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803787661.png[/img][/url]// E-Main: CXXSoft@sohu.com
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803787692.png[/img][/url]// 産品版本:1.0版
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803787724.png[/img][/url]// 版權所有:成曉旭
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803787739.png[/img][/url]// 備注: 任何人使用此類時,請保留此段自述文件,謝謝!
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803787771.png[/img][/url]// 單元文件:unSecurityAdapter.pas
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803787802.png[/img][/url]// 單元說明:算法接口類TCXXStrSecurity的定義及實現
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803787833.png[/img][/url]// 開發時間:2006-06-27
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803787849.png[/img][/url]// 增加接口類,封閉對算法類的管理細節,以方便客戶使用
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803787880.png[/img][/url]//------------------------------------------------------------------------------
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803787911.png[/img][/url]unit unSecurityAdapter;
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803787942.png[/img][/url]
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803787974.png[/img][/url]interface
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803787989.png[/img][/url]
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803788021.png[/img][/url]uses
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803788052.png[/img][/url] unSecurity;
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803788083.png[/img][/url]
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803788099.png[/img][/url]type
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803788130.png[/img][/url] TSecurityAdapter = class
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803788177.png[/img][/url] private
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803788192.png[/img][/url] public
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803788224.png[/img][/url] //字符串加密方法
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803788255.png[/img][/url] class function EncodeString(const strText:string):string;
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803788286.png[/img][/url] //字符串解密方法
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803788317.png[/img][/url] class function DecodeString(const strPassword:string):string;
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803788333.png[/img][/url] end;
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803788364.png[/img][/url]
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803788427.png[/img][/url]implementation
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803788458.png[/img][/url]
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803788474.png[/img][/url]var
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803788505.png[/img][/url] security:TCXXStrSecurity;
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803788536.png[/img][/url]
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803788567.png[/img][/url][url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803788599.png[/img][/url]...{ TSecurityAdapter }
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803788614.png[/img][/url]
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803788646.png[/img][/url]class function TSecurityAdapter.DecodeString(
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803788677.png[/img][/url] const strPassword: string): string;
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803788708.png[/img][/url]begin
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803788724.png[/img][/url] Result := '';
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803788771.png[/img][/url] if Assigned(security) then
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803788802.png[/img][/url] Result := security.DecodeString(strPassword,true);
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803788833.png[/img][/url]end;
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803788849.png[/img][/url]
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803788880.png[/img][/url]class function TSecurityAdapter.EncodeString(const strText: string): string;
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803788911.png[/img][/url]begin
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803788942.png[/img][/url] Result := '';
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803788958.png[/img][/url] if Assigned(security) then
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803788989.png[/img][/url] Result := security.EncodeString(strText,true);
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803789021.png[/img][/url]end;
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803789052.png[/img][/url]
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803789083.png[/img][/url]initialization
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803789099.png[/img][/url] security := TCXXStrSecurity.Create(false);
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803789130.png[/img][/url]finalization
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803789177.png[/img][/url] security.Free();
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803789192.png[/img][/url] security := nil;
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803789224.png[/img][/url]end.
[url=/bbs/detail_997651.html][img]http://images.wangchao.net.cn/images/upload/images/lsdn/1189803789255.png[/img][/url]