﻿<?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>IT博客-无感之伤</title><link>http://www.cnitblog.com/ehuster/</link><description /><language>zh-cn</language><lastBuildDate>Wed, 29 Apr 2026 05:58:58 GMT</lastBuildDate><pubDate>Wed, 29 Apr 2026 05:58:58 GMT</pubDate><ttl>60</ttl><item><title>转帖  RSA 私钥加密实现</title><link>http://www.cnitblog.com/ehuster/archive/2010/09/10/68775.html</link><dc:creator>清洼</dc:creator><author>清洼</author><pubDate>Fri, 10 Sep 2010 13:12:00 GMT</pubDate><guid>http://www.cnitblog.com/ehuster/archive/2010/09/10/68775.html</guid><wfw:comment>http://www.cnitblog.com/ehuster/comments/68775.html</wfw:comment><comments>http://www.cnitblog.com/ehuster/archive/2010/09/10/68775.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/ehuster/comments/commentRss/68775.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/ehuster/services/trackbacks/68775.html</trackback:ping><description><![CDATA[<p><span style="font-size: small;"><span style="font-family: 宋体;"><span style="line-height: 200%;">RSA
算法是第一个能同时用于加密和数字签名的算法，也易于理解和操作。
RSA是被研究得最广泛的公钥算法，从提出到现在已近二十年，经历了各种攻击的考验，逐渐为人们接受，普遍认为是目前最优秀的公钥方案之一。RSA的安全
性依赖于大数的因子分解，但并没有从理论上证明破译RSA的难度与大数分解难度等价。<br>&nbsp;&nbsp;&nbsp;&nbsp;RSA的安全性依赖于大数分解。公钥和私钥都是两个大素数（ 大于 100个十进制位）的函数。据猜测，从一个密钥和密文推断出明文的难度等同于分解两个大素数的积。&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;密钥对的产生。选择两个大素数，p 和q 。计算：&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; n = p * q&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;然后随机选择加密密钥e<span style="color: #ff0000;">（PS：最常用的e值有3，17和65537，微软就是使用的65537，采用3个中的任何一个都不存在安全问题），</span>要求 e 和 ( p - 1 ) * ( q - 1 ) 互质。最后，利用Euclid 算法计算解密密钥d, 满足&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; e * d = 1 ( mod ( p - 1 ) * ( q - 1 ) )&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;其中n和d也要互质。数e和n是公钥，d是私钥。两个素数p和q不再需要，应该丢弃，不要让任何人知道。&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;加密信息 m（二进制表示）时，首先把m分成等长数据块 m1 ,m2,..., mi ，块长s，其中 2^s &lt;= n, s 尽可能的大。对应的密文是：&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ci = mi^e ( mod n ) ( a )&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;解密时作如下计算：&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mi = ci^d ( mod n ) ( b )</span></span></span></p>
<p><span style="font-size: small;"><span style="font-family: 宋体;"><span style="line-height: 200%;">&nbsp;&nbsp;&nbsp;
.NET提供常用的加密算法类，支持RSA的类是RSACryptoServiceProvider（命名空
间：System.Security.Cryptography），但只支持公钥加密，私钥解密。RSACryptoServiceProvider类包
括：Modulus、Exponent、P、Q、DP、DQ、InverseQ、D等8个属性，其中Modulus和Exponent就是公
钥，Modulus和D就是私钥，RSACryptoServiceProvider类提供导出公钥的方法，也提供导出私钥的方法，但导出的私钥包含上面
8个属性<img  src="http://www.hugesoft.net/admin/FCKeditor/editor/images/smiley/63.gif" alt="">，显然要用RSACryptoServiceProvider实现私钥加密公钥是不可行的。</span></span></span></p>
<p><span style="font-size: small;"><span style="font-family: 宋体;"><span style="line-height: 200%;">&nbsp;&nbsp;&nbsp;&nbsp;从RSA的原理来看，公钥加密私钥解密和私钥加密公钥解密应该是等价的，在某些情况下，比如共享软件加密，我们需要用私钥加密注册码或注册文件，发给用户，用户用公钥解密注册码或注册文件进行合法性验证。</span></span></span></p>
<p><span style="font-size: small;"><span style="font-family: 宋体;"><span style="line-height: 200%;">&nbsp;&nbsp;&nbsp;&nbsp;本
人利用网上找的一个C#版的大整数类BigInteger（本人认为这是偶发现的效率最高的一个C#版大整数类）来实现私钥加密公钥加密（事实上也完全支
持公租加密私钥解密），但没有使用类BigInteger的大素数生成函数，而是直接使用类RSACryptoServiceProvider来生成大素
数。其中加密函数和解密函数的实现如下：</span></span></span></p>
<div><img  src="http://www.hugesoft.net/admin/Images/OutliningIndicators/ExpandedBlockStart.gif" id="Highlighter_8_58_Open_Image" alt="" align="top"><img  src="http://www.hugesoft.net/admin/Images/OutliningIndicators/ContractedBlock.gif" id="Highlighter_8_58_Closed_Image" style="display: none;" alt="" align="top"><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Highlighter_8_58_Closed_Text" style="border: 1px solid #808080; display: none; background-color: #ffffff;">/**/</span><span id="Highlighter_8_58_Open_Text"><span style="color: #008000;">/*</span><span style="color: #008000;"> <br><img  src="http://www.hugesoft.net/admin/Images/OutliningIndicators/InBlock.gif" alt="" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 功能：用指定的私钥(n,d)加密指定字符串source <br><img  src="http://www.hugesoft.net/admin/Images/OutliningIndicators/ExpandedBlockEnd.gif" alt="" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">*/</span></span><span style="color: #000000;"> <br><img  src="http://www.hugesoft.net/admin/Images/OutliningIndicators/None.gif" alt="" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">private</span><span style="color: #000000;"> </span><span style="color: #0000ff;">string</span><span style="color: #000000;"> EncryptString(</span><span style="color: #0000ff;">string</span><span style="color: #000000;"> source, BigInteger d, BigInteger n) <br><img  src="http://www.hugesoft.net/admin/Images/OutliningIndicators/ExpandedBlockStart.gif" id="Highlighter_147_1031_Open_Image" alt="" align="top"><img  src="http://www.hugesoft.net/admin/Images/OutliningIndicators/ContractedBlock.gif" id="Highlighter_147_1031_Closed_Image" style="display: none;" alt="" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Highlighter_147_1031_Closed_Text" style="border: 1px solid #808080; display: none; background-color: #ffffff;">...</span><span id="Highlighter_147_1031_Open_Text"><span style="color: #000000;">{ <br><img  src="http://www.hugesoft.net/admin/Images/OutliningIndicators/InBlock.gif" alt="" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;"> len </span><span style="color: #000000;">=</span><span style="color: #000000;"> source.Length; <br><img  src="http://www.hugesoft.net/admin/Images/OutliningIndicators/InBlock.gif" alt="" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;"> len1 </span><span style="color: #000000;">=</span><span style="color: #000000;"> </span><span style="color: #800080;">0</span><span style="color: #000000;">; <br><img  src="http://www.hugesoft.net/admin/Images/OutliningIndicators/InBlock.gif" alt="" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;"> blockLen </span><span style="color: #000000;">=</span><span style="color: #000000;"> </span><span style="color: #800080;">0</span><span style="color: #000000;">; <br><img  src="http://www.hugesoft.net/admin/Images/OutliningIndicators/InBlock.gif" alt="" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;"> ((len </span><span style="color: #000000;">%</span><span style="color: #000000;"> </span><span style="color: #800080;">128</span><span style="color: #000000;">) </span><span style="color: #000000;">==</span><span style="color: #000000;"> </span><span style="color: #800080;">0</span><span style="color: #000000;">) <br><img  src="http://www.hugesoft.net/admin/Images/OutliningIndicators/InBlock.gif" alt="" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;len1 </span><span style="color: #000000;">=</span><span style="color: #000000;"> len </span><span style="color: #000000;">/</span><span style="color: #000000;"> </span><span style="color: #800080;">128</span><span style="color: #000000;">; <br><img  src="http://www.hugesoft.net/admin/Images/OutliningIndicators/InBlock.gif" alt="" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">else</span><span style="color: #000000;"> <br><img  src="http://www.hugesoft.net/admin/Images/OutliningIndicators/InBlock.gif" alt="" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;len1 </span><span style="color: #000000;">=</span><span style="color: #000000;"> len </span><span style="color: #000000;">/</span><span style="color: #000000;"> </span><span style="color: #800080;">128</span><span style="color: #000000;"> </span><span style="color: #000000;">+</span><span style="color: #000000;"> </span><span style="color: #800080;">1</span><span style="color: #000000;">; <br><img  src="http://www.hugesoft.net/admin/Images/OutliningIndicators/InBlock.gif" alt="" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">string</span><span style="color: #000000;"> block </span><span style="color: #000000;">=</span><span style="color: #000000;"> </span><span style="color: #800000;">""</span><span style="color: #000000;">; <br><img  src="http://www.hugesoft.net/admin/Images/OutliningIndicators/InBlock.gif" alt="" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">string</span><span style="color: #000000;"> temp </span><span style="color: #000000;">=</span><span style="color: #000000;"> </span><span style="color: #800000;">""</span><span style="color: #000000;">; <br><img  src="http://www.hugesoft.net/admin/Images/OutliningIndicators/InBlock.gif" alt="" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">for</span><span style="color: #000000;"> (</span><span style="color: #0000ff;">int</span><span style="color: #000000;"> i </span><span style="color: #000000;">=</span><span style="color: #000000;"> </span><span style="color: #800080;">0</span><span style="color: #000000;">; i </span><span style="color: #000000;">&lt;</span><span style="color: #000000;"> len1; i</span><span style="color: #000000;">++</span><span style="color: #000000;">) <br><img  src="http://www.hugesoft.net/admin/Images/OutliningIndicators/ExpandedSubBlockStart.gif" id="Highlighter_481_996_Open_Image" alt="" align="top"><img  src="http://www.hugesoft.net/admin/Images/OutliningIndicators/ContractedSubBlock.gif" id="Highlighter_481_996_Closed_Image" style="display: none;" alt="" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Highlighter_481_996_Closed_Text" style="border: 1px solid #808080; display: none; background-color: #ffffff;">...</span><span id="Highlighter_481_996_Open_Text"><span style="color: #000000;">{ <br><img  src="http://www.hugesoft.net/admin/Images/OutliningIndicators/InBlock.gif" alt="" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;"> (len </span><span style="color: #000000;">&gt;=</span><span style="color: #000000;"> </span><span style="color: #800080;">128</span><span style="color: #000000;">) <br><img  src="http://www.hugesoft.net/admin/Images/OutliningIndicators/InBlock.gif" alt="" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;blockLen </span><span style="color: #000000;">=</span><span style="color: #000000;"> </span><span style="color: #800080;">128</span><span style="color: #000000;">; <br><img  src="http://www.hugesoft.net/admin/Images/OutliningIndicators/InBlock.gif" alt="" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">else</span><span style="color: #000000;"> <br><img  src="http://www.hugesoft.net/admin/Images/OutliningIndicators/InBlock.gif" alt="" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;blockLen </span><span style="color: #000000;">=</span><span style="color: #000000;"> len; <br><img  src="http://www.hugesoft.net/admin/Images/OutliningIndicators/InBlock.gif" alt="" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;block </span><span style="color: #000000;">=</span><span style="color: #000000;"> source.Substring(i </span><span style="color: #000000;">*</span><span style="color: #000000;"> </span><span style="color: #800080;">128</span><span style="color: #000000;">, blockLen); <br><img  src="http://www.hugesoft.net/admin/Images/OutliningIndicators/InBlock.gif" alt="" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">byte</span><span style="color: #000000;">[] oText </span><span style="color: #000000;">=</span><span style="color: #000000;"> System.Text.Encoding.Default.GetBytes(block); <br><img  src="http://www.hugesoft.net/admin/Images/OutliningIndicators/InBlock.gif" alt="" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;BigInteger biText </span><span style="color: #000000;">=</span><span style="color: #000000;"> </span><span style="color: #0000ff;">new</span><span style="color: #000000;"> BigInteger(oText); <br><img  src="http://www.hugesoft.net/admin/Images/OutliningIndicators/InBlock.gif" alt="" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;BigInteger biEnText </span><span style="color: #000000;">=</span><span style="color: #000000;"> biText.modPow(d, n); <br><img  src="http://www.hugesoft.net/admin/Images/OutliningIndicators/InBlock.gif" alt="" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">string</span><span style="color: #000000;"> temp1 </span><span style="color: #000000;">=</span><span style="color: #000000;"> biEnText.ToHexString(); <br><img  src="http://www.hugesoft.net/admin/Images/OutliningIndicators/InBlock.gif" alt="" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;temp </span><span style="color: #000000;">+=</span><span style="color: #000000;"> temp1; <br><img  src="http://www.hugesoft.net/admin/Images/OutliningIndicators/InBlock.gif" alt="" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;len </span><span style="color: #000000;">-=</span><span style="color: #000000;"> blockLen; <br><img  src="http://www.hugesoft.net/admin/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" alt="" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000;"> <br><img  src="http://www.hugesoft.net/admin/Images/OutliningIndicators/InBlock.gif" alt="" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;"> temp; <br><img  src="http://www.hugesoft.net/admin/Images/OutliningIndicators/ExpandedBlockEnd.gif" alt="" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000;"> <br><img  src="http://www.hugesoft.net/admin/Images/OutliningIndicators/None.gif" alt="" align="top"> <br><img  src="http://www.hugesoft.net/admin/Images/OutliningIndicators/ExpandedBlockStart.gif" id="Highlighter_1041_1091_Open_Image" alt="" align="top"><img  src="http://www.hugesoft.net/admin/Images/OutliningIndicators/ContractedBlock.gif" id="Highlighter_1041_1091_Closed_Image" style="display: none;" alt="" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Highlighter_1041_1091_Closed_Text" style="border: 1px solid #808080; display: none; background-color: #ffffff;">/**/</span><span id="Highlighter_1041_1091_Open_Text"><span style="color: #008000;">/*</span><span style="color: #008000;"> <br><img  src="http://www.hugesoft.net/admin/Images/OutliningIndicators/InBlock.gif" alt="" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 功能：用指定的公钥(n,e)解密指定字符串source <br><img  src="http://www.hugesoft.net/admin/Images/OutliningIndicators/ExpandedBlockEnd.gif" alt="" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">*/</span></span><span style="color: #000000;"> <br><img  src="http://www.hugesoft.net/admin/Images/OutliningIndicators/None.gif" alt="" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">private</span><span style="color: #000000;"> </span><span style="color: #0000ff;">string</span><span style="color: #000000;"> DecryptString(</span><span style="color: #0000ff;">string</span><span style="color: #000000;"> source, BigInteger e, BigInteger n) <br><img  src="http://www.hugesoft.net/admin/Images/OutliningIndicators/ExpandedBlockStart.gif" id="Highlighter_1180_2028_Open_Image" alt="" align="top"><img  src="http://www.hugesoft.net/admin/Images/OutliningIndicators/ContractedBlock.gif" id="Highlighter_1180_2028_Closed_Image" style="display: none;" alt="" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Highlighter_1180_2028_Closed_Text" style="border: 1px solid #808080; display: none; background-color: #ffffff;">...</span><span id="Highlighter_1180_2028_Open_Text"><span style="color: #000000;">{ <br><img  src="http://www.hugesoft.net/admin/Images/OutliningIndicators/InBlock.gif" alt="" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;"> len </span><span style="color: #000000;">=</span><span style="color: #000000;"> source.Length; <br><img  src="http://www.hugesoft.net/admin/Images/OutliningIndicators/InBlock.gif" alt="" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;"> len1 </span><span style="color: #000000;">=</span><span style="color: #000000;"> </span><span style="color: #800080;">0</span><span style="color: #000000;">; <br><img  src="http://www.hugesoft.net/admin/Images/OutliningIndicators/InBlock.gif" alt="" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;"> blockLen </span><span style="color: #000000;">=</span><span style="color: #000000;"> </span><span style="color: #800080;">0</span><span style="color: #000000;">; <br><img  src="http://www.hugesoft.net/admin/Images/OutliningIndicators/InBlock.gif" alt="" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;"> ((len </span><span style="color: #000000;">%</span><span style="color: #000000;"> </span><span style="color: #800080;">256</span><span style="color: #000000;">) </span><span style="color: #000000;">==</span><span style="color: #000000;"> </span><span style="color: #800080;">0</span><span style="color: #000000;">) <br><img  src="http://www.hugesoft.net/admin/Images/OutliningIndicators/InBlock.gif" alt="" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;len1 </span><span style="color: #000000;">=</span><span style="color: #000000;"> len </span><span style="color: #000000;">/</span><span style="color: #000000;"> </span><span style="color: #800080;">256</span><span style="color: #000000;">; <br><img  src="http://www.hugesoft.net/admin/Images/OutliningIndicators/InBlock.gif" alt="" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">else</span><span style="color: #000000;"> <br><img  src="http://www.hugesoft.net/admin/Images/OutliningIndicators/InBlock.gif" alt="" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;len1 </span><span style="color: #000000;">=</span><span style="color: #000000;"> len </span><span style="color: #000000;">/</span><span style="color: #000000;"> </span><span style="color: #800080;">256</span><span style="color: #000000;"> </span><span style="color: #000000;">+</span><span style="color: #000000;"> </span><span style="color: #800080;">1</span><span style="color: #000000;">; <br><img  src="http://www.hugesoft.net/admin/Images/OutliningIndicators/InBlock.gif" alt="" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">string</span><span style="color: #000000;"> block </span><span style="color: #000000;">=</span><span style="color: #000000;"> </span><span style="color: #800000;">""</span><span style="color: #000000;">; <br><img  src="http://www.hugesoft.net/admin/Images/OutliningIndicators/InBlock.gif" alt="" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">string</span><span style="color: #000000;"> temp </span><span style="color: #000000;">=</span><span style="color: #000000;"> </span><span style="color: #800000;">""</span><span style="color: #000000;">; <br><img  src="http://www.hugesoft.net/admin/Images/OutliningIndicators/InBlock.gif" alt="" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">for</span><span style="color: #000000;"> (</span><span style="color: #0000ff;">int</span><span style="color: #000000;"> i </span><span style="color: #000000;">=</span><span style="color: #000000;"> </span><span style="color: #800080;">0</span><span style="color: #000000;">; i </span><span style="color: #000000;">&lt;</span><span style="color: #000000;"> len1; i</span><span style="color: #000000;">++</span><span style="color: #000000;">) <br><img  src="http://www.hugesoft.net/admin/Images/OutliningIndicators/ExpandedSubBlockStart.gif" id="Highlighter_1514_1993_Open_Image" alt="" align="top"><img  src="http://www.hugesoft.net/admin/Images/OutliningIndicators/ContractedSubBlock.gif" id="Highlighter_1514_1993_Closed_Image" style="display: none;" alt="" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Highlighter_1514_1993_Closed_Text" style="border: 1px solid #808080; display: none; background-color: #ffffff;">...</span><span id="Highlighter_1514_1993_Open_Text"><span style="color: #000000;">{ <br><img  src="http://www.hugesoft.net/admin/Images/OutliningIndicators/InBlock.gif" alt="" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;"> (len </span><span style="color: #000000;">&gt;=</span><span style="color: #000000;"> </span><span style="color: #800080;">256</span><span style="color: #000000;">) <br><img  src="http://www.hugesoft.net/admin/Images/OutliningIndicators/InBlock.gif" alt="" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;blockLen </span><span style="color: #000000;">=</span><span style="color: #000000;"> </span><span style="color: #800080;">256</span><span style="color: #000000;">; <br><img  src="http://www.hugesoft.net/admin/Images/OutliningIndicators/InBlock.gif" alt="" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">else</span><span style="color: #000000;"> <br><img  src="http://www.hugesoft.net/admin/Images/OutliningIndicators/InBlock.gif" alt="" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;blockLen </span><span style="color: #000000;">=</span><span style="color: #000000;"> len; <br><img  src="http://www.hugesoft.net/admin/Images/OutliningIndicators/InBlock.gif" alt="" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;block </span><span style="color: #000000;">=</span><span style="color: #000000;"> source.Substring(i </span><span style="color: #000000;">*</span><span style="color: #000000;"> </span><span style="color: #800080;">256</span><span style="color: #000000;">, blockLen); <br><img  src="http://www.hugesoft.net/admin/Images/OutliningIndicators/InBlock.gif" alt="" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;BigInteger biText </span><span style="color: #000000;">=</span><span style="color: #000000;"> </span><span style="color: #0000ff;">new</span><span style="color: #000000;"> BigInteger(block, </span><span style="color: #800080;">16</span><span style="color: #000000;">); <br><img  src="http://www.hugesoft.net/admin/Images/OutliningIndicators/InBlock.gif" alt="" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;BigInteger biEnText </span><span style="color: #000000;">=</span><span style="color: #000000;"> biText.modPow(e, n); <br><img  src="http://www.hugesoft.net/admin/Images/OutliningIndicators/InBlock.gif" alt="" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">string</span><span style="color: #000000;"> temp1 </span><span style="color: #000000;">=</span><span style="color: #000000;"> System.Text.Encoding.Default.GetString(biEnText.getBytes()); <br><img  src="http://www.hugesoft.net/admin/Images/OutliningIndicators/InBlock.gif" alt="" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;temp </span><span style="color: #000000;">+=</span><span style="color: #000000;"> temp1; <br><img  src="http://www.hugesoft.net/admin/Images/OutliningIndicators/InBlock.gif" alt="" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;len </span><span style="color: #000000;">-=</span><span style="color: #000000;"> blockLen; <br><img  src="http://www.hugesoft.net/admin/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" alt="" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000;"> <br><img  src="http://www.hugesoft.net/admin/Images/OutliningIndicators/InBlock.gif" alt="" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;"> temp; <br><img  src="http://www.hugesoft.net/admin/Images/OutliningIndicators/ExpandedBlockEnd.gif" alt="" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000;"> <br><img  src="http://www.hugesoft.net/admin/Images/OutliningIndicators/None.gif" alt="" align="top"></span></div>
<p><span style="font-size: small;"><span style="font-family: 宋体;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;加密过程和解密过程代码如下所示：</span></span></p>
<div><img  src="http://www.hugesoft.net/admin/Images/OutliningIndicators/ExpandedBlockStart.gif" id="Highlighter_8_78_Open_Image" alt="" align="top"><img  src="http://www.hugesoft.net/admin/Images/OutliningIndicators/ContractedBlock.gif" id="Highlighter_8_78_Closed_Image" style="display: none;" alt="" align="top"><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Highlighter_8_78_Closed_Text" style="border: 1px solid #808080; display: none; background-color: #ffffff;">/**/</span><span id="Highlighter_8_78_Open_Text"><span style="color: #008000;">/*</span><span style="color: #008000;"> <br><img  src="http://www.hugesoft.net/admin/Images/OutliningIndicators/InBlock.gif" alt="" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 加密过程,其中d、n是RSACryptoServiceProvider生成的D、Modulus <br><img  src="http://www.hugesoft.net/admin/Images/OutliningIndicators/ExpandedBlockEnd.gif" alt="" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">*/</span></span><span style="color: #000000;"> <br><img  src="http://www.hugesoft.net/admin/Images/OutliningIndicators/None.gif" alt="" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">private</span><span style="color: #000000;"> </span><span style="color: #0000ff;">string</span><span style="color: #000000;"> EncryptProcess(</span><span style="color: #0000ff;">string</span><span style="color: #000000;"> source, </span><span style="color: #0000ff;">string</span><span style="color: #000000;"> d, </span><span style="color: #0000ff;">string</span><span style="color: #000000;"> n) <br><img  src="http://www.hugesoft.net/admin/Images/OutliningIndicators/ExpandedBlockStart.gif" id="Highlighter_160_423_Open_Image" alt="" align="top"><img  src="http://www.hugesoft.net/admin/Images/OutliningIndicators/ContractedBlock.gif" id="Highlighter_160_423_Closed_Image" style="display: none;" alt="" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Highlighter_160_423_Closed_Text" style="border: 1px solid #808080; display: none; background-color: #ffffff;">...</span><span id="Highlighter_160_423_Open_Text"><span style="color: #000000;">{ <br><img  src="http://www.hugesoft.net/admin/Images/OutliningIndicators/InBlock.gif" alt="" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">byte</span><span style="color: #000000;">[] N </span><span style="color: #000000;">=</span><span style="color: #000000;"> Convert.FromBase64String(n); <br><img  src="http://www.hugesoft.net/admin/Images/OutliningIndicators/InBlock.gif" alt="" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">byte</span><span style="color: #000000;">[] D </span><span style="color: #000000;">=</span><span style="color: #000000;"> Convert.FromBase64String(d); <br><img  src="http://www.hugesoft.net/admin/Images/OutliningIndicators/InBlock.gif" alt="" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;BigInteger biN </span><span style="color: #000000;">=</span><span style="color: #000000;"> </span><span style="color: #0000ff;">new</span><span style="color: #000000;"> BigInteger(N); <br><img  src="http://www.hugesoft.net/admin/Images/OutliningIndicators/InBlock.gif" alt="" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;BigInteger biD </span><span style="color: #000000;">=</span><span style="color: #000000;"> </span><span style="color: #0000ff;">new</span><span style="color: #000000;"> BigInteger(D); <br><img  src="http://www.hugesoft.net/admin/Images/OutliningIndicators/InBlock.gif" alt="" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;"> EncryptString(source, biD, biN); <br><img  src="http://www.hugesoft.net/admin/Images/OutliningIndicators/ExpandedBlockEnd.gif" alt="" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000;"> <br><img  src="http://www.hugesoft.net/admin/Images/OutliningIndicators/None.gif" alt="" align="top"> <br><img  src="http://www.hugesoft.net/admin/Images/OutliningIndicators/ExpandedBlockStart.gif" id="Highlighter_433_510_Open_Image" alt="" align="top"><img  src="http://www.hugesoft.net/admin/Images/OutliningIndicators/ContractedBlock.gif" id="Highlighter_433_510_Closed_Image" style="display: none;" alt="" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Highlighter_433_510_Closed_Text" style="border: 1px solid #808080; display: none; background-color: #ffffff;">/**/</span><span id="Highlighter_433_510_Open_Text"><span style="color: #008000;">/*</span><span style="color: #008000;"> <br><img  src="http://www.hugesoft.net/admin/Images/OutliningIndicators/InBlock.gif" alt="" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 解密过程,其中e、n是RSACryptoServiceProvider生成的Exponent、Modulus <br><img  src="http://www.hugesoft.net/admin/Images/OutliningIndicators/ExpandedBlockEnd.gif" alt="" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">*/</span></span><span style="color: #000000;"> <br><img  src="http://www.hugesoft.net/admin/Images/OutliningIndicators/None.gif" alt="" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">private</span><span style="color: #000000;"> </span><span style="color: #0000ff;">string</span><span style="color: #000000;"> DecryptProcess(</span><span style="color: #0000ff;">string</span><span style="color: #000000;"> source, </span><span style="color: #0000ff;">string</span><span style="color: #000000;"> e, </span><span style="color: #0000ff;">string</span><span style="color: #000000;"> n) <br><img  src="http://www.hugesoft.net/admin/Images/OutliningIndicators/ExpandedBlockStart.gif" id="Highlighter_592_855_Open_Image" alt="" align="top"><img  src="http://www.hugesoft.net/admin/Images/OutliningIndicators/ContractedBlock.gif" id="Highlighter_592_855_Closed_Image" style="display: none;" alt="" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Highlighter_592_855_Closed_Text" style="border: 1px solid #808080; display: none; background-color: #ffffff;">...</span><span id="Highlighter_592_855_Open_Text"><span style="color: #000000;">{ <br><img  src="http://www.hugesoft.net/admin/Images/OutliningIndicators/InBlock.gif" alt="" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">byte</span><span style="color: #000000;">[] N </span><span style="color: #000000;">=</span><span style="color: #000000;"> Convert.FromBase64String(n); <br><img  src="http://www.hugesoft.net/admin/Images/OutliningIndicators/InBlock.gif" alt="" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">byte</span><span style="color: #000000;">[] E </span><span style="color: #000000;">=</span><span style="color: #000000;"> Convert.FromBase64String(e); <br><img  src="http://www.hugesoft.net/admin/Images/OutliningIndicators/InBlock.gif" alt="" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;BigInteger biN </span><span style="color: #000000;">=</span><span style="color: #000000;"> </span><span style="color: #0000ff;">new</span><span style="color: #000000;"> BigInteger(N); <br><img  src="http://www.hugesoft.net/admin/Images/OutliningIndicators/InBlock.gif" alt="" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;BigInteger biE </span><span style="color: #000000;">=</span><span style="color: #000000;"> </span><span style="color: #0000ff;">new</span><span style="color: #000000;"> BigInteger(E); <br><img  src="http://www.hugesoft.net/admin/Images/OutliningIndicators/InBlock.gif" alt="" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;"> DecryptString(source, biE, biN); <br><img  src="http://www.hugesoft.net/admin/Images/OutliningIndicators/ExpandedBlockEnd.gif" alt="" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000;"> <br><img  src="http://www.hugesoft.net/admin/Images/OutliningIndicators/None.gif" alt="" align="top"></span></div>
<p><span style="font-size: small;"><span style="font-family: 宋体;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;以上方法经本人实际使用，效果良好，希望对朋友们有帮助。</span></span></p>
<p><span style="font-size: small;"><span style="font-family: 宋体;"></span></span>&nbsp;</p>
<p><span style="font-size: small;"><span style="font-family: 宋体;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PS：文中所用大整数类下载地址：<a  href="http://www.hugesoft.net/ContentPage.aspx?p1=010001&amp;p2=201">http://www.hugesoft.net/ContentPage.aspx?p1=010001&amp;p2=201（PS：原文此链接失效应使用原地址http://www.codeproject.com/KB/cs/biginteger.aspx）</a></span></span></p>
<p><span style="font-size: small;"><span style="font-family: 宋体;"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#ff6600">欢迎转载本文，转载请注册出处：炬源信息技术网（</font><a  href="http://www.hugesoft.net/"><font color="#ff6600">http://www.hugesoft.net/</font></a><font color="#ff6600">），谢谢！</font></span></span></p><img src ="http://www.cnitblog.com/ehuster/aggbug/68775.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/ehuster/" target="_blank">清洼</a> 2010-09-10 21:12 <a href="http://www.cnitblog.com/ehuster/archive/2010/09/10/68775.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>栅格艺术 anti-grain geometry--I</title><link>http://www.cnitblog.com/ehuster/archive/2009/06/06/59092.html</link><dc:creator>清洼</dc:creator><author>清洼</author><pubDate>Sat, 06 Jun 2009 12:03:00 GMT</pubDate><guid>http://www.cnitblog.com/ehuster/archive/2009/06/06/59092.html</guid><wfw:comment>http://www.cnitblog.com/ehuster/comments/59092.html</wfw:comment><comments>http://www.cnitblog.com/ehuster/archive/2009/06/06/59092.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cnitblog.com/ehuster/comments/commentRss/59092.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/ehuster/services/trackbacks/59092.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: &nbsp;&nbsp;<a href='http://www.cnitblog.com/ehuster/archive/2009/06/06/59092.html'>阅读全文</a><img src ="http://www.cnitblog.com/ehuster/aggbug/59092.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/ehuster/" target="_blank">清洼</a> 2009-06-06 20:03 <a href="http://www.cnitblog.com/ehuster/archive/2009/06/06/59092.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>栅格艺术 anti-grain geometry</title><link>http://www.cnitblog.com/ehuster/archive/2009/06/04/59063.html</link><dc:creator>清洼</dc:creator><author>清洼</author><pubDate>Thu, 04 Jun 2009 14:48:00 GMT</pubDate><guid>http://www.cnitblog.com/ehuster/archive/2009/06/04/59063.html</guid><wfw:comment>http://www.cnitblog.com/ehuster/comments/59063.html</wfw:comment><comments>http://www.cnitblog.com/ehuster/archive/2009/06/04/59063.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cnitblog.com/ehuster/comments/commentRss/59063.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/ehuster/services/trackbacks/59063.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp; 大学的时候，上工程制图，记得最清楚的就是一句&#8220;三维转成二维图&#8221;别的什么也没有记住，现在学习了二维图形库这么久，也有了不少的积累，我想抽空还是和大家分享一下，大家都能分享，大家才都能相互学习共同进步。<br>&nbsp;&nbsp;&nbsp; 提纲<br>&nbsp;&nbsp;&nbsp; 1.颜色<br>&nbsp;&nbsp;&nbsp; 2.绘制的空间<br>&nbsp;&nbsp;&nbsp; 3.知道颜色的访问器<br>&nbsp;&nbsp;&nbsp; 4.路径构建<br>&nbsp;&nbsp;&nbsp; 5.栅格器<br>&nbsp;&nbsp;&nbsp; 6.反走样<br>&nbsp;&nbsp;&nbsp; 7.样式<br>&nbsp;&nbsp;&nbsp; 8.图象<br>&nbsp;&nbsp;&nbsp; 9.字体<br>&nbsp;&nbsp;&nbsp; 10.泛型的结构设计<br><br>&nbsp;&nbsp;&nbsp; 这个计划可能会被修改，但大概的内容会是这个样子的。<br><br> <img src ="http://www.cnitblog.com/ehuster/aggbug/59063.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/ehuster/" target="_blank">清洼</a> 2009-06-04 22:48 <a href="http://www.cnitblog.com/ehuster/archive/2009/06/04/59063.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>责任</title><link>http://www.cnitblog.com/ehuster/archive/2009/02/26/54904.html</link><dc:creator>清洼</dc:creator><author>清洼</author><pubDate>Thu, 26 Feb 2009 14:32:00 GMT</pubDate><guid>http://www.cnitblog.com/ehuster/archive/2009/02/26/54904.html</guid><wfw:comment>http://www.cnitblog.com/ehuster/comments/54904.html</wfw:comment><comments>http://www.cnitblog.com/ehuster/archive/2009/02/26/54904.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/ehuster/comments/commentRss/54904.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/ehuster/services/trackbacks/54904.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 国家，集体，个人~~~~<br>&nbsp;&nbsp;&nbsp;&nbsp; 满足生活以后，真的就可以为了国家了~~~~<br><br><img src ="http://www.cnitblog.com/ehuster/aggbug/54904.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/ehuster/" target="_blank">清洼</a> 2009-02-26 22:32 <a href="http://www.cnitblog.com/ehuster/archive/2009/02/26/54904.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>重归网络</title><link>http://www.cnitblog.com/ehuster/archive/2009/02/07/54338.html</link><dc:creator>清洼</dc:creator><author>清洼</author><pubDate>Sat, 07 Feb 2009 14:36:00 GMT</pubDate><guid>http://www.cnitblog.com/ehuster/archive/2009/02/07/54338.html</guid><wfw:comment>http://www.cnitblog.com/ehuster/comments/54338.html</wfw:comment><comments>http://www.cnitblog.com/ehuster/archive/2009/02/07/54338.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/ehuster/comments/commentRss/54338.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/ehuster/services/trackbacks/54338.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 好像近一个月以来从网上消失了，不过事实也确实是如此的~~
<img src ="http://www.cnitblog.com/ehuster/aggbug/54338.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/ehuster/" target="_blank">清洼</a> 2009-02-07 22:36 <a href="http://www.cnitblog.com/ehuster/archive/2009/02/07/54338.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>新年背到家</title><link>http://www.cnitblog.com/ehuster/archive/2009/01/15/53800.html</link><dc:creator>清洼</dc:creator><author>清洼</author><pubDate>Thu, 15 Jan 2009 12:29:00 GMT</pubDate><guid>http://www.cnitblog.com/ehuster/archive/2009/01/15/53800.html</guid><wfw:comment>http://www.cnitblog.com/ehuster/comments/53800.html</wfw:comment><comments>http://www.cnitblog.com/ehuster/archive/2009/01/15/53800.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/ehuster/comments/commentRss/53800.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/ehuster/services/trackbacks/53800.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2周之内坏了三台机器，这就不说了，也许是&#8220;她&#8221;们真的受不了我了，今天发个博客也半道给我出问题。。。。。以前FF出问题之后，内容起码还是有的，只要接着写就好了，今天可好，千八百字全没了。。。。奶奶的<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 今天想说几点就是程序员在修练的时候需要的几个过程，计算机应用技术，程序设计语言，面向对象程序设计，算法，图形学，软件工程，UML语言，软件测试，这也当成是软件的八股吧~~~~<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 当然，最重要的还是社会现实，生存问题会帮你改变一切~~~~想要飘的前提是生存无忧~~~<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 今天才知道&#8220;跳槽&#8221;这个词最早是用来说妓女和嫖客的~~~~&#8220;绿帽&#8221;这个词也是源自元代与&#8220;妓女&#8221;及其亲属有关的。。。。。。<br><img src ="http://www.cnitblog.com/ehuster/aggbug/53800.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/ehuster/" target="_blank">清洼</a> 2009-01-15 20:29 <a href="http://www.cnitblog.com/ehuster/archive/2009/01/15/53800.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>C++  函数指针</title><link>http://www.cnitblog.com/ehuster/archive/2009/01/06/53553.html</link><dc:creator>清洼</dc:creator><author>清洼</author><pubDate>Tue, 06 Jan 2009 14:56:00 GMT</pubDate><guid>http://www.cnitblog.com/ehuster/archive/2009/01/06/53553.html</guid><wfw:comment>http://www.cnitblog.com/ehuster/comments/53553.html</wfw:comment><comments>http://www.cnitblog.com/ehuster/archive/2009/01/06/53553.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cnitblog.com/ehuster/comments/commentRss/53553.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/ehuster/services/trackbacks/53553.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 先前在一个库中看到函数作为一个指针传到对象里面，对集合中所有的元素进行某种操作。 <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 今天就函数指针说明几点：<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 不存在可以指向任何类型的通用函数指针<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 非静态的成员函数地址不是一个指针<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 函数指针一般被用来做回调(callback)<br><br><img src ="http://www.cnitblog.com/ehuster/aggbug/53553.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/ehuster/" target="_blank">清洼</a> 2009-01-06 22:56 <a href="http://www.cnitblog.com/ehuster/archive/2009/01/06/53553.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>程序员&amp;工程师|工人</title><link>http://www.cnitblog.com/ehuster/archive/2009/01/04/53409.html</link><dc:creator>清洼</dc:creator><author>清洼</author><pubDate>Sat, 03 Jan 2009 16:00:00 GMT</pubDate><guid>http://www.cnitblog.com/ehuster/archive/2009/01/04/53409.html</guid><wfw:comment>http://www.cnitblog.com/ehuster/comments/53409.html</wfw:comment><comments>http://www.cnitblog.com/ehuster/archive/2009/01/04/53409.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/ehuster/comments/commentRss/53409.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/ehuster/services/trackbacks/53409.html</trackback:ping><description><![CDATA[<p>&nbsp;&nbsp;&nbsp;&nbsp; 奇怪的便是，但经过运算之后得到结果确实是大多数人。我们除了这些之外明显还需要别的，很多很多的东西。<br>&nbsp;&nbsp;&nbsp;&nbsp; 八小时外的程序员都在干什么，做自己喜欢的事吧~~~上网，游戏，<br>&nbsp;&nbsp;&nbsp;&nbsp; 但我觉得书法，绘画，天文，地理也都还不错，有时候看看食谱中医啥的，也挺好~~~可能已经远离游戏的年代了吧。</p>
<img src ="http://www.cnitblog.com/ehuster/aggbug/53409.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/ehuster/" target="_blank">清洼</a> 2009-01-04 00:00 <a href="http://www.cnitblog.com/ehuster/archive/2009/01/04/53409.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>AGG_004 打个比方解释anti grain geometry 绘制 </title><link>http://www.cnitblog.com/ehuster/archive/2008/11/18/Antigraingeometry.html</link><dc:creator>清洼</dc:creator><author>清洼</author><pubDate>Mon, 17 Nov 2008 16:04:00 GMT</pubDate><guid>http://www.cnitblog.com/ehuster/archive/2008/11/18/Antigraingeometry.html</guid><wfw:comment>http://www.cnitblog.com/ehuster/comments/51572.html</wfw:comment><comments>http://www.cnitblog.com/ehuster/archive/2008/11/18/Antigraingeometry.html#Feedback</comments><slash:comments>6</slash:comments><wfw:commentRss>http://www.cnitblog.com/ehuster/comments/commentRss/51572.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/ehuster/services/trackbacks/51572.html</trackback:ping><description><![CDATA[　　今天突然想起一个比方来介绍agg里面的一组关系，rasterizer,scanline,和renderer之间的关系．<br>　　它们就如同你在黑板面前拿着一本一册，用粉笔画黑板报．那本画册就是rasterizer,他存储图形，黑板套装（包括粉笔）就是我们的renderer，而你就是中间的scanline. AGG中就是通过scanline把rasterizer中存放的栅格信息用粉笔pixfmt_renderer转化到黑板rendering_buffer中，完成最终的绘制．具体过程大家还是要读代码～～:)!!!好运 
<img src ="http://www.cnitblog.com/ehuster/aggbug/51572.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/ehuster/" target="_blank">清洼</a> 2008-11-18 00:04 <a href="http://www.cnitblog.com/ehuster/archive/2008/11/18/Antigraingeometry.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>AGG_03 绘制核心图解</title><link>http://www.cnitblog.com/ehuster/archive/2008/10/23/50614.html</link><dc:creator>清洼</dc:creator><author>清洼</author><pubDate>Thu, 23 Oct 2008 13:16:00 GMT</pubDate><guid>http://www.cnitblog.com/ehuster/archive/2008/10/23/50614.html</guid><wfw:comment>http://www.cnitblog.com/ehuster/comments/50614.html</wfw:comment><comments>http://www.cnitblog.com/ehuster/archive/2008/10/23/50614.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/ehuster/comments/commentRss/50614.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/ehuster/services/trackbacks/50614.html</trackback:ping><description><![CDATA[为了作出一个进度报告，将前一阶段的工作书面化一下，所以画了几个图，在这只能凭记忆，恢复一下了。<br><img height=239 alt=agg_graphic_core src="http://www.cnitblog.com/images/cnitblog_com/ehuster/agg_graphics_core.jpg" width=253 border=0 longDesc=AGG绘制核心><br>rendering buffer (frame buffer　我们可以理解为显存)存储一块连续的内存区域，不知道自身具体存储内容的结构，只按照行的长度，向外提供行指针，有宽、高、步长属性。<br><br>span render 水平区段绘制器，用于绘制scanline中的段，与rendering buffer直接交互，将scanline的内容映射到显存中。<br><br>outline　轮廓线，将矢量数据转化为点阵格式　rasterizer 内部类。<br>scanline 将点阵格式的点集合，转化成为renderer使用的水平区段。<br><br>renderer 将点阵数据填上颜色放入显存中<br><br>rasterizer 栅格器　用于转化上层的矢量数据到栅格集合中。<br><br>Vector transitions 矢量变化，一个复杂的集合对应着n多convs 对点集合的操作。 
<img src ="http://www.cnitblog.com/ehuster/aggbug/50614.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/ehuster/" target="_blank">清洼</a> 2008-10-23 21:16 <a href="http://www.cnitblog.com/ehuster/archive/2008/10/23/50614.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>