您的位置:首页 > 其它

对称加密的例子(DES)——直接加密和解密字符串

2010-03-22 19:50 218 查看
这是在课堂上讲解的一个例子,最简单的对称算法,DES
关于该算法的一些说明,有兴趣的朋友可以参考下面的链接
http://baike.baidu.com/view/7510.htm
staticvoidMain(string[]args)
{
DESdes=DES.Create();
des.Key=Convert.FromBase64String("12345678910=");
des.IV=Convert.FromBase64String("12345678910=");
//DES的算法密钥和向量必须是12位,而且最后一位必须的=
//而且必须用FromBase64String的方式获取

stringoriginal="Hello,world";
byte[]data=EncryptText(original,des.Key,des.IV);//加密
stringresult=DecryptText(data,des.Key,des.IV);//解密

Console.WriteLine(result);
Console.Read();

}

privatestaticstringDecryptText(byte[]data,byte[]key,byte[]iv)
{
MemoryStreamms=newMemoryStream(data);
DESdes=DES.Create();
CryptoStreamstream=newCryptoStream(ms,des.CreateDecryptor(key,iv),CryptoStreamMode.Read);
byte[]from=newbyte[data.Length];
stream.Read(from,0,from.Length);

returnEncoding.ASCII.GetString(from);

}

privatestaticbyte[]EncryptText(stringoriginal,byte[]key,byte[]iv)
{
MemoryStreamms=newMemoryStream();//用来接收密文的内存流
DESdes=DES.Create();
CryptoStreamstream=newCryptoStream(ms,des.CreateEncryptor(key,iv),CryptoStreamMode.Write);
//创建加密流

byte[]to=Encoding.ASCII.GetBytes(original);//获取输入的字符串的字节
stream.Write(to,0,to.Length);//写入加密流
stream.FlushFinalBlock();//写入内存流,并清空缓冲区
byte[]ret=ms.ToArray();
stream.Close();
ms.Close();

returnret;

}

.csharpcode,.csharpcodepre
{
font-size:small;
color:black;
font-family:consolas,"CourierNew",courier,monospace;
background-color:#ffffff;
/*white-space:pre;*/
}
.csharpcodepre{margin:0em;}
.csharpcode.rem{color:#008000;}
.csharpcode.kwrd{color:#0000ff;}
.csharpcode.str{color:#006080;}
.csharpcode.op{color:#0000c0;}
.csharpcode.preproc{color:#cc6633;}
.csharpcode.asp{background-color:#ffff00;}
.csharpcode.html{color:#800000;}
.csharpcode.attr{color:#ff0000;}
.csharpcode.alt
{
background-color:#f4f4f4;
width:100%;
margin:0em;
}
.csharpcode.lnum{color:#606060;}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: