一種密文生成方法、密文解密方法及加密解密裝置制造方法
【專利摘要】本發(fā)明公開了一種密文生成方法、密文解密方法、加密解密裝置,用于解決現(xiàn)有技術(shù)中利用Java語言自帶的底層加密算法對跨系統(tǒng)的口令或信息進(jìn)行加密傳輸時(shí)存在的安全性不高的問題。該密文生成方法包括:根據(jù)預(yù)設(shè)的密鑰文件和串號生成方法獲得加密串號,并隨機(jī)生成包含多個(gè)字符的碼表;根據(jù)獲得的加密串號和待加密的各明文字符,沿指定的碼表查找方向,從生成的碼表中查找分別對應(yīng)于待加密的各明文字符的碼表字符,并根據(jù)查找到的碼表字符,生成密文??梢?,密文的安全不僅依賴于加密算法,還依賴于預(yù)設(shè)的密鑰文件和隨機(jī)生成的碼表,只要使用不同的密鑰文件和碼表對明文進(jìn)行加密處理,即便獲得了解密算法,也不可能準(zhǔn)確對該密文進(jìn)行解密。
【專利說明】一種密文生成方法、密文解密方法及加密解密裝置
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及通信安全領(lǐng)域,尤其涉及一種密文生成方法、密文解密方法及加密解
山目-O
【背景技術(shù)】
[0002]在多個(gè)不同的系統(tǒng)共存的通信網(wǎng)絡(luò)中,為確保系統(tǒng)間的通信安全,通常情況下,系統(tǒng)之間的通信口令和通信信息都需要以密文的形式進(jìn)行傳輸或者保存。目前常用Java語言自帶的底層加密算法來實(shí)現(xiàn)對跨系統(tǒng)的口令或信息進(jìn)行加密處理,但這種方法在跨系統(tǒng)使用時(shí)存在一些問題。例如,由于利用該底層加密算法對明文進(jìn)行加密而獲得的密文的安全完全依賴于加密算法,那么當(dāng)將用該加密算法加密的密文發(fā)送至其他系統(tǒng)時(shí),必須向其他系統(tǒng)提供解密算法,而這個(gè)解密算法可以解密所有用該解密算法對應(yīng)的加密算法加密的密文,因此一旦獲得這個(gè)解密算法,這個(gè)系統(tǒng)中用該解密算法對應(yīng)的加密算法進(jìn)行加密的密文都可以被解密,這樣就給系統(tǒng)帶來很大的安全隱患。
【發(fā)明內(nèi)容】
[0003]本發(fā)明實(shí)施例提供了一種密文生成方法、密文解密方法及加密解密裝置,用以解決現(xiàn)有技術(shù)中利用Java語言自帶的底層加密算法對跨系統(tǒng)的口令或信息進(jìn)行加密傳輸時(shí)存在的安全性不高的問題。
[0004]本發(fā)明實(shí)施例采用以下技術(shù)方案:
[0005]一種密文生成方法,包括:
[0006]根據(jù)預(yù)設(shè)的密鑰文件和串號生成方法獲得加密串號,并隨機(jī)生成碼表,所述碼表是由多個(gè)隨機(jī)排列的碼表字符所組成的字符串;
[0007]根據(jù)獲得的加密串號和待加密的各明文字符,沿指定的碼表查找方向,從所述碼表中查找分別對應(yīng)于待加密的各明文字符的碼表字符;并
[0008]根據(jù)查找到的碼表字符,生成密文。
[0009]一種密文解密方法,包括:
[0010]根據(jù)密鑰文件和串號生成方法獲得解密串號;
[0011]根據(jù)獲得的解密串號、預(yù)先獲得的密文以及指定的碼表查找方向,從預(yù)先獲得的碼表中查找分別對應(yīng)于密文中所包含的各密文字符的碼表字符;并
[0012]根據(jù)查找到的碼表字符,生成解密文件。
[0013]一種加密裝置,包括:
[0014]加密串號獲得單元,用于根據(jù)預(yù)設(shè)的密鑰文件和串號生成方法獲得加密串號;
[0015]碼表生成單元,用于隨機(jī)生成碼表,所述碼表是由多個(gè)隨機(jī)排列的碼表字符所組成的字符串;
[0016]字符查找單元,用于根據(jù)所述加密串號獲得單元獲得的加密串號和待加密的各明文字符,沿指定的碼表查找方向,從所述碼表生成單元生成的碼表中查找分別對應(yīng)于待加密的各明文字符的字符;
[0017]密文生成單元,用于根據(jù)所述字符查找單元查找到的碼表字符,生成密文。
[0018]一種解密裝置,包括:
[0019]解密串號獲得單元,用于根據(jù)密鑰文件和串號生成方法獲得解密串號;
[0020]解密字符查找單元,用于根據(jù)所述解密串號獲得單元獲得的解密串號、預(yù)先獲得的密文以及指定的碼表查找方向,從預(yù)先獲得的碼表中查找分別對應(yīng)于密文中所包含的各密文字符的碼表字符;
[0021]解密文件生成單元,用于根據(jù)所述解密字符查找單元查找到的碼表字符,生成解密文件。
[0022]本發(fā)明實(shí)施例的有益效果如下:
[0023]本發(fā)明實(shí)施例提供的一種密文生成方法、密文解密方法及加密解密裝置,根據(jù)預(yù)設(shè)的密鑰文件和串號生成方法獲得加密串號,并隨機(jī)生成包含多個(gè)字符的碼表;根據(jù)獲得的加密串號和待加密的各明文字符,沿指定的碼表查找方向,從生成的碼表中查找分別對應(yīng)于待加密的各明文字符的碼表字符,并根據(jù)選取的字符,生成密文。可見,本發(fā)明實(shí)施例提供的密文生成方法,密文的安全不僅依賴于加密算法,還依賴于預(yù)設(shè)的密鑰文件和隨機(jī)生成的碼表,只要使用不同的密鑰文件和碼表對明文進(jìn)行加密處理,即便想要解密的一方獲得了解密算法,在未知加密時(shí)所使用的密鑰文件和碼表的情況下,也不可能準(zhǔn)確對該密文進(jìn)行解密,從而有效解決了現(xiàn)有技術(shù)中利用Java語言自帶的底層加密算法對跨系統(tǒng)的口令或信息進(jìn)行加密傳輸時(shí)存在的安全性不高的問題。
【專利附圖】
【附圖說明】
[0024]圖1為本發(fā)明實(shí)施例提供的一種密文生成方法的方法流程圖;
[0025]圖2為本發(fā)明實(shí)施例提供的一種從生成的碼表中查找分別對應(yīng)于待加密的各明文字符的字符的碼表方法流程圖;
[0026]圖3為本發(fā)明實(shí)施例提供的一種密文解密方法的方法流程圖。
【具體實(shí)施方式】
[0027]為解決現(xiàn)有技術(shù)中利用Java語言自帶的底層加密算法對跨系統(tǒng)的口令或信息進(jìn)行加密傳輸時(shí)存在的安全性不高的問題,本發(fā)明實(shí)施例提供了 一種密文生成方法、密文解密方法及加密解密裝置。根據(jù)預(yù)設(shè)的密鑰文件和串號生成方法獲得加密串號,并隨機(jī)生成碼表;根據(jù)獲得的加密串號和待加密的各明文字符,沿指定的碼表查找方向,從生成的碼表中查找分別對應(yīng)于待加密的各明文字符的碼表字符,并根據(jù)查找到的碼表字符,生成密文??梢姡景l(fā)明實(shí)施例提供的密文生成方法,密文的安全不僅依賴于加密算法,還依賴于預(yù)設(shè)的密鑰文件和隨機(jī)生成的碼表,只要使用不同的密鑰文件和碼表對明文進(jìn)行加密處理,即便想要解密的一方獲得了解密算法,在未知加密時(shí)所使用的密鑰文件和碼表的情況下,也不可能準(zhǔn)確對該密文進(jìn)行解密,從而有效解決了現(xiàn)有技術(shù)中利用Java語言自帶的底層加密算法對跨系統(tǒng)的口令或信息進(jìn)行加密傳輸時(shí)存在的安全性不高的問題。
[0028]以下結(jié)合說明書附圖對本發(fā)明的實(shí)施例進(jìn)行說明,應(yīng)當(dāng)理解,此處所描述的實(shí)施例僅用于說明和解釋本發(fā)明,并不用于限制本發(fā)明。并且在不沖突的情況下,本說明中的實(shí)施例及實(shí)施列中的特征可以互相結(jié)合。
[0029]實(shí)施例1
[0030]基于上述基本思想,本發(fā)明實(shí)施例提供的一種密文生成方法流程圖如圖1所示,具體包括以下步驟:
[0031]步驟11、根據(jù)預(yù)設(shè)的密鑰文件和串號生成方法獲得加密串號,并隨機(jī)生成碼表,該碼表是由上述多個(gè)隨機(jī)排列的碼表字符所組成的字符串。
[0032]其中,預(yù)設(shè)的密鑰文件可以為文本文件,該文件的內(nèi)容可以是由一個(gè)不確定長度的數(shù)字和/或字母組合的字符串,長度只要不少于8位,不超過65535位即可。
[0033]串號生成的方法有很多種,例如可以將密鑰文件中包含的字符個(gè)數(shù)作為加密串號;可以將密鑰文件中包含的數(shù)字個(gè)數(shù)作為加密串號;也可以將密鑰文件所對應(yīng)的MD5文件(Message Digest Algorithm,信息摘要算法第5五版)中所包含的字符個(gè)數(shù)作為加密串號;還可以通過對密鑰文件中包含的字符個(gè)數(shù)做一系列的數(shù)學(xué)運(yùn)算,并將運(yùn)算結(jié)果作為一個(gè)串號。例如,假設(shè)密鑰文件中包含的字符個(gè)數(shù)用Key表示,再假設(shè)獲取的一個(gè)密鑰文件的Key為32,則可以對該Key做以下運(yùn)算從而獲得加密串號:先對Key執(zhí)行運(yùn)算32*13-7=409,再對409與參數(shù)100做求余運(yùn)算,得到的余數(shù)9就可以是加密串號。其中,13、7、100都是預(yù)定的某些變量參數(shù)值。上述列舉的幾種串號生成方法都是相對比較簡單的,在實(shí)際應(yīng)用中,通常會(huì)采用比較復(fù)雜的數(shù)學(xué)運(yùn)算來生成串號,但由于串號本身是一個(gè)無意義的數(shù)字,該數(shù)字的生成方法已是現(xiàn)有技術(shù)中比較成熟的一種技術(shù),并且其并非是本發(fā)明對于現(xiàn)有技術(shù)的改進(jìn)之處,因此本發(fā)明實(shí)施例中對該技術(shù)不再贅述。
[0034]對于碼表來講,碼表一般是由隨機(jī)生成的多個(gè)字符隨機(jī)排列所組成的字符串。假設(shè)待加密的明文字符只為字母且區(qū)分字母的大小寫,則碼表就可以由26個(gè)大小寫字母隨機(jī)排列組成,即碼表包含了 52個(gè)隨機(jī)排列的字母。
[0035]可選的,碼表可以包括ASCII 碼(American Standard Code for InformationInterchange,美國信息交換標(biāo)準(zhǔn)代碼)中除控制字符外的所有字符,且碼表中包含的碼表字符互不相同。
[0036]步驟12、根據(jù)獲得的加密串號和待加密的各明文字符,沿指定的碼表查找方向,從生成的碼表中查找分別對應(yīng)于待加密的各明文字符的碼表字符。
[0037]步驟13、根據(jù)查找到的碼表字符,生成密文。
[0038]可選的,分別針對每個(gè)待加密的明文字符,步驟12的實(shí)現(xiàn)方法可以如圖2所示,具體包含以下子步驟:
[0039]步驟121、根據(jù)該明文字符,從碼表中確定與該明文字符匹配一致的碼表字符。
[0040]步驟122、根據(jù)確定出的碼表字符在碼表中的位置,確定碼表中位于該位置與碼表的第一指定端位置間的字符的個(gè)數(shù)。
[0041]其中,碼表的第一指定端為沿指定的碼表查找方向所確定出的碼表的末端。
[0042]步驟123、判斷執(zhí)行步驟122所確定的字符的個(gè)數(shù)是否小于指定個(gè)數(shù),在判斷結(jié)果為否時(shí),執(zhí)行步驟124 ;在判斷結(jié)果為是時(shí),執(zhí)行步驟125。
[0043]其中,指定個(gè)數(shù)為加密串碼減去一所得的個(gè)數(shù)。
[0044]步驟124、按照預(yù)設(shè)的第一查找規(guī)則,沿指定的碼表查找方向從碼表中查找對應(yīng)于該明文字符的字符。[0045]其中,該第一查找規(guī)則可以為:查找到的碼表字符在碼表中的位置與確定出的碼表字符所在位置之間相距的字符的個(gè)數(shù)等于指定個(gè)數(shù);
[0046]步驟125、確定上述指定個(gè)數(shù)減去執(zhí)行步驟122所確定的字符的個(gè)數(shù)所得的差值,并按照預(yù)設(shè)的第二查找規(guī)則,沿指定的碼表查找方向從所述碼表中查找對應(yīng)于該明文字符的碼表字符。
[0047]其中,第二查找規(guī)則可以為:查找到的碼表字符在所述碼表中的位置與碼表的第二指定端位置之間相距的字符的個(gè)數(shù)等于所述差值減去一所得的個(gè)數(shù);所述第二指定端為沿所述指定的碼表查找方向所確定出的碼表的首端。
[0048]同樣對于步驟12,可選的,該步驟還可以通過以下方法實(shí)現(xiàn):
[0049]根據(jù)獲得加密串號和待加密的各明文字符,將待加密的各明文字符進(jìn)行重新排序,并獲得重排明文字符,然后再根據(jù)加密串號和重排明文字符,沿指定的碼表查找方向從生成的碼表中查找分別對應(yīng)于待加密的各明文字符的字符。舉例來說,假設(shè)待加密的明文字符串為:asdf,加密串號為2,隨機(jī)生成的碼表為:qwertyauiopzxcvsbndmghf jkl。則根據(jù)獲得加密串號和待加密的各明文字符,獲得重排明文字符串可以為dfas ;再假設(shè)指定的碼表查找方向?yàn)閺挠彝?,?J沿指定的碼表查找方向從生成的碼表中查找對應(yīng)于字符d的碼表字符為b,對應(yīng)于字符f的碼表字符為g,對應(yīng)于字符a的碼表字符為t,對應(yīng)于字符s的碼表字符為C,那么針對待加密的明文字符串a(chǎn)sdf中的每個(gè)字符,從生成的碼表中選取的分別對應(yīng)于字符a、S、d、f為碼表字符b、g、t、C。
[0050]需要說明的是,除了上述兩種方法之外,步驟12還可以通過很多種方法來實(shí)現(xiàn),這里就不再一一列舉。
[0051]綜上所述,本發(fā)明實(shí)施例提供的一種密文生成方法,密文的安全不僅依賴于加密算法,還依賴于預(yù)設(shè)的密鑰文件和隨機(jī)生成的碼表,只要使用不同的密鑰文件和碼表對明文進(jìn)行加密處理,即便想要解密的一方獲得了解密算法,在未知加密時(shí)所使用的密鑰文件和碼表的情況下,也不可能準(zhǔn)確對該密文進(jìn)行解密,從而有效解決了現(xiàn)有技術(shù)中利用Java語言自帶的底層加密算法對跨系統(tǒng)的口令或信息進(jìn)行加密傳輸時(shí)存在的安全性不高的問題。
[0052]對應(yīng)于本發(fā)明實(shí)施例提供的一種密文生成方法,本發(fā)明實(shí)施例還提供了 一種密文解密方法,該密文解密方法的方法流程圖如圖3所示,可以具體包括以下步驟:
[0053]步驟21、根據(jù)密鑰文件和串號生成方法獲得解密串號。
[0054]其中,該串號生成方法與密文生成方法中使用的“串號生成方法”相同。
[0055]步驟22、根據(jù)獲得的解密串號、預(yù)先獲得的密文以及指定的碼表查找方向,從預(yù)先獲得的碼表中查找分別對應(yīng)于密文中所包含的各密文字符的碼表字符。
[0056]其中,指定的碼表查找方向與密文生成方法中使用的“指定的碼表查找方向”可以相同,也可以相反。
[0057]步驟23、根據(jù)查找到的碼表字符,生成解密文件。
[0058]具體的,如果指定的碼表查找方向與密文生成方法中使用的“指定的碼表查找方向”相同,分別針對每個(gè)密文字符,步驟22可以具體包含以下子步驟:
[0059]首先,根據(jù)該密文字符,從所述預(yù)先獲得的碼表中確定與該密文字符匹配一致的碼表字符;[0060]其次,根據(jù)確定出的碼表字符在碼表中的位置,確定所述碼表中位于所述位置與碼表的第一指定端位置間所包含的字符個(gè)數(shù);其中,碼表的第一指定端為沿指定的碼表查找方向所確定出的碼表的首端;
[0061]然后,判斷所述字符個(gè)數(shù)是否小于指定個(gè)數(shù);該指定個(gè)數(shù)為所述解密串碼減去一所得的個(gè)數(shù);
[0062]最后,在判斷結(jié)果為否時(shí),按照預(yù)設(shè)的第一查找規(guī)則,沿與指定的碼表查找方向相反的方向從碼表中查找對應(yīng)于該明文字符的碼表字符,其中,所述第一查找規(guī)則包括:查找到的碼表字符在所述碼表中的位置與所述確定出的碼表字符所在位置之間的字符的個(gè)數(shù)等于所述指定個(gè)數(shù);
[0063]在判斷結(jié)果為是時(shí),確定指定個(gè)數(shù)減去所述字符的個(gè)數(shù)所得的差值,并按照預(yù)設(shè)的第二查找規(guī)則,沿與指定的碼表查找方向相反的方向從碼表中查找對應(yīng)于該明文字符的碼表字符,其中,第二查找規(guī)則包括:查找到的碼表字符在碼表中的位置與碼表的第二指定端位置之間相距的字符的個(gè)數(shù)等于所述差值減去一所得的個(gè)數(shù);第二指定端為沿所述指定的碼表查找方向所確定出的碼表的末端。
[0064]如果指定的碼表查找方向與密文生成方法中使用的“指定的碼表查找方向”相反,分別針對每個(gè)密文字符,步驟22可以具體包含以下子步驟:
[0065]首先,根據(jù)該密文字符,從所述預(yù)先獲得的碼表中確定與該密文字符匹配一致的碼表字符;
[0066]其次,根據(jù)確定出的碼表字符在碼表中的位置,確定所述碼表中位于所述位置與碼表的第一指定端位置間所包含的字符個(gè)數(shù);其中,碼表的第一指定端為沿指定的碼表查找方向所確定出的碼表的末端;
[0067]然后,判斷所述字符個(gè)數(shù)是否小于指定個(gè)數(shù);該指定個(gè)數(shù)為所述解密串碼減去一所得的個(gè)數(shù);
[0068]最后,在判斷結(jié)果為否時(shí),按照預(yù)設(shè)的第一查找規(guī)則,沿指定的碼表查找方向從碼表中查找對應(yīng)于該明文字符的碼表字符,其中,所述第一查找規(guī)則包括:查找到的碼表字符在所述碼表中的位置與所述確定出的碼表字符所在位置之間的字符的個(gè)數(shù)等于所述指定個(gè)數(shù);
[0069]在判斷結(jié)果為是時(shí),確定指定個(gè)數(shù)減去所述字符的個(gè)數(shù)所得的差值,并按照預(yù)設(shè)的第二查找規(guī)則,沿指定的碼表查找方向從碼表中查找對應(yīng)于該明文字符的碼表字符,其中,第二查找規(guī)則包括:查找到的碼表字符在碼表中的位置與碼表的第二指定端位置之間相距的字符的個(gè)數(shù)等于上述差值減去一所得的個(gè)數(shù);第二指定端為沿所述指定的碼表查找方向所確定出的碼表的首端。
[0070]綜上所述,本發(fā)明實(shí)施例提供的一種密文解密方法,解密密文不僅依賴于解密算法,還依賴于預(yù)設(shè)的密鑰文件和預(yù)先獲得的碼表,因此想要解密的一方在不知道密鑰文件和碼表的情況下,即便獲得了解密算法,也不可能準(zhǔn)確對密文進(jìn)行解密,從而有效解決了現(xiàn)有技術(shù)中利用Java語言自帶的底層加密算法對跨系統(tǒng)的口令或信息進(jìn)行加密傳輸時(shí)存在的安全性不高的問題。
[0071]實(shí)施例2
[0072]下面結(jié)合實(shí)例,具體說明本發(fā)明實(shí)施例提供的密文生成方法以及密文解密方法。[0073]首先,對于碼表,假設(shè)隨機(jī)生成的碼表為:
[0074]SboJU9#dL, O+a&sh:c/mplj;*FE_V64]DvzOuf7yCnM.~)t\rKxA〈$NT=Rg'!B PGZ{Yl"Hq,i[i?~-%3}185we2X(Qffk>
[0075]該碼表包含了 ASCII碼中除控制字符外的所有字符,且碼表中包含的字符互不相同。
[0076]將上述隨機(jī)生成的碼表組成一個(gè)“環(huán)形碼”,即將碼表的首端碼表字符和末端碼表字符相連,這樣碼表中的字符就按照原有次序排列成環(huán)形。
[0077]其次,對于密鑰文件,它可以是一個(gè)UTF-8編碼(UNICODE的一種變長字符編碼,又稱萬國碼)的文本。該文件的內(nèi)容可以是由一個(gè)不確定長度的數(shù)字和/或字母組合的字符串,長度只要不少于8位,不超過65535位即可。例如預(yù)設(shè)的密鑰文件可以為:1DB43E81B589B2DCAD9EB2821343F176,該密鑰文件通常只由通信雙方約定生成。
[0078]需要說明的是,每個(gè)密鑰文件都有一個(gè)用于區(qū)別于其他密鑰文件的MD5值,該MD5值與密鑰文件是一一對應(yīng)的關(guān)系,即如果某個(gè)密鑰文件被修改了,則修改后的密鑰文件對應(yīng)的MD5值與修改前的密鑰文件對應(yīng)的MD5值是不同的。
[0079]然后,根據(jù)預(yù)設(shè)的密鑰文件和串號生成方法獲得加密串號,并結(jié)合上述由碼表形成的“環(huán)形碼”,獲得的加密串號以及指定的碼表查找方向,對該明文字符串中的各明文字符進(jìn)行加密,該加密過程可以為:
[0080]先在“環(huán)形碼”上找到待加密的明文字符所處的位置;再以該位置為起點(diǎn),沿指定的碼表查找方向偏移加密串號對應(yīng)個(gè)數(shù)的字符;然后將偏移后得到的字符作為待加密的明文字符所對應(yīng)的密文字符。
[0081]舉例來說,假設(shè)根據(jù)該密鑰文件和串號生成方法獲得加密串號為55,待加密的明文字符串為“ 11Α900ορχ%#*~$ ”,再假設(shè)指定的碼表查找方向?yàn)轫槙r(shí)針方向,則對于明文字符“I”,以其在“環(huán)形碼”上所處的位置為起點(diǎn),沿順時(shí)針方向偏移55個(gè)字符,獲得的碼表字符為“6”,將碼表字符“6”選取為明文字符“I”對應(yīng)的密文字符;對于明文字符“1”,以其在“環(huán)形碼”上所處的位置為起點(diǎn),沿順時(shí)針方向偏移55個(gè)字符,獲得的碼表字符為”,將碼表字符”選取為明文字符“I”對應(yīng)的密文字符;對于明文字符“A”,以其在“環(huán)形碼”上所處的位置為起點(diǎn),沿順時(shí)針方向偏移55個(gè)字符,獲得的碼表字符為“a”,將碼表字符“a”選取為明文字符“A”對應(yīng)的密文字符;依此類推,最終獲得的對應(yīng)于待加密的明文字符串的密文為 “6.a!QZR@+CB%7s”。
[0082]假設(shè)甲方對待加密的明文字符串進(jìn)行加密處理生成密文后,要將該密文傳輸給乙方,則甲方要先將包含了密文生成方法,加密所用的碼表,串號生成方法以及指定的碼表查找方向的函數(shù)庫以及加密所用的密鑰文件對應(yīng)的MD5文件校驗(yàn)碼發(fā)送給乙方,然后再將加密所用的密鑰文件和密文發(fā)送給乙方。乙方獲得密鑰文件后,先讀取該密鑰文件對應(yīng)的MD5值,并驗(yàn)證該MD5值與之前接收到MD5文件校驗(yàn)碼是否一致,若驗(yàn)證一致,則說明密鑰文件在傳輸過程中沒有被修改過,即該密鑰文件就是密文生成過程中所用的密鑰文件。通常情況下,在驗(yàn)證完密鑰文件的有效性之后,通信雙方會(huì)將密鑰文件安全保存。在驗(yàn)證完密鑰文件的有效性之后,乙方先根據(jù)密鑰文件和接收到的函數(shù)庫中包含的串號生成方法獲得解密串號;再根據(jù)獲得的 解密串號,接收到的函數(shù)庫中包含的密文生成方法、加密所用的碼表、指定的碼表查找方向以及密文,分別確定對應(yīng)于密文中包含的各密文字符的解密字符;最后根據(jù)確定出的各解密字符,生成解密文件。
[0083]具體的,假設(shè)乙方收到的密文為“6.a!QZR@+CB%7s”,函數(shù)庫中包含的“指定的碼表查找方向”為加密時(shí)使用的碼表查找方向,即順時(shí)針方向,再假設(shè)乙方在驗(yàn)證完密鑰文件的有效性后,根據(jù)密鑰文件獲得解密串號為55,則根據(jù)函數(shù)庫中包含的加密所用的碼表(即“環(huán)形碼”)、密文生成方法以及解密串號55,對該密文中包含的每個(gè)密文字符進(jìn)行解密,該解密過程為:先在“環(huán)形碼”上找到每個(gè)密文字符所處的位置;再以該位置為起點(diǎn),沿與“指定的碼表查找方向”相反的方向(即逆時(shí)針方向)偏移解密串號對應(yīng)個(gè)數(shù)的字符;然后將偏移后得到的碼表字符作為每個(gè)密文字符所對應(yīng)的解密字符。舉例而言,對于密文字符“6”,以其在“環(huán)形碼”上所處的位置為起點(diǎn),沿逆時(shí)針方向偏移55個(gè)字符,獲得的碼表字符為“1”,則將碼表字符“I”選取為密文字符“6”對應(yīng)的解密字符;對于密文字符”,以其在“環(huán)形碼”上所處的位置為起點(diǎn),沿逆時(shí)針方向偏移55個(gè)字符,獲得的碼表字符為“1”,則將碼表字符“I”選取為密文字符”對應(yīng)的解密字符;對于密文字符“a”,以其在“環(huán)形碼”上所處的位置為起點(diǎn),沿逆時(shí)針方向偏移55個(gè)字符,獲得的碼表字符為“A”,則將碼表字符“A”選取為密文字符“a”對應(yīng)的解密字符;依此類推,最終獲得的對應(yīng)于密文“6.a!QZR@+CB%7s” 的解密文件為 “11Α900ορχ%#*~$”。
[0084]由上述實(shí)例可知,本發(fā)明實(shí)施例提供的一種密文生成方法以及密文解密方法,密文的安全不僅依賴于加密算法,還依賴于預(yù)設(shè)的密鑰文件和隨機(jī)生成的碼表,只要使用不同的密鑰文件和碼表對明文進(jìn)行加密處理,即便想要解密的一方獲得了解密算法,在未知加密時(shí)所使用的密鑰文件和碼表的情況下,也不可能準(zhǔn)確對該密文進(jìn)行解密,從而有效解決了現(xiàn)有技術(shù)中利用Java語言自帶的底層加密算法對跨系統(tǒng)的口令或信息進(jìn)行加密傳輸時(shí)存在的安全性不高的問題。
[0085]另外,本發(fā)明實(shí)施例還提供了生成碼表的算法代碼、加密算法代碼以及解密算法代碼,其中生成碼表的算法代碼如下:
[0086]
【權(quán)利要求】
1.一種密文生成方法,其特征在于,包括: 根據(jù)預(yù)設(shè)的密鑰文件和串號生成方法獲得加密串號,并隨機(jī)生成碼表,所述碼表是由多個(gè)隨機(jī)排列的碼表字符所組成的字符串; 根據(jù)獲得的加密串號和待加密的各明文字符,沿指定的碼表查找方向,從所述碼表中查找分別對應(yīng)于待加密的各明文字符的碼表字符;并根據(jù)查找到的碼表字符,生成密文。
2.如權(quán)利要求1所述的方法,其特征在于,根據(jù)獲得的加密串號和待加密的各明文字符,沿指定的碼表查找方向,從所述碼表中查找分別對應(yīng)于待加密的各明文字符的碼表字符,具體包括: 分別針對每個(gè)待加密的明文字符,執(zhí)行下述步驟: 根據(jù)該明文字符,從所述碼表中確定與該明文字符匹配一致的碼表字符; 根據(jù)確定出的碼表字符在碼表中的位置,確定所述碼表中位于所述位置與碼表的第一指定端位置間的字符的個(gè)數(shù),并判斷所述字符的個(gè)數(shù)是否小于指定個(gè)數(shù);其中,所述碼表的第一指定端為沿指定的碼表查找方向所確定出的碼表的末端;所述指定個(gè)數(shù)為所述加密串碼減去一所得的個(gè)數(shù); 在判斷結(jié)果為否時(shí),按照預(yù)設(shè)的第一查找規(guī)則,沿所述指定的碼表查找方向從所述碼表中查找對應(yīng)于該明文字符的碼表字符,其中,所述第一查找規(guī)則包括:查找到的碼表字符在所述碼表中的位置與所述確定出的碼表字符所在位置之間相距的字符的個(gè)數(shù)等于所述指定個(gè)數(shù); 在判斷結(jié)果為是時(shí),確定所述指定個(gè)數(shù)減去所述字符的個(gè)數(shù)所得的差值,并按照預(yù)設(shè)的第二查找規(guī) 則,沿所述指定的碼表查找方向從所述碼表中查找對應(yīng)于該明文字符的碼表字符,其中,所述第二查找規(guī)則包括:查找到的字符在所述碼表中的位置與碼表的第二指定端位置之間相距的字符的個(gè)數(shù)等于所述差值減去一所得的個(gè)數(shù);所述第二指定端為沿所述指定的碼表查找方向所確定出的碼表的首端。
3.如權(quán)利要求1所述的方法,其特征在于,所述碼表具體包括=ASCII碼中除控制字符外的所有字符;且 碼表中包含的碼表字符互不相同。
4.一種密文解密方法,其特征在于,包括: 根據(jù)密鑰文件和串號生成方法獲得解密串號; 根據(jù)獲得的解密串號、預(yù)先獲得的密文以及指定的碼表查找方向,從預(yù)先獲得的碼表中查找分別對應(yīng)于密文中所包含的各密文字符的碼表字符;并根據(jù)查找到的碼表字符,生成解密文件。
5.如權(quán)利要求4所述的方法,其特征在于,根據(jù)獲得的解密串號、預(yù)先獲得的密文以及指定的碼表查找方向,從預(yù)先獲得的碼表中查找分別對應(yīng)于密文中所包含的各密文字符的碼表字符,具體包括: 分別針對密文中所包含的每個(gè)密文字符,執(zhí)行下述步驟:根據(jù)該密文字符,從所述預(yù)先獲得的碼表中確定與該密文字符匹配一致的碼表字符;根據(jù)確定出的碼表字符在碼表中的位置,確定所述碼表中位于所述位置與碼表的第一指定端位置間所包含的字符個(gè)數(shù),并判斷所述字符個(gè)數(shù)是否小于指定個(gè)數(shù);其中,所述碼表的第一指定端為沿指定的碼表查找方向所確定出的碼表的首端;所述指定個(gè)數(shù)為所述解密串碼減去一所得的個(gè)數(shù); 在判斷結(jié)果為否時(shí),按照預(yù)設(shè)的第一查找規(guī)則,沿與所述指定的碼表查找方向相反的方向從所述碼表中查找對應(yīng)于該明文字符的碼表字符,其中,所述第一查找規(guī)則包括:查找到的碼表字符在所述碼表中的位置與所述確定出的碼表字符所在位置之間相距的的字符的個(gè)數(shù)等于所述指定個(gè)數(shù); 在判斷結(jié)果為是時(shí),確定所述指定個(gè)數(shù)減去所述字符的個(gè)數(shù)所得的差值,并按照預(yù)設(shè)的第二查找規(guī)則,沿與所述指定的碼表查找方向相反的方向從所述碼表中查找對應(yīng)于該明文字符的碼表字符,其中,所述第二查找規(guī)則包括:查找到的字符在所述碼表中的位置與碼表的第二指定端位置之間相距的字符的個(gè)數(shù)等于所述差值減去一所得的個(gè)數(shù);所述第二指定端為沿所述指定的碼表查找方向所確定出的碼表的末端。
6.一種加密裝置,其特征在于,包括: 加密串號獲得單元,用于根據(jù)預(yù)設(shè)的密鑰文件和串號生成方法獲得加密串號; 碼表生成單元,用于隨機(jī)生成碼表,所述碼表是由多個(gè)隨機(jī)排列的碼表字符所組成的字符串; 字符查找單元,用于根據(jù)所述加密串號獲得單元獲得的加密串號和待加密的各明文字符,沿指定的碼表查找方向,從所述碼表生成單元生成的碼表中查找分別對應(yīng)于待加密的各明文字符的碼表字符; 密文生成單元,用于根據(jù)所述字符查找單元查找到的碼表字符,生成密文。
7.如權(quán)利要求6所述的裝置,其特征在于,字符查找單元具體包括: 字符匹配子單元,用于`分別針對每個(gè)待加密的明文字符,執(zhí)行根據(jù)該明文字符從所述碼表中確定與該明文字符匹配一致的碼表字符; 個(gè)數(shù)確定子單元,用于根據(jù)所述字符匹配子單元確定出的碼表字符在碼表中的位置,確定所述碼表中位于所述位置與碼表的第一指定端位置間的字符的個(gè)數(shù);其中,所述碼表的第一指定端為沿指定的碼表查找方向所確定出的碼表的末端; 判斷子單元,用于判斷所述個(gè)數(shù)確定子單元確定的字符的個(gè)數(shù)是否小于指定個(gè)數(shù);所述指定個(gè)數(shù)為所述加密串碼減去一所得的個(gè)數(shù); 第一查找子單元,用于在所述判斷子單元判斷結(jié)果為否時(shí),按照預(yù)設(shè)的第一查找規(guī)則,沿所述指定的碼表查找方向從所述碼表中查找對應(yīng)于該明文字符的碼表字符,其中,所述第一查找規(guī)則包括:查找到的碼表字符在所述碼表中的位置與所述確定出的碼表字符所在位置之間相距的字符的個(gè)數(shù)等于所述指定個(gè)數(shù); 第二查找子單元,用于在所述判斷子單元判斷結(jié)果為是時(shí),確定所述指定個(gè)數(shù)減去所述字符的個(gè)數(shù)所得的差值,并按照預(yù)設(shè)的第二查找規(guī)則,沿所述指定的碼表查找方向從所述碼表中查找對應(yīng)于該明文字符的碼表字符,其中,所述第二查找規(guī)則包括:查找到的碼表字符在所述碼表中的位置與碼表的第二指定端位置之間相距的字符的個(gè)數(shù)等于所述差值減去一所得的個(gè)數(shù);所述第二指定端為沿所述指定的碼表查找方向所確定出的碼表的首端。
8.如權(quán)利要求6所述的裝置,其特征在于,所述碼表具體包括=ASCII碼中除控制字符外的所有字符;且碼表中所包含的碼表字符互不相同。
9.一種解密裝置,其特征在于,包括: 解密串號獲得單元,用于根據(jù)密鑰文件和串號生成方法獲得解密串號; 解密字符查找單元,用于根據(jù)所述解密串號獲得單元獲得的解密串號、預(yù)先獲得的密文以及指定的碼表查找方向,從預(yù)先獲得的碼表中查找分別對應(yīng)于密文中所包含的各密文字符的碼表字符; 解密文件生成單元,用于根據(jù)所述解密字符查找單元查找到的碼表字符,生成解密文件。
10.如權(quán)利要求9所述的裝置,其特征在于,所述解密字符查找單元具體包括: 字符匹配子單元,用于分別針對密文中所包含的每個(gè)密文字符,根據(jù)該密文字符,從所述預(yù)先獲得的碼表中確定與該密文字符匹配一致的字符; 個(gè)數(shù)確定子單元,根據(jù)所述字符匹配子單元確定出的碼表字符在碼表中的位置,確定所述碼表中位于所述位置與碼表的第一指定端位置間所包含的字符個(gè)數(shù);其中,所述碼表的第一指定端為沿指定的碼表查找方向所確定出的碼表的首端; 判斷子單元,用于判斷所述個(gè)數(shù)確定子單元確定的字符個(gè)數(shù)是否小于指定個(gè)數(shù);所述指定個(gè)數(shù)為所述解密串碼減去一所得的個(gè)數(shù); 第一查找子單元,在所述判斷子單元判斷結(jié)果為否時(shí),按照預(yù)設(shè)的第一查找規(guī)則,沿與所述指定的碼表查找方向相反的方向從所述碼表中查找對應(yīng)于該明文字符的碼表字符,其中,所述第一查找規(guī)則包括:查找到的碼表字符在所述碼表中的位置與所述確定出的碼表字符所在位置之間相距的字符的個(gè)數(shù)等`于所述指定個(gè)數(shù); 第二查找子單元,用于在所述判斷子單元判斷結(jié)果為是時(shí),確定所述指定個(gè)數(shù)減去所述字符的個(gè)數(shù)所得的差值,并按照預(yù)設(shè)的第二查找規(guī)則,沿與所述指定的碼表查找方向相反的方向從所述碼表中查找對應(yīng)于該明文字符的碼表字符,其中,所述第二查找規(guī)則包括:查找到的碼表字符在所述碼表中的位置與碼表的第二指定端位置之間相距的字符的個(gè)數(shù)等于所述差值減去一所得的個(gè)數(shù);所述第二指定端為沿所述指定的碼表查找方向所確定出的碼表的末端。
【文檔編號】H04L9/32GK103873250SQ201210553366
【公開日】2014年6月18日 申請日期:2012年12月18日 優(yōu)先權(quán)日:2012年12月18日
【發(fā)明者】王金貴, 杜懷中, 裴照華, 趙澤, 張耀華, 鄢兵安, 孫大偉, 苗浩龍, 李紅杰, 曹瑞波 申請人:中國移動(dòng)通信集團(tuán)河南有限公司