国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于多語言的實(shí)用簡易加解密算法的研究與實(shí)踐

2017-03-29 07:45李進(jìn)豪
現(xiàn)代計(jì)算機(jī) 2017年4期
關(guān)鍵詞:加密算法值域定義域

李進(jìn)豪

(廣東省海洋工程職業(yè)技術(shù)學(xué)校,廣州 510320)

基于多語言的實(shí)用簡易加解密算法的研究與實(shí)踐

李進(jìn)豪

(廣東省海洋工程職業(yè)技術(shù)學(xué)校,廣州 510320)

在實(shí)際項(xiàng)目開發(fā)中,常需要對一些關(guān)鍵信息進(jìn)行簡單的加解密,以保證關(guān)鍵信息的保密性?;趯?shí)際工作項(xiàng)目和需求,重點(diǎn)探索基于多語言的實(shí)用簡易加解密算法的構(gòu)建和可行性分析,并以實(shí)踐案例輔以佐證。

多語言;加密;解密;算法;案例

0 引言

加密,是以某種特殊的算法改變原有的信息數(shù)據(jù),使得未授權(quán)的用戶無法了解信息的內(nèi)容。加密的逆過程為解密,即將該加密信息轉(zhuǎn)化為原來的形式。本文主要根據(jù)筆者的實(shí)際工作項(xiàng)目和需求,重點(diǎn)探索基于多語言的實(shí)用簡易加解密算法的構(gòu)建及應(yīng)用(適用范圍:ASCII碼取值范圍為[33,126])。

1 問題的提出

在實(shí)際項(xiàng)目開發(fā)中,我們常需要對一些關(guān)鍵信息進(jìn)行簡單的加解密,以保證關(guān)鍵信息的保密性。如果這些關(guān)鍵信息屬于多系統(tǒng)共享訪問信息,將涉及多語言對同一信息進(jìn)行加解密。例:使用C#語言設(shè)計(jì)的題庫管理系統(tǒng)(參考答案屬于關(guān)鍵信息),根據(jù)要求發(fā)布試題后,一般情況下常在基于C#開發(fā)的考試系統(tǒng)中使用,但有時(shí)也會在基于VB.NET開發(fā)的環(huán)境下使用(兼容),也會在基于VBA開發(fā)的PPT或Word環(huán)境下使用,也會在基于ActionScript 3.0開發(fā)的Flash益智游戲中使用。因此,如何基于多語言設(shè)計(jì)一個(gè)簡單實(shí)用的加解密算法,以適用實(shí)際工作需要,滿足某些特殊需求,是我們必須解決的問題之一。

2 一種簡單實(shí)用的加解密算法

2.1 基本原理

(1)定義

●chr():將ASCII碼轉(zhuǎn)換為字符

●asc():將字符轉(zhuǎn)換為ASCII碼

●len():獲取字符串長度

●mod:求余數(shù)

●abs():取絕對值

●mid(str,i,j):從字符串str的第i位開始,截取j位字符

●psstr:可變加密字符串(兩個(gè)字符以上,是加解密公式的關(guān)鍵信息,由用戶自定義)

●tm:特征信息(與加密信息相關(guān)的特征信息,可以自定義)

●xx:加密前的字符

●jm:加密后的字符

●i:加密字符串的順序位

●常量:n=6

●變量:k=i mod LEN(passtr)

●變量:passtrnum=Abs(Asc(Mid(passtr,K+1,1))-Asc(Mid(passtr,1,1)))Mod n

(2)加解密算法

加密:jm=Chr(Asc(xx)-(i Mod n)-(Len(tm)Mod n)-passtrnum)

解密:xx=Chr(Asc(xx)+(i Mod n)+(Len(tm)Mod n)+passtrnum)

適用范圍:ASCII碼取值范圍為[33,126],常用可打印的字符。

可變加密字符串(psstr):由用戶自定義,可存放文本文件中,一般在加密時(shí)自定義或由計(jì)算機(jī)自動隨機(jī)產(chǎn)生,解密時(shí)需提供同樣的可變加密字符串。

2.2 算法的定義域與值域

(1)加密算法的定義域與值域

●定義域

根據(jù)算法的適用范圍,可知本算法的定義域?yàn)閇33,126]。

●值域

從加密算法的定義(n=6)可知,“i Mod 6”的值域?yàn)閇0,5],“Len(tm)Mod 6”的值域?yàn)閇0,5],passtrnum的值域?yàn)閇0,5],故運(yùn)算式(i Mod 6)+(Len(tm)Mod 6)+ passtrnum的值域?yàn)閇0,15]。

根據(jù)上述分析,加密算法“Asc(xx)-(i Mod 6)-(Len(tm)Mod 6)-passtrnum”的值域?yàn)閇18,126]。

(2)解密算法的定義域與值域

解密算法是加密算法的逆運(yùn)算,故加密算法的定義域?yàn)榻饷芩惴ǖ闹涤?,加密算法的值域?yàn)榻饷芩惴ǖ亩x域。根據(jù)分析可知,解密公式的定義域與值域是:

定義域:[18,126]

值域:[33,126]

(3)結(jié)論

根據(jù)上述討論,加密算法與解密算法的定義域與值域均在ASCII碼的有效范圍中,因此上述加解密算法是可行、有效的。絕大多數(shù)情況下,存儲時(shí)所有在ASCII碼有效范圍中的字符均可以直接保存,但若存在有特別存儲要求的文件格式,則需要經(jīng)過特殊處理。此外,如果需要加密的信息范圍較小且可知,但加密后的信息有特別要求,則可根據(jù)值域的要求,在加解密算法中加上一個(gè)常數(shù)mycon,以適應(yīng)實(shí)際需要。此時(shí),加解密算法變形為:

加密:jm=Chr(Asc(xx)-(i Mod n)-(Len(tm)Mod n)–passtrnum+mycon)

解密:xx=Chr(Asc(xx)+(i Mod n)+(Len(tm)Mod n)+passtrnum-mycon)

2.3 通用加解密程序

2.4 特殊應(yīng)用示例1

(1)應(yīng)用要求

參考答案(英文字母),存儲格式為XML文件。

(2)定義域與值域

●定義域:[65,122]

●值域:[50,122]

●說明:存在特殊字符“<”和“>”,需要使用替代字符“(”和“)”

(3)示例

tm=”中國近代史上第一個(gè)不平等條約是()”

passtr="66"

原信息:B

加密后信息:(

2.5 特殊應(yīng)用示例2

(1)應(yīng)用要求

以“日期+時(shí)間”命名的文件名(純數(shù)字),需要對該文件名進(jìn)行簡單加解密。

(2)定義域與值域

使用加解密的變形算法,mycon取值為32。

●定義域:[48,57],對應(yīng)字符為0至9

●值域:[65,89]

●說明:值域的對應(yīng)字符為A至Y,可以滿足文件名命名的特殊需求

(3)示例

tm=”2016111601839710”

passtr="16ABC123XYZ"

原信息:2016111601839710

加密后信息:HFENHLJMEDOJPLJH

3 常用編程語言的實(shí)現(xiàn)技術(shù)

在上述算法中,基于多語言對信息進(jìn)行加解密,獲取字符串長度、求余數(shù)、取絕對值、截取字符等,常有編程語言都有標(biāo)準(zhǔn)的函數(shù),限于篇幅關(guān)系,不作討論。下文主要討論算法中的核心運(yùn)算“字符與ASCII碼”的相互轉(zhuǎn)換(以字符“A”對應(yīng)的ASCII碼65為例,字符“A”的變量名為st,65的變量名stnum)。

3.1 C#

●字符轉(zhuǎn)換為ASCII碼:(int)st。

●ASCII碼轉(zhuǎn)換為字符:(char)stnum。

3.2 C++

●字符轉(zhuǎn)換為ASCII碼:(int)st。

●ASCII碼轉(zhuǎn)換為字符:(char)stnum。

3.3 VB.NET

●字符轉(zhuǎn)換為ASCII碼:Asc(st)。

●ASCII碼轉(zhuǎn)換為字符:Chr(stnum)。

3.4 VBA

●字符轉(zhuǎn)換為ASCII碼:Asc(st)。

●ASCII碼轉(zhuǎn)換為字符:Chr(stnum)。

3.5 Java

●字符轉(zhuǎn)換為ASCII碼:(int)st.getBytes()。

●ASCII碼轉(zhuǎn)換為字符:(char)stnum。

3.6 JavaScript

●字符轉(zhuǎn)換為ASCII碼:st.charCodeAt(0);

●ASCII碼轉(zhuǎn)換為字符:String.fromCharCode(stnum)。

3.7 ActionScript

●字符轉(zhuǎn)換為ASCII碼:st.charCodeAt(0);

●ASCII碼轉(zhuǎn)換為字符:String.fromCharCode(stnum)。

4 案例

4.1 需求分析

在基于C#開發(fā)的題庫管理系統(tǒng)中發(fā)布的試題(題型:判斷題、單選題、多選題),需要在Word環(huán)境下使用(VBA),同時(shí)也需要在Flash環(huán)境下使用(ActionScript 3.0)??紤]到通用性和拓展需要,發(fā)布的試題存儲格式為XML格式,因此發(fā)布時(shí)參考答案需要進(jìn)行簡易的加密,使用時(shí)參考答案需要進(jìn)行解密。

4.2 基本原理

(1)定義域與值域

●定義域:[65,122],主要存儲26個(gè)英文母(大小寫字母均可,判斷題,“正確”用“A”表示,“錯誤”用“B”表示)

●值域:[50,122]

●特別處理:在XML文件中,“<”和“>”是不可以直接存儲的字符,使用代替字符,“(”表示“<”,“)”表示“>”。

(2)基本原理

根據(jù)需求分析,本案例的基本原理如圖1所示。

圖1 基本原理

4.3 實(shí)現(xiàn)

(1)基于C#的通用示例性加密代碼

●通用示例性加密代碼

●信息的加密

加密前信息:A

加密后信息:6

●說明

本例是單選題,代碼中的循環(huán)基本上是沒有作用的,當(dāng)出現(xiàn)多選題時(shí),循環(huán)將實(shí)現(xiàn)多選答案的逐個(gè)加密(如表1所示)。奇數(shù)位與偶數(shù)位的加密算法略有差異,主要是為了提升加密的強(qiáng)度。

表1 多選題答案

(2)基于VBA的通用示例性解密代碼

●通用示例性解密代碼

●信息的解密

解密前信息:6

解密后信息:A

(3)基于ActionScript 3.0的通用示例性解密代碼

●通用示例性解密代碼

●信息的解密

解密前信息:6

解密后信息:A

5 結(jié)語

作為一種實(shí)用簡易的加解密算法,考慮到通用性,文中n的取值偏小,加密后的字符范圍相對也較小。對于特定信息,n的取值可以適當(dāng)增大。文中提及的代碼全部在真實(shí)環(huán)境下測試通過,并應(yīng)用于實(shí)際工作中,應(yīng)用效果好。

[1]李進(jìn)豪等.課堂教學(xué)有效性的研究與實(shí)踐[J].第六屆全國農(nóng)業(yè)職業(yè)教育教學(xué)成果二等獎,2015.

[2]李進(jìn)豪.基于AES的教師教學(xué)能力提升的研究與實(shí)踐[J].2015年廣東省職協(xié)優(yōu)秀科研成果一等獎,2016.

Research and Practice of the Practical and Simple Encryption and Decryption Algorithm Based on Multi Languages

LI Jin-hao

(Guangdong Province Vocational School of Oceanographic Engineering,Guangzhou 510320)

In the actual project exploring,we often need to carry a simple encryption and decryption of some key information,in order to ensure the confidentiality of key information.Based on the actual work project and requirements,focuses on the construction and feasibility analysis of the practical and simple encryption and decryption algorithm based on multi languages,and provides the practical cases as supporting evidence.

Muti Languages;Encryption;Decryption;Algorithm;Case

1007-1423(2017)04-0048-05

10.3969/j.issn.1007-1423.2017.04.011

李進(jìn)豪(1969-),男,廣東汕頭人,碩士,高級講師,高級技師,研究方向?yàn)檐浖こ?、網(wǎng)絡(luò)游戲開發(fā)

2016-12-06

2017-01-20

廣東省中等職業(yè)學(xué)?!鞍偾f人才培養(yǎng)工程”專業(yè)名師培養(yǎng)對象專項(xiàng)資金(2015-2017)、全國農(nóng)業(yè)職教育“十三五”科研課題(No.2016-135-Y-227)、2015廣東省教育研究院課題(No.GDJY-2015-F-b018)

猜你喜歡
加密算法值域定義域
求圓錐曲線最值(值域)常見函數(shù)“模型”的解法
如何求抽象函數(shù)的定義域
加密文檔排序中保序加密算法的最優(yōu)化選取
分式函數(shù)值域的求法
抽象函數(shù)定義域的四種類型
DES加密算法的實(shí)現(xiàn)
基于整數(shù)矩陣乘法的圖像加密算法
Poincare映射的定義域
破解函數(shù)值域的十招
歸納復(fù)合函數(shù)定義域的求法
东安县| 乌鲁木齐市| 郯城县| 进贤县| 吉林市| 浦北县| 高陵县| 乌恰县| 鹤岗市| 汤阴县| 双峰县| 南雄市| 老河口市| 郴州市| 滁州市| 通化县| 元江| 札达县| 揭东县| 绍兴市| 渭源县| 安顺市| 卢氏县| 三河市| 新郑市| 合作市| 珠海市| 兴安盟| 焦作市| 通江县| 道真| 绩溪县| 江口县| 左权县| 常州市| 蓬莱市| 日照市| 龙海市| 南开区| 楚雄市| 宁国市|