怎麼給漢字加密
① 怎麼用凱撒密碼加密一句中文
凱撒密碼作為一種最為古老的對稱加密體制,在古羅馬的時候都已經很流行,他的基本思想是:通過把字母移動一定的位數來實現加密和解密。明文中的所有字母都在字母表上向後(或向前)按照一個固定數目進行偏移後被替換成密文。例如,當偏移量是3的時候,所有的字母A將被替換成D,B變成E,以此類推X將變成A,Y變成B,Z變成C。由此可見,位數就是凱撒密碼加密和解密的密鑰。我對「怎麼用凱撒密碼加密一句中文」產生了疑問,實際上解決方法可以有很多種,例如用數組中不斷地「大、風、方……」這些詞的簡單位移,事實上經過搜索,我選擇了使用的變換來完成。即,可以用漢字對應的字元碼來進行變換操作,這樣出來的還是漢字。比如漢字「一」是0x4e00,凱撒移位為1的話0x4e00+1=0x4e01,對應的漢字是「丁」,如果移位為三,就是0x4e03,對應漢字是「七」。將漢字范圍內的整型轉換為16進制字元串作為後綴,前面加入u,形成對應的unicode值。這段代碼並不復雜,遇到的問題在於:當我在main函數調用時,注釋掉的該行(如下)不能夠實現我把轉義字元去掉,即最後輸出的是u593a這種形式,而非unicode值對應的「太」。只要把得到的報文中的「」換成「」,我想就能正常地將Unicode輸出成中文了,首先想到的是使用字元串的方法。使用(「\「,「「),但是發現輸出結果沒有任何變化。 解決方法是:查了下API文檔,方法的定義是:public String replaceAll( String regex,String replacement) 。
② 有什麼加密能把中文加密成只有字母和數字的加密演算法
可以用Base64編碼中文,但Base64里可能出現/和=這兩個符號.如果用漢字內碼的十六進製表示,可以達到只有數字和字母的效果,解碼也比較容易.
③ 如何用c語言加密和解密漢字
漢字應該是char類型的數據。你可以用強制類型轉換將其轉換為ASCII碼,加密的時候加上2,然後下次解密的時候減去2,在強制轉換為char類型的數據。代碼大概就像這樣:
int JiaMi(char s)
{
return (int)(s + 2);
}
char JieMi(int code)
{
return (char)(code - 2);
}