凯撒解密求助

lanlicen 2006-11-25 05:43:00
txt里面的是乱码,用winhex打开之后得到乱码的16进制为:
4501453921A1F1939BF3BDC0C9B9FE4ACFA6D2BB4634B5D587A9A180C7CDD5DAD1E2C0EFF0E63A969A716A30021B13017111A56D69757987BD74F564797060686F68632AD3EAB3F1CCC0C1BFC9BCB4D9CED3B9C8CFFC33C1C3DEBFBFB6DBA6A4CFD0D93DC5B2CBE3BAC3D4CB21

凯撒偏移为3,写了如下代码来解密,最后老报错,大侠们看看:
using System;

namespace HexToAsiic
{
/// <summary>
/// Class1 的摘要说明。
/// </summary>
class Class1
{
/// <summary>
/// 应用程序的主入口点。
/// </summary>
[STAThread]
static void Main(string[] args)
{
//
// TODO: 在此处添加代码以启动应用程序


string str = "4501453921A1F1939BF3BDC0C9B9FE4ACFA6D2BB4634B5D587A9A180C7CDD5DAD1E2C0EFF0E63A969A716A30021B13017111A56D69757987BD74F564797060686F68632AD3EAB3F1CCC0C1BFC9BCB4D9CED3B9C8CFFC33C1C3DEBFBFB6DBA6A4CFD0D93DC5B2CBE3BAC3D4CB21";
char []s=new char[str.Length];
for (int i = 0; i < str.Length; i++)
{
char c = str[i];

if (c >= 'A' && c <= 'Z') //字母
{

if ((int)(c - 65) < 3)
s[i] = (char)((c + 26 - 3));
else
s[i] = (char)(c-3);
}
else
{
s[i] = c;

}


}
string strnew=new string(s);
Console.WriteLine(strnew);
Console.WriteLine(str);


int len = strnew.Length/2;
byte[] arr = new byte[len];
for(int i=0;i<len;i++)
{
arr[i] = Convert.ToByte(strnew.Substring(i * 2, 2), 16);
}
string strs = System.Text.Encoding.Default.GetString(arr);
Console.WriteLine(strs);
Console.ReadLine();
}


}
}

...全文
66 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

110,538

社区成员

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

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

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