漢字加密解密程序的創作及實現
時間:2022-09-21 08:40:00
導語:漢字加密解密程序的創作及實現一文來源于網友上傳,不代表本站觀點,若需要原創文章可咨詢客服老師,歡迎參考。
摘要:本文根據目前國內漢字加密解密技術稀缺、密文字符可讀性和可復制性太差的現狀,提出并實現了一種基于GB2312漢字編碼的加密解密解決方案。在文中詳述了系統的架構、核心算法的實現步驟,并對系統的加解密性能和特征做了分析討論。
關鍵詞:GB2312漢字編碼漢字信息加密可移植加密解密系統
1、隨著通信技術和計算機技術的高速發展以及互聯網應用的日益普及,計算機網絡已經成為大型公司、金融機構、教育機構和政府部門等諸多領域重要信息的交換手段,網絡上流通的信息量也呈幾何級數增加。但在網絡進行信息交換的同時存在著諸多不安全因素,比如信息被竊聽、篡改和偽造等,為了有效的保護、存儲、管理和使用網上的私有信息,一方面可以在物理方面采取一些措施,如增強網絡物理線路和中間節點的安全性,另一方面可以采用積極主動的防護措施,比如對傳輸中的信息進行加密來降低信息泄露而可能導致的損失。然而,目前大多數主流信息加密解密技術都只能應用于如字母、數字、標點符號等單字節字符構成的信息,而可用于計算機漢字這種雙字節字符所構成的信息文件加密的既簡單又可靠的密碼體制卻不多,并且目前加密方法中加密所得的大多數密文可讀性及可復制性太差,出現太多不易書寫或者辨認的密文字符,如加密后密文字符“ㄆж鞲áモ⒆∷^Я┲璺”,其可復制性和可讀性太差,給辨認、書寫或復制帶來極大不便,不利用密文信息的保存和傳遞,本文旨在改善這一缺陷。
2漢字編碼
漢字的數量是英文字母數量的幾個數量級,基本漢字(漢字的偏旁與部首)也比英文字母多得多,并且漢字的組合也比英文字母簡單的前后組合復雜得多,因此我們不能用ASCII碼或者其它簡單的單字節編碼代替漢字。常用漢字有3500多個,有“總匯漢字之大成”評價的《康熙字典》收錄漢字四萬多個,在1994年出版的《中華字海》收錄的漢字則多達87019個,而已經通過專家鑒定的北京國安資訊設備公司的漢字字庫,收入有出處的漢字有91251個。
目前漢字編碼中主要用到的有三類,包括GBK,GB2312和Big5,本文研究以GB2312編碼為例。GB2312又稱國標碼,由國家標準總局在1981年并實施,通行于大陸。它是一個簡化字的編碼規范,共有7445個圖形字符,其中漢字占6763個。GB2312規定“對任意一個圖形字符都采用兩個字節表示,每個字均采用七位編碼表示”,習慣上稱第一個字節為“高字節”,第二個字節為“低字節”。GB2312中漢字的編碼范圍為,高位字節為0xB0-0xF7(對應十進制為176-247),低位字節0xA1-0xFE(對應十進制為161-254)。
GB2312將代碼表分為72個區(0XB0-0XF7),對應高位字節;每個區有94個位(0XA1-0XFE),對應低位字節,兩個字節的值合稱為區位碼。其中01-09區為符號、數字區,16-87區為漢字區(0xb0-0xf7),10-15區、88-94區是有待進一步標準化的空白區。
3加密/解密體制
在本文所設計的漢字加密系統中,首先從指定的可識別格式(如文本文檔)的文檔中讀取漢字信息,并按照GB2312編碼標準將漢字轉換成數字形式,再將漢字的數字形式以特定的加密算法與加密密鑰進行加密運算,并將得到的結果轉換成GB2312漢字密文字符,最后輸出成密文文檔。相應的,在解密系統中,首先從特定格式密文文檔中讀入加密后的漢字,再將密文漢字按GB2312編碼標準轉換成數字形式,然后依據解密算法與解密密鑰進行解密運算,將運算結果轉換成GB2312明文字符,最后輸出成明文文檔。整個系統結構如圖一所示。
3系統實現
3.1漢字編碼特征分析
GB2312編碼中,漢字編碼高位字節范圍為0xB0-0xF7(176-247),共72種取值,低位字節范圍為0xA1-0xFE(161-254),共94種取值。為了提高密文字符的可讀性和可復制性,方便密文的保存和傳遞,加密后的漢字密文取值范圍也指向GB2312漢字區域。
3.2漢字與數字編碼之間的相互轉化
在GB2312字符編碼表中,漢字用兩個字節表示,假設一個漢字的高字節為M1,低字節為M2,C1和C2則分別為密文漢字的高字節和低字節。E1、E2分別為對高、低字節的加密運算函數,則加密的轉換可表示為:
C1=[E1(M1)(mod72)]+176
C2=[E2(M2)(mod94)]+161
解密運算為加密運算的逆過程,假定D1、D2分別為對高、低字節的解密運算函數,解密時對密文漢字的高低字節分別進行解密運算得到明文高、低位字節:
M1=[D1(C1)(mod72)]+176
M2=[D2(C1)(mod94)]+161
在本系統中,軟件先從指定格式文檔中逐個讀取漢字,將漢字的高位和低位轉換成兩個數字并分別保存到變量M1、M2中,對M1和M2同時進行加密或者解密運算后得到C1和C2,M1和M2進行轉換后可組合成一個GB2312編碼的明文漢字,C1和C2進行轉換后則可組合成一個GB2312編碼的密文漢字。
3.3系統算法實現
整個系統實現的大致算法如下:
3.3.1系統初始化包括漢字存儲文件的讀取,并從文件中逐個提取需要加密或解密的字符文字存儲到相應變量中;設定加、解密判定參數以方便系統智能選擇加密或解密操作。
3.3.2漢字數字化即將漢字的兩個字節獨立開來,并將之轉換成以序號為標識的數字形式,設讀入的漢字為GBword,高字節存放于字符變量M1,低字節存放于字符變量M2。則
M1=(unsignedchar)GBword.at(0)-176
M2=(unsignedchar)GBword.at(1)-161
3.3.3加解密操作判定依據初始化加解密參數對讀入的字符進行操作判定,如果是加密則進行加密操作,否則進行解密操作。
3.3.4加密或者解密運算本系統中多種算法均可套用,以凱撒挪移碼(CaesarShiftCipher)為例,加密運算為:
C1=[E1(M1)(mod72)]+176=[M1+4(mod72)]+176
C2=[E2(M2)(mod72)]+161=[M2+5(mod94)]+161
解密運算為:
M1=[D1(C1)(mod72)]+176=[C1-4(mod72)]+176
M2=[D2(C2)(mod72)]+161=[C2-5(mod94)]+161
3.3.5數字漢字化
將兩個所得的數字按GB2312編碼表的規律轉換成漢字,加密或解密后GB2312編碼的高字節為C1+176或M1+176,低字節為C2+161或M2+161,兩兩組合便可得出GB2312的16進制數字編碼,進而得到漢字。
3.3.6自動創建一個指定格式的文件,并將已加密或解密的漢字及相應其他未作加、解密處理的字符逐字寫入到該文件中。并判斷原文件中是否所有漢字均已經完成加、解密操作,如果是則跳到下一步,否則返回第二步。
3.3.7保存解密所得的明文文件或加密所得的密文文件,整個系統的加、解密操作結束。
整個系統的算法如圖二所示。
4測試及總結
限于篇幅,本文以包含“加密系統實例”這一短語的文本文檔為例作測試,該短語的GB2312十六進制編碼分別為“BCD4BDE3C3DCCFB5CDB3CABEC0BE”,每個漢字中前面兩個數字為一個位表示區號,后面兩個數字為一個位表示區中的序號。利用本文選用的算法步驟4中的公式進行加密后密文十六進制數字形式為“C0D9C1E8C7E1D3BAD1B8CEC3C4C3”,按照GB2312編碼機制對應的漢字密文為:“蕾凌輕雍迅蚊穆”。再經解密算法可以正確的得到十六進制編碼字符串“BCD4BDE3C3DCCFB5CDB3CABEC0BE”,即為GB2312編碼的漢字明文“加密系統實例”。
針對目前現有漢字加密技術在密文信息傳遞方面存在的缺陷,本文采用改進密文取值域的思路所設計的加解密系統不但可以有效地進行漢字信息加密和解密,還可以根據具體需求非常方便地移植其它加解密算法,系統得到的密文不包含空格、英文、希臘文、俄文、日文和其它可讀性較差的符號,有助于密文信息的準確傳遞和復制。本文所設計的系統簡單實用、可移植性強,加密的密文可讀性和可復制性好,有較高實用價值。當然,該系統也還有一些不足,比如無法對各種常見格式的漢字編輯文檔進行讀寫,這些都需要進一步完善和改進。
- 上一篇:學習心得體會參考五則
- 下一篇:暑假中學師德培訓工作總結