﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>C++博客-acmercyj-文章分类-加密解密</title><link>http://www.cppblog.com/acmercyj/category/17160.html</link><description>我穿着拖鞋卷着裤脚并不是我流氓，只是本人潇洒坦然的处世态度。
我无视一些规矩和废物的命令并不是我目中无人，
只是本人酷爱自由。
我开始写博客并不是因为它能让我交到朋友学习新的东西，只是有人说写博客是对自己过去的总结。</description><language>zh-cn</language><lastBuildDate>Thu, 23 Jun 2011 05:06:55 GMT</lastBuildDate><pubDate>Thu, 23 Jun 2011 05:06:55 GMT</pubDate><ttl>60</ttl><item><title>DEC算法C#实现</title><link>http://www.cppblog.com/acmercyj/articles/149193.html</link><dc:creator>mr_chen</dc:creator><author>mr_chen</author><pubDate>Wed, 22 Jun 2011 09:11:00 GMT</pubDate><guid>http://www.cppblog.com/acmercyj/articles/149193.html</guid><wfw:comment>http://www.cppblog.com/acmercyj/comments/149193.html</wfw:comment><comments>http://www.cppblog.com/acmercyj/articles/149193.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/acmercyj/comments/commentRss/149193.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/acmercyj/services/trackbacks/149193.html</trackback:ping><description><![CDATA[<p>今天帮同学做课程设计，写了一天代码。<br />题目：<span style="font-family: 'Times New Roman'; color: red; font-size: 10.5pt">&nbsp;</span><span style="font-family: 宋体; color: red; font-size: 10.5pt">编写一个加密的即时通讯程序（难度系数</span><span style="font-family: 'Times New Roman'; color: red; font-size: 10.5pt">0.8</span><span style="font-family: 宋体; color: red; font-size: 10.5pt">）</span><br />被困扰在加密的算法中，开始想用RSA算法，因为RSA加密算法 是另外一个题目。。可以顺便再帮另外一个同学写一下，，结果搞了半天发现RSA用来加密即使通讯消息不太合适，，<br />至少以我的能力写不出一个速度很快的加密解密函数，既然是即使通讯工具，速度慢的和蜗牛似的还通讯个P，，<br />不过其间查了大量资料对RSA算法的特性有了一定的了解，其主要难度在于大数的计算，这个计算真不是一般的麻烦，想到这里觉得自己的数学功底太弱了<br />搜了那么多资料现在还能记起来的比较实用的一个公式是：<span style="font-size: 12pt" lang="EN-US"><font face="Times New Roman">N<sup><font size="2">R</font></sup> mod D = ( ( N mod D )<sup><font size="2">R</font></sup> ) mod D<span style="mso-tab-count: 3">&nbsp;</span></font></span><br /><br />在CSDN某人的博客上看到的，里面还有很多推论地址：<a href="http://blog.csdn.net/fireseed/archive/2005/03/23/327444.aspx">http://blog.csdn.net/fireseed/archive/2005/03/23/327444.aspx</a><br /><br />后来选择了DEC加密算法，代码来至某博客，。忘记哪里弄来的了。<br />代码如下：</p>
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" /><span style="color: #000000"><br /><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">string</span><span style="color: #000000">&nbsp;JiaMi(</span><span style="color: #0000ff">string</span><span style="color: #000000">&nbsp;pToEncrypt,</span><span style="color: #0000ff">string</span><span style="color: #000000">&nbsp;KeyWord)<br /><img id="Codehighlighter1_63_939_Open_Image" onclick="this.style.display='none'; Codehighlighter1_63_939_Open_Text.style.display='none'; Codehighlighter1_63_939_Closed_Image.style.display='inline'; Codehighlighter1_63_939_Closed_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedBlockStart.gif"><img style="display: none" id="Codehighlighter1_63_939_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_63_939_Closed_Text.style.display='none'; Codehighlighter1_63_939_Open_Image.style.display='inline'; Codehighlighter1_63_939_Open_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ContractedBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_63_939_Closed_Text"><img alt="" src="http://www.cppblog.com/Images/dot.gif" /></span><span id="Codehighlighter1_63_939_Open_Text"><span style="color: #000000">{<br /><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DESCryptoServiceProvider&nbsp;des&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;DESCryptoServiceProvider();&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">把字符串放到byte数组中</span><span style="color: #008000"><br /><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" /></span><span style="color: #000000"><br /><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">byte</span><span style="color: #000000">[]&nbsp;inputByteArray&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;Encoding.Default.GetBytes(pToEncrypt);<br /><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">byte[]&nbsp;&nbsp;inputByteArray=Encoding.Unicode.GetBytes(pToEncrypt);&nbsp;&nbsp;</span><span style="color: #008000"><br /><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" /></span><span style="color: #000000"><br /><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;des.Key&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;ASCIIEncoding.ASCII.GetBytes(KeyWord);&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">建立加密对象的密钥和偏移量</span><span style="color: #008000"><br /><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;des.IV&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;ASCIIEncoding.ASCII.GetBytes(KeyWord);&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">原文使用ASCIIEncoding.ASCII方法的GetBytes方法</span><span style="color: #008000"><br /><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MemoryStream&nbsp;ms&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;MemoryStream();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">使得输入密码必须输入英文文本</span><span style="color: #008000"><br /><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CryptoStream&nbsp;cs&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;CryptoStream(ms,&nbsp;des.CreateEncryptor(),&nbsp;CryptoStreamMode.Write);<br /><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" /><br /><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cs.Write(inputByteArray,&nbsp;</span><span style="color: #000000">0</span><span style="color: #000000">,&nbsp;inputByteArray.Length);<br /><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cs.FlushFinalBlock();<br /><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" /><br /><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;StringBuilder&nbsp;ret&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;StringBuilder();<br /><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">foreach</span><span style="color: #000000">&nbsp;(</span><span style="color: #0000ff">byte</span><span style="color: #000000">&nbsp;b&nbsp;</span><span style="color: #0000ff">in</span><span style="color: #000000">&nbsp;ms.ToArray())<br /><img id="Codehighlighter1_823_876_Open_Image" onclick="this.style.display='none'; Codehighlighter1_823_876_Open_Text.style.display='none'; Codehighlighter1_823_876_Closed_Image.style.display='inline'; Codehighlighter1_823_876_Closed_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="display: none" id="Codehighlighter1_823_876_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_823_876_Closed_Text.style.display='none'; Codehighlighter1_823_876_Open_Image.style.display='inline'; Codehighlighter1_823_876_Open_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ContractedSubBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_823_876_Closed_Text"><img alt="" src="http://www.cppblog.com/Images/dot.gif" /></span><span id="Codehighlighter1_823_876_Open_Text"><span style="color: #000000">{<br /><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ret.AppendFormat(</span><span style="color: #000000">"</span><span style="color: #000000">{0:X2}</span><span style="color: #000000">"</span><span style="color: #000000">,&nbsp;b);<br /><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br /><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">ret.ToString();</span><span style="color: #008000"><br /><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;ret.ToString();<br /><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedBlockEnd.gif" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br /><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" /></span><span style="color: #008000">//</span><span style="color: #008000">DEC&nbsp;解密过程</span><span style="color: #008000"><br /><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">string</span><span style="color: #000000">&nbsp;JieMi(</span><span style="color: #0000ff">string</span><span style="color: #000000">&nbsp;pToDecrypt,</span><span style="color: #0000ff">string</span><span style="color: #000000">&nbsp;KeyWord)<br /><img id="Codehighlighter1_1014_1901_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1014_1901_Open_Text.style.display='none'; Codehighlighter1_1014_1901_Closed_Image.style.display='inline'; Codehighlighter1_1014_1901_Closed_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedBlockStart.gif"><img style="display: none" id="Codehighlighter1_1014_1901_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_1014_1901_Closed_Text.style.display='none'; Codehighlighter1_1014_1901_Open_Image.style.display='inline'; Codehighlighter1_1014_1901_Open_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ContractedBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_1014_1901_Closed_Text"><img alt="" src="http://www.cppblog.com/Images/dot.gif" /></span><span id="Codehighlighter1_1014_1901_Open_Text"><span style="color: #000000">{<br /><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DESCryptoServiceProvider&nbsp;des&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;DESCryptoServiceProvider();<br /><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" /><br /><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">byte</span><span style="color: #000000">[]&nbsp;inputByteArray&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">byte</span><span style="color: #000000">[pToDecrypt.Length&nbsp;</span><span style="color: #000000">/</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">2</span><span style="color: #000000">];<br /><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">for</span><span style="color: #000000">&nbsp;(</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;x&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">0</span><span style="color: #000000">;&nbsp;x&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">&nbsp;pToDecrypt.Length&nbsp;</span><span style="color: #000000">/</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">2</span><span style="color: #000000">;&nbsp;x</span><span style="color: #000000">++</span><span style="color: #000000">)<br /><img id="Codehighlighter1_1217_1343_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1217_1343_Open_Text.style.display='none'; Codehighlighter1_1217_1343_Closed_Image.style.display='inline'; Codehighlighter1_1217_1343_Closed_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="display: none" id="Codehighlighter1_1217_1343_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_1217_1343_Closed_Text.style.display='none'; Codehighlighter1_1217_1343_Open_Image.style.display='inline'; Codehighlighter1_1217_1343_Open_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ContractedSubBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_1217_1343_Closed_Text"><img alt="" src="http://www.cppblog.com/Images/dot.gif" /></span><span id="Codehighlighter1_1217_1343_Open_Text"><span style="color: #000000">{<br /><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;i&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;(Convert.ToInt32(pToDecrypt.Substring(x&nbsp;</span><span style="color: #000000">*</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">2</span><span style="color: #000000">,&nbsp;</span><span style="color: #000000">2</span><span style="color: #000000">),&nbsp;</span><span style="color: #000000">16</span><span style="color: #000000">));<br /><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;inputByteArray[x]&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;(</span><span style="color: #0000ff">byte</span><span style="color: #000000">)i;<br /><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br /><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" /><br /><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;des.Key&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;ASCIIEncoding.ASCII.GetBytes(KeyWord);&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">建立加密对象的密钥和偏移量，此值重要，不能修改&nbsp;&nbsp;</span><span style="color: #008000"><br /><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;des.IV&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;ASCIIEncoding.ASCII.GetBytes(KeyWord);<br /><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MemoryStream&nbsp;ms&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;MemoryStream();<br /><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CryptoStream&nbsp;cs&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;CryptoStream(ms,&nbsp;des.CreateDecryptor(),&nbsp;CryptoStreamMode.Write);<br /><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" /><br /><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cs.Write(inputByteArray,&nbsp;</span><span style="color: #000000">0</span><span style="color: #000000">,&nbsp;inputByteArray.Length);<br /><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cs.FlushFinalBlock();<br /><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" /><br /><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;StringBuilder&nbsp;ret&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;StringBuilder();&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">建立StringBuild对象，CreateDecrypt使用的是流对象，必须把解密后的文本变成流对象&nbsp;&nbsp;</span><span style="color: #008000"><br /><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" /></span><span style="color: #000000"><br /><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;System.Text.Encoding.Default.GetString(ms.ToArray());<br /><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedBlockEnd.gif" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br /><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" /><br /><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" /></span><span style="color: #008000">//</span><span style="color: #008000">传进来的参数就是你要加密的那个字符串和密钥</span></div>
<p><br />后来还看了MD5加密算法，主要是想搞一个注册登录，用来加密用户密码。<br />在查资料的过程中在CSDN某人的博客上看到一条有趣的信息，写的是某MD5破解网站的广告，大概的意思就是，他们那个网站把所有手机号码，生日，以及几位的数字和字母的所有组合的MD5码都计算出来了，总共有256亿条信息好像。。还在不断的增长当中，可怕的信息，。，这样一来如果得到MD5加密码，一般的用户密码都能找出来了。。<br />看来算法一旦公布就算是铜墙铁壁也有人会拼死去撞，，真可怕<br /><br />搞了半天自己的课程设计都没有写好，赶紧去搞定~~</p><img src ="http://www.cppblog.com/acmercyj/aggbug/149193.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/acmercyj/" target="_blank">mr_chen</a> 2011-06-22 17:11 <a href="http://www.cppblog.com/acmercyj/articles/149193.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>