~~~~~~~~急求助: Delphi的代码翻译成C#代码 ~~~~~~~~~~

cacom1232004 2009-03-17 02:07:15
要翻译的代码为:
//解密函数
Function UncrypKey(Src:String; Key:String):string;
var
idx :integer;
KeyLen :Integer;
KeyPos :Integer;
offset :Integer;
dest :string;
SrcPos :Integer;
SrcAsc :Integer;
TmpSrcAsc :Integer;
Range :Integer;
begin
KeyLen:=Length(Key);
if KeyLen = 0 then
key:='Think Space';
KeyPos:=0;
SrcPos:=0;
SrcAsc:=0;
Range:=256;
offset:=StrToInt('$'+ copy(src,1,2));
SrcPos:=3;
repeat
SrcAsc:=StrToInt('$'+ copy(src,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(Src);
Result:=Dest;
end;
...全文
97 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
rusonghe 2009-04-13
  • 打赏
  • 举报
回复
//加密
public string Encrypt(string src, string key)
{
int keyLen = key.Length;
if (keyLen == 0)
{
key = "Think Space";
}

int keyPos = 0;
int srcAsc = 0;

Random r = new Random();
int offset = r.Next(256);

string dest = offset.ToString("X02");

byte[] valueBytes = Encoding.Default.GetBytes(src);
byte[] keyBytes = Encoding.Default.GetBytes(key);

for (int srcPos = 0; srcPos < src.Length; srcPos++)
{
srcAsc = (valueBytes[srcPos] + offset) % 255;
if (keyPos < key.Length)
{
keyPos = keyPos + 1;
}
else
{
keyPos = 1;
}
srcAsc = srcAsc ^ keyBytes[keyPos - 1];
dest = dest + srcAsc.ToString("X02");
offset = srcAsc;
}
return dest;
}
//解密
public string Decrypt(string src, string key)
{
int keyLen = key.Length;
if (keyLen == 0)
{
key = "Think Space";
}

int keyPos = 0;
int srcAsc = 0;
int tmpSrcAsc = 0;
string dest = string.Empty;
byte[] keyBytes = Encoding.Default.GetBytes(key);

int offset = int.Parse(src.Substring(0, 2), System.Globalization.NumberStyles.HexNumber);
int scrPos = 2;
while (scrPos < src.Length)
{
srcAsc = int.Parse(src.Substring(scrPos, 2), System.Globalization.NumberStyles.HexNumber);
if (keyPos < keyLen)
{
keyPos = keyPos + 1;
}
else
{
keyPos = 1;
}
tmpSrcAsc = srcAsc ^ keyBytes[keyPos - 1];
if (tmpSrcAsc <= offset)
{
tmpSrcAsc = 255 + tmpSrcAsc - offset;
}
else
{
tmpSrcAsc = tmpSrcAsc - offset;
}
dest = dest + (char)tmpSrcAsc;
offset = srcAsc;
scrPos = scrPos + 2;
}
return dest;
}
cacom1232004 2009-03-17
  • 打赏
  • 举报
回复
真的就没人知道吗?
三楼的兄弟,也没有的回应啊!!!
cacom1232004 2009-03-17
  • 打赏
  • 举报
回复
QQ:1143396166
cacom1232004 2009-03-17
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 FreeSarge 的回复:]
换 java 的还可以,这个格式都有很大区别。
[/Quote]
可以啊
要不先换成java的,然后在换成C#
指间的风 2009-03-17
  • 打赏
  • 举报
回复
换 java 的还可以,这个格式都有很大区别。

111,126

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧