?

一種基于C#語言與CAPICOM組件的數字信封技術實現方法

2017-02-21 20:37沈洪敏
科技創新與應用 2016年35期
關鍵詞:語言

沈洪敏

摘 要:文章介紹了一種利用CAPICOM組件以及C#語言來實現數字信封技術的方法。希望通過文章的分析,能夠為相關人士提供一定的參考和借鑒。

關鍵詞:數字信封;CAPICOM;C#語言

引言

隨著互聯網以及移動通信技術的的發展,人們之間的信息交流已經越來越依賴計算機通信工具。然而普通的計算機通信工具,如郵件,QQ,微信等都不支持信息加密傳輸。這樣人們在互聯網通信的時候信息的安全不能得到保障,導致信息泄密事件層出不窮。而實際上信息加密的技術目前已經非常成熟,比如數字信封技術是一種公認有效并且安全的技術。文章將介紹一種數字信封技術的具體實現方法。

1 數字信封與CAPICOM簡介

數字信封是公鑰密碼體制在實際中的一個應用,是用加密技術來保證只有規定的特定收信人才能閱讀通信的內容。

數字信封技術通過接收方的公鑰加密對稱密碼算法密鑰,并用對稱密鑰加密信息,那么只有接收方(即持有私鑰的人)才能解開該對稱密鑰,然后再利用該密鑰解開密文。也就是說只有一個人,即持有私鑰的接收方才能解密信息,而其他人只能看到加密后的信息即圖示的密文(打開是一堆亂碼),這樣就保證了信息的機密性。

CAPICOM 的全名是 Cryptographic API Component Object Model,是微軟的Windows操作系統里的一個安全組件。通過CAPICOM可以實現以數字方式簽署數據、代碼、驗證數字簽章、將數據報文裝起來做為私人之用、雜湊數據、將數據加密解密等功能。

2 基于CAPICOM組件的數字信封C#算法實現

我們通過CAPICOM組件以及C#語言來實現數字信封算法,即實現通過數字信封技術來封裝加密信息,并通過數字信封技術來解密被加密的信息的功能。

我們的算法主要包括兩個函數:

String EvelopeInformation(string plainString,string publicCertificationPath )

該函數提供通過數字信封技術來封裝數據的功能:其中參數plainString是需要加密的數據, publicCertificationPath是數據接收方的公鑰證書路徑。函數處理完畢返回封裝后的數據即密文。密文采用3DES,128位加密算法加密,密鑰使用RSA加密算法。

public static string DeEvelopeInformation (string envelopedString)

該函數提供解密數字信封的功能:其中參數envelopedString是需要解密的數字信封密文。注意,這里我們不提供接收方私鑰證書的路徑參數,所以要求接收方的私鑰證書安裝在本人使用的計算機的用戶證書存儲區內。函數處理完畢返回數字信封封裝前的數據即明文

我們的數字信封技術C#語言實現的全部代碼與相關注釋如下:

using System;

using Interop.CAPICOM;

namespace NET.Envelope

{

public class CapicomEnvelope

{

///

///數字信封加密封裝數據(信息通過3DES,128位加密,密鑰使用RSA加密算法)

///

public static string EvelopeInformation(string plainString,string publicCertificationPath )

{

try

{

EnvelopedData envelopedData;

ICertificate2 iCertificate;

envelopedData = new EnvelopedData();

iCertificate = new Certificate();

iCertificate.Load(

publicCertificationPath,

null,

CAPICOM_KEY_STORAGE_FLAG.CAPICOM_KEY_STORAGE_DEFAULT,

CAPICOM_KEY_LOCATION.CAPICOM_CURRENT_USER_KEY

);

envelopedData.Content = plainString;

envelopedData.Algorithm.Name = CAPICOM_ENCRYPTION_ALGORITHM.CAPICOM_ENCRYPTION_ALGORITHM_3DES;

envelopedData.Algorithm.KeyLength =

CAPICOM_ENCRYPTION_KEY_LENGTH.CAPICOM_ENCRYPTION_KEY_LENGTH_128_BITS;

envelopedData.Recipients.Add(iCertificate);

string envelopedString = envelopedData.Encrypt(CAPICOM_ENC ODING_TYPE.CAPICOM_ENCODE_ANY);

return envelopedString;

}

catch(Exception e)

{

throw new Exception(e.ToString());

}

}

///

/// 解密數字信封,根據用戶證書存儲區內證書

///

public static string DeEvelopeInformation (string envelopedString)

{

try

{

EnvelopedData envelopedData ;

envelopedData = new EnvelopedData();

envelopedData.Decrypt(envelopedString);

string plainString = envelopedData.Content;

return plainString;

}

catch(Exception e)

{

throw new Exception(e.ToString());

}

}

}}

3 結束語

文章從實際的應用需求出發提出了數字信封技術的重要性,同時介紹了數字信封技術的實現原理,最后提出了利用CAPICOM組件以及C#語言來實現數字信封技術的具體方法。

參考文獻

[1]鄧禮全.計算機網絡及應用[M].北京:科學出版社,2014.

[2]李楠楠.數據庫原理及應用[M].北京:科學出版社,2016.

猜你喜歡
語言
肢體語言
語言的魅力
用鯨魚“語言”通信
White Lover
寫寫畫畫G20
我有我語言
語言的將來
Action?。樱穑澹幔耄蟆。蹋铮酰洌澹颉。裕瑁幔睢。祝铮颍洌蟆∧銓χw語言了解多少
語言,文字
有趣的語言
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合