緙栧啓涓涓姞瀵嗙殑鍗蟲椂閫氳紼嬪簭錛堥毦搴︾郴鏁?/span>0.8錛?/span>
琚洶鎵板湪鍔犲瘑鐨勭畻娉曚腑錛屽紑濮嬫兂鐢≧SA綆楁硶錛屽洜涓篟SA鍔犲瘑綆楁硶 鏄彟澶栦竴涓鐩傘傚彲浠ラ『渚垮啀甯彟澶栦竴涓悓瀛﹀啓涓涓嬶紝錛岀粨鏋滄悶浜嗗崐澶╁彂鐜癛SA鐢ㄦ潵鍔犲瘑鍗充嬌閫氳娑堟伅涓嶅お鍚堥傦紝錛?br />鑷沖皯浠ユ垜鐨勮兘鍔涘啓涓嶅嚭涓涓熷害寰堝揩鐨勫姞瀵嗚В瀵嗗嚱鏁幫紝鏃㈢劧鏄嵆浣塊氳宸ュ叿錛岄熷害鎱㈢殑鍜岃湕鐗涗技鐨勮繕閫氳涓狿錛岋紝
涓嶈繃鍏墮棿鏌ヤ簡澶ч噺璧勬枡瀵筊SA綆楁硶鐨勭壒鎬ф湁浜嗕竴瀹氱殑浜嗚В錛屽叾涓昏闅懼害鍦ㄤ簬澶ф暟鐨勮綆楋紝榪欎釜璁$畻鐪熶笉鏄竴鑸殑楹葷儲錛屾兂鍒拌繖閲岃寰楄嚜宸辯殑鏁板鍔熷簳澶急浜?br />鎼滀簡閭d箞澶氳祫鏂欑幇鍦ㄨ繕鑳借璧鋒潵鐨勬瘮杈冨疄鐢ㄧ殑涓涓叕寮忔槸錛?span style="font-size: 12pt" lang="EN-US">NR mod D = ( ( N mod D )R ) mod D
鍦–SDN鏌愪漢鐨勫崥瀹笂鐪嬪埌鐨勶紝閲岄潰榪樻湁寰堝鎺ㄨ鍦板潃錛?a >http://blog.csdn.net/fireseed/archive/2005/03/23/327444.aspx
鍚庢潵閫夋嫨浜咲EC鍔犲瘑綆楁硶錛屼唬鐮佹潵鑷蟲煇鍗氬錛屻傚繕璁板摢閲屽紕鏉ョ殑浜嗐?br />浠g爜濡備笅錛?/p>

public string JiaMi(string pToEncrypt,string KeyWord)

{
DESCryptoServiceProvider des = new DESCryptoServiceProvider(); //鎶婂瓧絎︿覆鏀懼埌byte鏁扮粍涓?/span>

byte[] inputByteArray = Encoding.Default.GetBytes(pToEncrypt);
//byte[] inputByteArray=Encoding.Unicode.GetBytes(pToEncrypt);

des.Key = ASCIIEncoding.ASCII.GetBytes(KeyWord); //寤虹珛鍔犲瘑瀵硅薄鐨勫瘑閽ュ拰鍋忕Щ閲?/span>
des.IV = ASCIIEncoding.ASCII.GetBytes(KeyWord); //鍘熸枃浣跨敤ASCIIEncoding.ASCII鏂規硶鐨凣etBytes鏂規硶
MemoryStream ms = new MemoryStream(); //浣垮緱杈撳叆瀵嗙爜蹇呴』杈撳叆鑻辨枃鏂囨湰
CryptoStream cs = new CryptoStream(ms, des.CreateEncryptor(), CryptoStreamMode.Write);

cs.Write(inputByteArray, 0, inputByteArray.Length);
cs.FlushFinalBlock();

StringBuilder ret = new StringBuilder();
foreach (byte b in ms.ToArray())

{
ret.AppendFormat("{0:X2}", b);
}
//ret.ToString();
return ret.ToString();
}
//DEC 瑙e瘑榪囩▼
public string JieMi(string pToDecrypt,string KeyWord)

{
DESCryptoServiceProvider des = new DESCryptoServiceProvider();

byte[] inputByteArray = new byte[pToDecrypt.Length / 2];
for (int x = 0; x < pToDecrypt.Length / 2; x++)

{
int i = (Convert.ToInt32(pToDecrypt.Substring(x * 2, 2), 16));
inputByteArray[x] = (byte)i;
}

des.Key = ASCIIEncoding.ASCII.GetBytes(KeyWord); //寤虹珛鍔犲瘑瀵硅薄鐨勫瘑閽ュ拰鍋忕Щ閲忥紝姝ゅ奸噸瑕侊紝涓嶈兘淇敼
des.IV = ASCIIEncoding.ASCII.GetBytes(KeyWord);
MemoryStream ms = new MemoryStream();
CryptoStream cs = new CryptoStream(ms, des.CreateDecryptor(), CryptoStreamMode.Write);

cs.Write(inputByteArray, 0, inputByteArray.Length);
cs.FlushFinalBlock();

StringBuilder ret = new StringBuilder(); //寤虹珛StringBuild瀵硅薄錛孋reateDecrypt浣跨敤鐨勬槸嫻佸璞★紝蹇呴』鎶婅В瀵嗗悗鐨勬枃鏈彉鎴愭祦瀵硅薄

return System.Text.Encoding.Default.GetString(ms.ToArray());
}

//浼犺繘鏉ョ殑鍙傛暟灝辨槸浣犺鍔犲瘑鐨勯偅涓瓧絎︿覆鍜屽瘑閽?/span>
鍚庢潵榪樼湅浜哅D5鍔犲瘑綆楁硶錛屼富瑕佹槸鎯蟲悶涓涓敞鍐岀櫥褰曪紝鐢ㄦ潵鍔犲瘑鐢ㄦ埛瀵嗙爜銆?br />鍦ㄦ煡璧勬枡鐨勮繃紼嬩腑鍦–SDN鏌愪漢鐨勫崥瀹笂鐪嬪埌涓鏉℃湁瓚g殑淇℃伅錛屽啓鐨勬槸鏌怣D5鐮磋В緗戠珯鐨勫箍鍛婏紝澶ф鐨勬剰鎬濆氨鏄紝浠栦滑閭d釜緗戠珯鎶婃墍鏈夋墜鏈哄彿鐮侊紝鐢熸棩錛屼互鍙婂嚑浣嶇殑鏁板瓧鍜屽瓧姣嶇殑鎵鏈夌粍鍚堢殑MD5鐮侀兘璁$畻鍑烘潵浜嗭紝鎬誨叡鏈?56浜挎潯淇℃伅濂藉儚銆傘傝繕鍦ㄤ笉鏂殑澧為暱褰撲腑錛屽彲鎬曠殑淇℃伅錛屻傦紝榪欐牱涓鏉ュ鏋滃緱鍒癕D5鍔犲瘑鐮侊紝涓鑸殑鐢ㄦ埛瀵嗙爜閮借兘鎵懼嚭鏉ヤ簡銆傘?br />鐪嬫潵綆楁硶涓鏃﹀叕甯冨氨綆楁槸閾滃閾佸涔熸湁浜轟細鎷兼鍘繪挒錛岋紝鐪熷彲鎬?br />
鎼炰簡鍗婂ぉ鑷繁鐨勮紼嬭璁¢兘娌℃湁鍐欏ソ錛岃刀绱у幓鎼炲畾~~

]]>