電子郵件加密技術(shù)如何通過Visual C++實(shí)現(xiàn)

電子郵件的安全問題已成為網(wǎng)絡(luò)時(shí)代的一個(gè)重要課題。通過對(duì)電子郵件加密可以提高它在傳輸中的安全性,那么,我們今天就來給大家介紹一下電子郵件加密技術(shù)如何通過Visual C++實(shí)現(xiàn)。

一、電子郵件的加密技術(shù)

計(jì)算機(jī)網(wǎng)絡(luò)安全問題涉及面甚廣,數(shù)據(jù)保密(Data Confidentiality)是網(wǎng)絡(luò)安全服務(wù)的一個(gè)重要方面,數(shù)據(jù)保密可通過給數(shù)據(jù)文件加密來實(shí)現(xiàn)。利用數(shù)據(jù)加密技術(shù)對(duì)電子郵件加密可防止郵件在傳輸過程中被別人截取或閱讀,從而保證郵件的安全,數(shù)據(jù)加密技術(shù)分為非對(duì)稱加密技術(shù)和對(duì)稱加密技術(shù)兩類,兩類加密技術(shù)各有優(yōu)缺點(diǎn),使用中常常將兩類技術(shù)結(jié)合在一起,以達(dá)到取長(zhǎng)樸短目的。

1、對(duì)稱加密技術(shù)

對(duì)稱加密技術(shù)是基于對(duì)稱密鑰加密的算法。所謂的對(duì)稱就可iam算法(symmetric algorithm),就是加密密鑰能夠從解密密鑰中推算出來,解密密鑰也可以從加密密鑰中推算出來,在多數(shù)對(duì)稱加密算法中,加密密鑰和解密密鑰是相同的,因此,該加密算法又稱單密鑰加密算法,對(duì)稱加密算法可分成序列加密算法(steamalgorithm)和分組加密算法(block algorithm)兩類,后者更為常用,目前常用的對(duì)稱密鑰加密算法有TEA、EDS和IDEA加密算法等。

對(duì)稱加密和解密的原理圖如圖1所示:

電子郵件加密技術(shù)如何通過VC++實(shí)現(xiàn)

對(duì)稱加密算法具有速度快、效率高的優(yōu)點(diǎn),但加密算法的安全性依附于密鑰,密鑰的管理相對(duì)復(fù)雜。

2、非對(duì)稱加密技術(shù)

非對(duì)稱加密技術(shù)基于非對(duì)稱密鑰加密的算法。非對(duì)稱加密(dissymmetrical encryption),即加密的密鑰與解密的密鑰互不相同,且根據(jù)加密的密鑰無法推算出解密的密鑰。該加密算法又叫公開密鑰加密算法(public key algorithm),即加密密鑰可以公開,任何人均可利用它來加密信息,但只有用相應(yīng)的解密密鑰才能解密信息。加密密鑰稱作公開密鑰( public_key),解密密鑰稱作私有密鑰(private key)。常用的非對(duì)稱加密算法是RSA加密算法。

非對(duì)稱加密的優(yōu)點(diǎn)是密鑰的管理和使用簡(jiǎn)單。其缺點(diǎn)在于加密算法實(shí)現(xiàn)后的效率低、速度慢。

二、 IDEA加密算法原理

IDEA是常用的一種對(duì)稱加密算法,該加密算法產(chǎn)生于上世紀(jì)90年代。

1、確定加密或解密的分組長(zhǎng)度

利用IDEA加密算法對(duì)信息文件加密或解密,要對(duì)信息進(jìn)行分組。一次加密或解密的分組長(zhǎng)度64位,密鑰長(zhǎng)度為128位.加密和解密的密鑰相同,但密鑰的結(jié)構(gòu)不同。

2、用IDEA加密算法加密或解密的過程

加密和解密的過程是一樣的,只是所用的子密鑰不同。IDEA加密算法的描述如圖2所示,在加密時(shí),64位的明文被分為4塊,每塊的長(zhǎng)度為16位,設(shè)它們是Y1,Y2,Y3,Y4,作為第一次迭代的輸入,整個(gè)過程要作8次迭代計(jì)算。

電子郵件加密技術(shù)如何通過VC++實(shí)現(xiàn)

三、電子郵件加密技術(shù)如何通過Visual C++實(shí)現(xiàn)

1、加密技術(shù)方案的確定

(1)加密算法的選擇

要實(shí)現(xiàn)對(duì)電子郵件進(jìn)行加密,首先要選擇一種合適的加密算法和解密算法。IDEA加密算法具有速度快、效率高的優(yōu)點(diǎn),且屬于單密鑰算法,實(shí)現(xiàn)起來較為容易。因此選擇IDEA加密算法作為電子郵件的加密算法。

(2)程序設(shè)計(jì)語言及開發(fā)工具的選擇

加密算法確定以后,就要選擇合適的程序設(shè)計(jì)語言及相應(yīng)的開發(fā)工具來實(shí)現(xiàn)加密算法。Visual C+ +是Microsoft公司開發(fā)的基于C/C++的集成開發(fā)工具,它是Visual Studio中功能最為強(qiáng)大、代碼效率最高的工具C++與C相比有許多優(yōu)點(diǎn),如封裝性、繼承性、多態(tài)性等.封裝把數(shù)據(jù)和操作結(jié)合成一體,使程序結(jié)構(gòu)更加緊湊,同時(shí)避免了數(shù)據(jù)紊亂帶來的調(diào)試與維護(hù)困難。類構(gòu)成了實(shí)現(xiàn)C++面向?qū)ο蟪绦蛟O(shè)計(jì)的基礎(chǔ)。類是C++封裝的基本單元,它把數(shù)據(jù)和函數(shù)封裝在一起。當(dāng)類的成員聲明為保護(hù)時(shí),外部不能訪問;聲明為公共時(shí),則在任何地方都可以訪問。

由于visual C++具有上述優(yōu)點(diǎn),可以選擇C++為程序設(shè)計(jì)語言、visual C++為開發(fā)環(huán)境來實(shí)現(xiàn)IDEA加密算法。

2、在VC++中實(shí)現(xiàn)IDEA加密算法

(1)基本過程

在Visual C++中實(shí)現(xiàn)IDEA加密算法的基本過程是:在Visual C++環(huán)境下編寫一個(gè)名為Cidea的類,這個(gè)類封裝了IDEA加密算法,它可以對(duì)文件和字符串進(jìn)行加密或解密操作。

(2)Cidea類的數(shù)據(jù)成員和成員函數(shù)

a類的私有效據(jù)成員

加密密鑰/解密密鑰

加密子密鑰組

解密子密鑰組

b類的私有成員函數(shù)

生成加密子密鑰組的函數(shù)

生成解密子密鑰組的函數(shù)以及用到它的函數(shù):包括inv()

加密解密64位的函數(shù)以及用到它的函數(shù):包括:mul()

c類的公有成員函數(shù)

構(gòu)造函數(shù)

析構(gòu)函散

加密函數(shù)(接口函數(shù))

解密函數(shù)(接口函數(shù))

Gct密鑰函數(shù)(接口函數(shù))

Set密鑰函數(shù)(接口函數(shù))

加密字符串函數(shù)(接口函效)

解密字符串函數(shù)(接口函致)

3、用Cidea類進(jìn)行郵件加密與解密

用戶可以通過將Cidea類引人到相應(yīng)的電子郵件加密/解密工程中,并調(diào)用它的接口函數(shù)就可以實(shí)現(xiàn)郵件的加密或解密功能。

小知識(shí)之Visual Studio

Microsoft Visual Studio(簡(jiǎn)稱VS)是美國(guó)微軟公司的開發(fā)工具包系列產(chǎn)品。VS是一個(gè)基本完整的開發(fā)工具集,它包括了整個(gè)軟件生命周期中所需要的大部分工具,如UML工具、代碼管控工具、集成開發(fā)環(huán)境(IDE)等等。