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