function UnEncryptString(Source, Key: string): string;
var
KeyLen: integer;
KeyPos: integer;
Offset: integer;
Dest: string;
SrcPos: integer;
SrcAsc: integer;
TmpSrcAsc: integer;
begin
KeyLen := Length(Key);
if KeyLen = 0 then
Key := 'delphi';
KeyPos := 0;
Offset := strtoint('$' + copy(Source, 1, 2));
SrcPos := 3;
repeat
SrcAsc := strtoint('$' + copy(Source, SrcPos, 2));
if KeyPos < KeyLen then
KeyPos := KeyPos + 1
else
KeyPos := 1;
TmpSrcAsc := SrcAsc xor Ord(Key[KeyPos]);
if TmpSrcAsc <= Offset then
TmpSrcAsc := 255 + TmpSrcAsc - Offset
else
TmpSrcAsc := TmpSrcAsc - Offset;
Dest := Dest + chr(TmpSrcAsc);
Offset := SrcAsc;
SrcPos := SrcPos + 2;
until SrcPos >= Length(Source);
result := Dest;
end;
uj5u.com熱心網友回復:
你那個不會寫,那個步驟,,, repeat until SrcPos >= Length(Source); 可以改為C#while (SrcPos >= Length(Source) )uj5u.com熱心網友回復:
并不是每個C#都懂delphi.找出關鍵字的含義去對照uj5u.com熱心網友回復:
public string UnEncryptString(string Source, string Key){
int KeyLen,KeyPos, Offset,SrcPos, SrcAsc, TmpSrcAsc;
string Dest = "";
KeyLen = Key.Length;
if (KeyLen == 0)
Key = "delphi";
KeyPos = 0;
Offset = int.Parse(Source.Substring(0, 2));
SrcPos = 3;
do
{
SrcAsc = int.Parse(Source.Substring(SrcPos, 2));
if (KeyPos < KeyLen)
KeyPos = KeyPos + 1;
else
KeyPos = 1;
TmpSrcAsc = SrcAsc ^ (int)(Key[KeyPos]);
if (TmpSrcAsc <= Offset)
TmpSrcAsc = 255 + TmpSrcAsc - Offset;
else
TmpSrcAsc = TmpSrcAsc - Offset;
Dest = Dest + (TmpSrcAsc-48).ToString();
Offset = SrcAsc;
SrcPos = SrcPos + 2;
} while (SrcPos >=Source.Length);
return Dest;
}
給你轉了,我原來用過delphi。自己驗證一下。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/135081.html
標籤:C#
上一篇:.NET 按段落讀取PDF檔案
