<a href="http://images.cnblogs.com/cnblogs_com/LoveJenny/201106/201106152315554874.png"></a>
也就是說加密後的資料不再是:N8lAaHMFtSAQgaf3+RUFng==
<a href="http://images.cnblogs.com/cnblogs_com/LoveJenny/201106/201106152315563370.png"></a>
希望encryptedString是"120387789370480938409832840923492384028934…”;
當然上面的數字是我随便亂敲的。
那麼如何實作純數字呢??
想法很簡單,隻要将字元變成Ascll 碼就可以了。例如a:97, =:61;
那麼encryptedString 就可以變成 97 81 61 33 44 55 。。。;
但是如果合在一起的話就變成了978161334455.
問題來了:我怎麼知道97是a,而不是9,7 呢?
如果你知道計算機是二進制表示的話,你就應該可以想到,我們可以将97變成0,1形式。
進而上面的數字就可以變成0001 0011 011 111 001.
OK,我們還有2,3,4,5,6,7,8,9,沒有使用,是以可以使用任意一個字元來分隔。
例如将上面的數字變成0001 2 0011 2 011 2 111 2 001
當然上面是可以完成數字的編碼的,但是還有3,4,5,6,7,8,9都被浪費掉了,
是以在這裡我們不應該選擇2進制,最好應該選擇9進制。什麼??9進制?
對,9進制:0,1,2,3,4,5,6,7,8,10.其中10代表9,然後9作為分隔符号;
可惜的是C#代碼不支援9進制,是以為了友善選擇8進制了。
代碼如下:
encryptedNumberString =11697091549101914191109115910691649123
91019121914791419146963953912291259106915691479759759
好了,已經成功的分隔了,剩下的就是從這對數字組成的字元串中重新提取字元了。
結果如下:
<a href="http://images.cnblogs.com/cnblogs_com/LoveJenny/201106/20110615231609853.png"></a>
剩下的靠讀者自己發揮了…
本文轉自LoveJenny部落格園部落格,原文連結:http://www.cnblogs.com/LoveJenny/archive/2011/06/15/2082213.html,如需轉載請自行聯系原作者