本發(fā)明實(shí)施例涉及信息安全技術(shù)領(lǐng)域,尤其涉及一種非對(duì)稱加密方法及裝置、非對(duì)稱解密方法及裝置。
背景技術(shù):
迄今為止,RSA算法被認(rèn)為是世界上最成熟完善的公鑰密碼體制。它能夠抵抗已知的絕大多數(shù)密碼攻擊,已經(jīng)被ISO推薦為公鑰數(shù)據(jù)加密標(biāo)準(zhǔn)。目前,世界上還沒(méi)有可靠的RSA的破解方法。因此,RSA算法被廣泛的應(yīng)用于信息安全的各種工程實(shí)踐中。
在RSA算法的應(yīng)用過(guò)程中,無(wú)論是公鑰還是私鑰的數(shù)據(jù)安全性都需要得到保證。然而,在工程實(shí)踐中,這一點(diǎn)常常難以實(shí)現(xiàn)。也就是說(shuō),RSA密鑰常常被非法用戶篡改,造成RSA加密或者解密過(guò)程的不可靠。
技術(shù)實(shí)現(xiàn)要素:
針對(duì)上述技術(shù)問(wèn)題,本發(fā)明實(shí)施例提供了一種非對(duì)稱加密方法及裝置、非對(duì)稱解密方法及裝置,以實(shí)現(xiàn)對(duì)數(shù)據(jù)的可靠加密及解密。
第一方面,本發(fā)明實(shí)施例提供了一種非對(duì)稱加密方法,所述方法包括:
由可靠數(shù)據(jù)源獲取對(duì)原始信息進(jìn)行加密的RSA公鑰;
利用所述RSA公鑰對(duì)所述原始信息進(jìn)行加密。
第二方面,本發(fā)明實(shí)施例還提供了一種非對(duì)稱解密方法,所述方法包括:
由可靠數(shù)據(jù)源獲取對(duì)加密信息進(jìn)行解密的RSA私鑰;
利用所述RSA私鑰對(duì)所述加密信息進(jìn)行解密。
第三方面,本發(fā)明實(shí)施例還提供了一種非對(duì)稱加密裝置,所述裝置包括:
公鑰獲取模塊,用于由可靠數(shù)據(jù)源獲取對(duì)原始信息進(jìn)行加密的RSA公鑰;
加密模塊,用于利用所述RSA公鑰對(duì)所述原始信息進(jìn)行加密。
第四方面,本發(fā)明實(shí)施例還提供了一種非對(duì)稱解密裝置,所述裝置包括:
私鑰獲取模塊,用于由可靠數(shù)據(jù)源獲取對(duì)加密信息進(jìn)行解密的RSA私鑰;
解密模塊,用于利用所述RSA私鑰對(duì)所述加密信息進(jìn)行解密。
本發(fā)明實(shí)施例提供的非對(duì)稱加密方法及裝置、非對(duì)稱解密方法及裝置,通過(guò)由可靠數(shù)據(jù)源獲取對(duì)原始信息進(jìn)行加密的公鑰,以及利用所述公鑰對(duì)所述原始信息進(jìn)行加密,對(duì)應(yīng)的在解密時(shí)由可靠數(shù)據(jù)源獲取對(duì)加密信息進(jìn)行解密的私鑰,以及利用所述私鑰對(duì)所述加密信息進(jìn)行解密,實(shí)現(xiàn)了對(duì)數(shù)據(jù)的可靠加密及可靠解密。
附圖說(shuō)明
通過(guò)閱讀參照以下附圖所作的對(duì)非限制性實(shí)施例所作的詳細(xì)描述,本發(fā)明的其它特征、目的和優(yōu)點(diǎn)將會(huì)變得更明顯:
圖1是本發(fā)明第一實(shí)施例提供的非對(duì)稱加密方法的流程圖;
圖2是本發(fā)明第二實(shí)施例提供的非對(duì)稱加密方法的流程圖;
圖3是本發(fā)明第三實(shí)施例提供的非對(duì)稱加密方法的流程圖;
圖4是本發(fā)明第四實(shí)施例提供的非對(duì)稱解密方法的流程圖;
圖5是本發(fā)明第五實(shí)施例提供的非對(duì)稱解密方法的流程圖;
圖6是本發(fā)明第六實(shí)施例提供的非對(duì)稱解密方法的流程圖;
圖7是本發(fā)明第七實(shí)施例提供的非對(duì)稱加密裝置的結(jié)構(gòu)圖;
圖8是本發(fā)明第八實(shí)施例提供的非對(duì)稱解密裝置的結(jié)構(gòu)圖。
具體實(shí)施方式
下面結(jié)合附圖和實(shí)施例對(duì)本發(fā)明作進(jìn)一步的詳細(xì)說(shuō)明??梢岳斫獾氖?,此處所描述的具體實(shí)施例僅僅用于解釋本發(fā)明,而非對(duì)本發(fā)明的限定。另外還需要說(shuō)明的是,為了便于描述,附圖中僅示出了與本發(fā)明相關(guān)的部分而非全部結(jié)構(gòu)。
第一實(shí)施例
本實(shí)施例提供了非對(duì)稱加密方法的一種技術(shù)方案。在該技術(shù)方案中,非對(duì)稱加密方法包括:由可靠數(shù)據(jù)源讀取預(yù)先存儲(chǔ)的公鑰字符串;將所述公鑰字符串轉(zhuǎn)換為公鑰;利用所述公鑰對(duì)所述原始信息進(jìn)行加密。
參見圖1,非對(duì)稱加密方法包括:
S11,由所述可靠數(shù)據(jù)源讀取預(yù)先存儲(chǔ)的公鑰字符串。
在本實(shí)施例中,用來(lái)進(jìn)行RSA加密的公鑰是預(yù)先已經(jīng)生成,并且以公鑰字符串的形式存儲(chǔ)在可靠數(shù)據(jù)源中的。而且,所述公鑰字符串是根據(jù)X.509格式轉(zhuǎn)換之后的存儲(chǔ)在可靠數(shù)據(jù)源中的。
所謂可靠數(shù)據(jù)源,是指除用戶本人以外,其他人難于接觸到的數(shù)據(jù)源。這種數(shù)據(jù)源可以是加密狗、加密盤,或者網(wǎng)絡(luò)上的私人存儲(chǔ)空間等。
S12,將所述公鑰字符串轉(zhuǎn)換為所述RSA公鑰。
由于在本實(shí)施例中,公鑰字符串是將RSA公鑰根據(jù)PKCS#8格式轉(zhuǎn)換之后的字符串,所以在讀取所述公鑰字符串之后,需要對(duì)讀取的公鑰字符串進(jìn)行轉(zhuǎn)換。具體的,上述轉(zhuǎn)換過(guò)程由如下的java程序代碼執(zhí)行:
其中,變量keyFactory是進(jìn)行公鑰生成的工廠模式參量,變量keySpec是公鑰字符串對(duì)應(yīng)的密鑰詳述參量。
S13,利用所述RSA公鑰對(duì)所述原始信息進(jìn)行加密。
轉(zhuǎn)換得到RSA公鑰之后,以上述RSA公鑰對(duì)待加密的原始信息進(jìn)行加密,就完成了非對(duì)稱加密的全過(guò)程。具體的加密過(guò)程就是RSA加密算法,在此不再贅述。
需要說(shuō)明的是,在上述加密過(guò)程中,由于公鑰存儲(chǔ)在可靠數(shù)據(jù)源中,并且采用X.509格式存儲(chǔ),增強(qiáng)了該公鑰本身的數(shù)據(jù)安全性,因此實(shí)現(xiàn)了對(duì)原始數(shù)據(jù)的可靠加密。
本實(shí)施例通過(guò)由可靠數(shù)據(jù)源讀取預(yù)先存儲(chǔ)的公鑰字符串,將所述公鑰字符串轉(zhuǎn)換為公鑰,以及利用所述公鑰對(duì)所述原始信息進(jìn)行加密,實(shí)現(xiàn)了對(duì)原始數(shù)據(jù)的可靠加密。
第二實(shí)施例
本實(shí)施例提供了非對(duì)稱加密方法的另一種技術(shù)方案。在該技術(shù)方案中,非對(duì)稱加密方法包括:由可靠數(shù)據(jù)源讀取預(yù)先存儲(chǔ)的模字符串及指數(shù)字符串;將所述模字符串轉(zhuǎn)換為模,并將指數(shù)字符串轉(zhuǎn)換為指數(shù);根據(jù)所述模及所述指數(shù)確定所述公鑰;利用所述公鑰對(duì)所述原始信息進(jìn)行加密。
參見圖2,非對(duì)稱加密方法包括:
S21,由所述可靠數(shù)據(jù)源讀取預(yù)先存儲(chǔ)的模字符串及指數(shù)字符串。
在本實(shí)施例中,在執(zhí)行RSA加密之前,不再直接根據(jù)RSA公鑰生成公鑰字符串,而是根據(jù)用來(lái)生成RSA公鑰的模和指數(shù)生成模字符串,以及指數(shù)字符串。并且,將生成的模字符串以及指數(shù)字符串存儲(chǔ)至可靠數(shù)據(jù)源中。
在執(zhí)行RSA加密時(shí),從所述可靠數(shù)據(jù)源中讀取預(yù)先存儲(chǔ)的模字符串以及指數(shù)字符串。
需要特別說(shuō)明的是,在本實(shí)施例中,指數(shù)字符串特指對(duì)應(yīng)于公鑰的指數(shù)字符串。
S22,將所述模字符串轉(zhuǎn)換為模,并將指數(shù)字符串轉(zhuǎn)換為指數(shù)。
具體的,可以根據(jù)預(yù)定的算法將所述模字符串轉(zhuǎn)換為模,并將指數(shù)字符串轉(zhuǎn)換為指數(shù)。這里所謂的指數(shù),是指對(duì)原始信息進(jìn)行RSA加密的RSA公鑰所對(duì)應(yīng)的指數(shù)。
S23,根據(jù)所述模及所述指數(shù)確定所述RSA公鑰。
確定所述RSA公鑰的過(guò)程就是RSA的密鑰生成過(guò)程,在此不再贅述。
S24,利用所述RSA公鑰對(duì)所述原始信息進(jìn)行加密。
與本發(fā)明第一實(shí)施例相同,由于用來(lái)生成所述RSA公鑰的原始數(shù)據(jù),也就是模字符串以及指數(shù)字符串均被存儲(chǔ)在可靠數(shù)據(jù)源中,而且在進(jìn)行RSA加密時(shí),所述模字符串以及所述指數(shù)字符串均由可靠數(shù)據(jù)源中讀出,使得RSA加密過(guò)程相較于現(xiàn)有的加密過(guò)程更為可靠,實(shí)現(xiàn)了可靠的RSA加密。
本實(shí)施例通過(guò)由所述可靠數(shù)據(jù)源讀取預(yù)先存儲(chǔ)的模字符串及指數(shù)字符串,將所述模字符串轉(zhuǎn)換為模,并將指數(shù)字符串轉(zhuǎn)換為指數(shù),根據(jù)所述模及所述指數(shù)確定所述RSA公鑰,以及利用所述RSA公鑰對(duì)所述原始信息進(jìn)行加密,實(shí)現(xiàn)了對(duì)原始數(shù)據(jù)的可靠加密。
第三實(shí)施例
本實(shí)施例提供了非對(duì)稱加密方法的再一種技術(shù)方案。在該技術(shù)方案中,非對(duì)稱加密方法包括:利用OpenSSL工具獲取所述RSA公鑰;利用所述RSA公鑰對(duì)所述原始信息進(jìn)行加密。
參見圖3,非對(duì)稱加密方法包括:
S31,利用OpenSSL工具獲取所述RSA公鑰。
OpenSSL是一個(gè)功能強(qiáng)大的SSL實(shí)現(xiàn)。它實(shí)現(xiàn)了各種密碼算法、密鑰管理和證書管理功能,同時(shí)它支持SSL v2.0、SSL v3.0和TLS v1.0。OpenSSL被廣泛的應(yīng)用。它是開源的軟件包,為有興趣學(xué)習(xí)各種密碼算法實(shí)現(xiàn)和SSL實(shí)現(xiàn)的讀者提供了非常寶貴的資源。
利用OpenSSL工具可以實(shí)現(xiàn)RSA加密過(guò)程中的RSA公鑰獲取。具體的,可以通過(guò)對(duì)OpenSSL工具中RSA軟件包的調(diào)用,實(shí)現(xiàn)對(duì)RSA公鑰的獲取。
S32,利用所述RSA公鑰對(duì)所述原始信息進(jìn)行加密。
通過(guò)對(duì)OpenSSL工具的使用獲取了RSA加密過(guò)程中使用的RSA公鑰之后,就可以使用獲取到的所述RSA公鑰對(duì)所述原始信息進(jìn)行加密。與本發(fā)明的前述實(shí)施例相同,在對(duì)原始信息進(jìn)行加密時(shí),采用的是通常的RSA加密算法,在此不再贅述。
由于在原始信息進(jìn)行RSA加密時(shí),由OpenSSL工具獲取對(duì)原始數(shù)據(jù)進(jìn)行加密的RSA公鑰,因此,獲取到的RSA公鑰本身的數(shù)據(jù)安全性是可靠的。也就是說(shuō),依據(jù)本實(shí)施例給出的非對(duì)稱加密方法進(jìn)行原始數(shù)據(jù)的加密,其過(guò)程可靠。
本實(shí)施例通過(guò)利用OpenSSL工具獲取所述RSA公鑰,以及利用所述RSA公鑰對(duì)所述原始信息進(jìn)行加密,實(shí)現(xiàn)了對(duì)原始數(shù)據(jù)的可靠加密。
第四實(shí)施例
本實(shí)施例提供了非對(duì)稱解密方法的一種技術(shù)方案。在該技術(shù)方案中,非對(duì)稱解密方法包括:由可靠數(shù)據(jù)源讀取預(yù)先存儲(chǔ)的私鑰字符串;將所述私鑰字符串轉(zhuǎn)換為私鑰;利用所述私鑰對(duì)所述加密信息進(jìn)行解密。
參見圖4,非對(duì)稱解密方法包括:
S41,由所述可靠數(shù)據(jù)源讀取預(yù)先存儲(chǔ)的私鑰字符串。
在本實(shí)施例中,用于對(duì)加密信息進(jìn)行解密的私鑰以私鑰字符串的形式被存儲(chǔ)在可靠數(shù)據(jù)源中。所謂可靠數(shù)據(jù)源是僅進(jìn)行信息解密的用戶本人能夠接觸到的數(shù)據(jù)源。具體的,可靠數(shù)據(jù)源可以有加密狗、加密盤,或者網(wǎng)絡(luò)上的私人存儲(chǔ)空間等。
而且,所述私鑰字符串是將用戶的RSA私鑰經(jīng)過(guò)PKCS8編碼后的字符串。
S42,將所述私鑰字符串轉(zhuǎn)換為所述RSA私鑰。
由于私鑰字符串是將RSA私鑰進(jìn)行PKCS8編碼后的字符串,在由可靠數(shù)據(jù)源讀取上述私鑰字符串之后,需要將所述私鑰字符串進(jìn)行轉(zhuǎn)換之后才能夠得到所述RSA私鑰。具體的,對(duì)所述私鑰字符串進(jìn)行轉(zhuǎn)換的java代碼如下:
其中,keyFactory是進(jìn)行密鑰生成的工廠模式變量,keySpec是對(duì)應(yīng)的密鑰詳述變量。
S43,利用所述RSA私鑰對(duì)所述加密信息進(jìn)行解密。
上述解密過(guò)程采用RSA解密算法,具體過(guò)程在此不再詳述。
本實(shí)施例通過(guò)由所述可靠數(shù)據(jù)源讀取預(yù)先存儲(chǔ)的私鑰字符串,將所述私鑰字符串轉(zhuǎn)換為RSA私鑰,以及利用所述RSA私鑰對(duì)所述加密信息進(jìn)行解密,實(shí)現(xiàn)了對(duì)加密信息的可靠解密。
第五實(shí)施例
本實(shí)施例提供了非對(duì)稱解密方法的另一種技術(shù)方案。在該技術(shù)方案中,非對(duì)稱解密方法包括:由可靠數(shù)據(jù)源讀取預(yù)先存儲(chǔ)的模字符串及指數(shù)字符串;將所述模字符串轉(zhuǎn)換為模,并將指數(shù)字符串轉(zhuǎn)換為指數(shù);根據(jù)所述模及所述指數(shù)確定所述私鑰;利用所述私鑰對(duì)所述加密信息進(jìn)行解密。
參見圖5,非對(duì)稱解密方法包括:
S51,由所述可靠數(shù)據(jù)源讀取預(yù)先存儲(chǔ)的模字符串及指數(shù)字符串。
與本發(fā)明第四實(shí)施例不同,在執(zhí)行RSA解密之前,不再預(yù)先存儲(chǔ)直接對(duì)應(yīng)于RSA私鑰的私鑰字符串,而是轉(zhuǎn)而存儲(chǔ)生成RSA私鑰過(guò)程中的中間結(jié)果。具體來(lái)講,就是RSA密鑰生成過(guò)程中的模以及指數(shù)。并且,在可靠數(shù)據(jù)源中,并不直接存儲(chǔ)上述模及指數(shù)的原始數(shù)值,而是將模轉(zhuǎn)換為模字符串,將指數(shù)轉(zhuǎn)換為指數(shù)字符串,在存儲(chǔ)所述模字符串及所述指數(shù)字符串。
S52,將所述模字符串轉(zhuǎn)換為模,并將指數(shù)字符串轉(zhuǎn)換為指數(shù)。
在讀取到所述模字符串及所述指數(shù)字符串之后,依照預(yù)定算法將所述模字符串轉(zhuǎn)換為模,并將指數(shù)字符串轉(zhuǎn)換為指數(shù)。上述預(yù)定算法應(yīng)當(dāng)與在解密之前將模轉(zhuǎn)換為模字符串,將指數(shù)轉(zhuǎn)換為指數(shù)字符串的算法互逆。
需要說(shuō)明的是,在本實(shí)施例中,指數(shù)指的是RSA私鑰所對(duì)應(yīng)的指數(shù)。
S53,根據(jù)所述模及所述指數(shù)確定所述RSA私鑰。
生成所述RSA私鑰的過(guò)程就是RSA的密鑰生成過(guò)程,在此不再贅述。
S54,利用所述RSA私鑰對(duì)所述加密信息進(jìn)行解密。
完成了RSA私鑰的生成之后,利用上述生成的RSA私鑰,對(duì)已經(jīng)加密的加密信息進(jìn)行解密。解密的過(guò)程就是RSA解密算法,在此不再贅述。
本實(shí)施例通過(guò)由所述可靠數(shù)據(jù)源讀取預(yù)先存儲(chǔ)的模字符串及指數(shù)字符串,將所述模字符串轉(zhuǎn)換為模,并將指數(shù)字符串轉(zhuǎn)換為指數(shù),根據(jù)所述模及所述指數(shù)確定所述RSA私鑰,以及利用所述RSA私鑰對(duì)所述加密信息進(jìn)行解密,實(shí)現(xiàn)了對(duì)加密信息的可靠解密。
第六實(shí)施例
本實(shí)施例提供了非對(duì)稱解密方法的再一種技術(shù)方案。在該技術(shù)方案中,非對(duì)稱解密方法包括:利用OpenSSL工具獲取所述RSA私鑰;利用所述RSA私鑰對(duì)所述加密信息進(jìn)行解密。
參見圖6,非對(duì)稱解密方法包括:
S61,利用OpenSSL工具獲取所述RSA私鑰。
由于OpenSSL工具中集成了RSA密鑰生成過(guò)程,因此可以通過(guò)對(duì)OpenSSL工具的調(diào)用,實(shí)現(xiàn)對(duì)RSA私鑰的獲取。具體的,可以通過(guò)對(duì)OpenSSL工具中RSA軟件包的調(diào)用,實(shí)現(xiàn)對(duì)RSA私鑰的獲取。
S62,利用所述RSA私鑰對(duì)所述加密信息進(jìn)行解密。
通過(guò)OpenSSL工具獲取到RSA私鑰之后,就可以通過(guò)RSA解密算法,利用獲取到的RSA私鑰對(duì)加密信息進(jìn)行解密。
由于在解密過(guò)程中采用的RSA私鑰是通過(guò)OpenSSL工具獲取到的,其過(guò)程是可靠的,故而實(shí)現(xiàn)了對(duì)加密信息的可靠解密。
本實(shí)施例通過(guò)利用OpenSSL工具獲取所述RSA私鑰,以及利用所述RSA私鑰對(duì)所述加密信息進(jìn)行解密,實(shí)現(xiàn)了對(duì)加密信息的可靠解密。
第七實(shí)施例
本實(shí)施例提供了非對(duì)稱加密裝置的一種技術(shù)方案。參見圖7,在該技術(shù)方案中,一種非對(duì)稱加密裝置包括:公鑰獲取模塊71,以及加密模塊72。
所述公鑰獲取模塊71由可靠數(shù)據(jù)源獲取對(duì)原始信息進(jìn)行加密的RSA公鑰。
所述加密模塊72利用所述RSA公鑰對(duì)所述原始信息進(jìn)行加密。
優(yōu)選的,所述公鑰獲取模塊71包括:第一讀取單元,以及第一轉(zhuǎn)換單元。
所述第一讀取單元由所述可靠數(shù)據(jù)源讀取預(yù)先存儲(chǔ)的公鑰字符串,其中,所述公鑰字符串是將所述RSA公鑰進(jìn)行X.509編碼的字符串。
所述第一轉(zhuǎn)換單元將所述公鑰字符串轉(zhuǎn)換為所述RSA公鑰。
優(yōu)選的,所述公鑰獲取模塊71包括:第二讀取單元、第二轉(zhuǎn)換單元,以及第一確定單元。
所述第二讀取單元用于由所述可靠數(shù)據(jù)源讀取預(yù)先存儲(chǔ)的模字符串及指數(shù)字符串。
所述第二轉(zhuǎn)換單元用于將所述模字符串轉(zhuǎn)換為模,并將指數(shù)字符串轉(zhuǎn)換為指數(shù)。
所述第一確定單元用于根據(jù)所述模及所述指數(shù)確定所述RSA公鑰。
優(yōu)選的,所述公鑰獲取模塊71具體用于:利用OpenSSL工具獲取所述RSA公鑰。
第八實(shí)施例
本實(shí)施例提供了非對(duì)稱解密裝置的一種技術(shù)方案。參見圖8,在該技術(shù)方案中,所述非對(duì)稱解密裝置包括:私鑰獲取模塊81,以及解密模塊82。
所述私鑰獲取模塊81用于由可靠數(shù)據(jù)源獲取對(duì)加密信息進(jìn)行解密的RSA私鑰。
所述解密模塊82用于利用所述RSA私鑰對(duì)所述加密信息進(jìn)行解密。
優(yōu)選的,所述私鑰獲取模塊81包括:第三讀取單元,以及第三轉(zhuǎn)換單元。
所述第三讀取單元用于由所述可靠數(shù)據(jù)源讀取預(yù)先存儲(chǔ)的私鑰字符串,其中,所述公鑰字符串是將所述RSA公鑰進(jìn)行PKCS8編碼的字符串。
所述第三轉(zhuǎn)換單元用于將所述私鑰字符串轉(zhuǎn)換為所述RSA私鑰。
優(yōu)選的,所述私鑰獲取模塊81包括:第四讀取單元、第四轉(zhuǎn)換單元,以及第二確定單元。
所述第四讀取單元用于由所述可靠數(shù)據(jù)源讀取預(yù)先存儲(chǔ)的模字符串及指數(shù)字符串。
所述第四轉(zhuǎn)換單元用于將所述模字符串轉(zhuǎn)換為模,并將指數(shù)字符串轉(zhuǎn)換為指數(shù)。
所述第二確定單元用于根據(jù)所述模及所述指數(shù)確定所述RSA私鑰。
優(yōu)選的,所述私鑰獲取模塊81具體用于:利用OpenSSL工具獲取所述RSA私鑰。
以上所述僅為本發(fā)明的優(yōu)選實(shí)施例,并不用于限制本發(fā)明,對(duì)于本領(lǐng)域技術(shù)人員而言,本發(fā)明可以有各種改動(dòng)和變化。凡在本發(fā)明的精神和原理之內(nèi)所作的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。