27.3.9 CAPICOM對象——EnvelopedData對象

  EnvelopedData對象提供了打包、解包數字信封的方法和屬性。生成數字信封的過程是,首先產生一個臨時對稱加密密鑰(session key),使用數字信封接收者證書的公鑰對session key加密,然後用session key對待加密數據進行加密,加密後的數據以及加密後的session key組成了數字信封。它包括的主要屬性如表所示。

EnvelopedData對象的主要屬性

數據類型

權限

意義

Content

String

/

待加密的原始數據

Algorithm

Algorithm

/

加密session key的對稱算法類型

Recipients

Recipients

只讀

數字信封接收者Recipient

EnvelopedData對象包括以下主要方法:

1.生成數字信封方法Encrypt

方法功能:生成數字信封,爲每個接收者加密session key,並返回加密後的數據包。

方法定義:

[Visual Basic]

ObjectName.Encrypt(

  EncodingType as CAPICOM_ENVELOP_ENCODING_TYPE

) as String·

參數說明:

q      EncodingType[IN] 數字信封的格式,CAPICOM_ENCODE_BASE640)表示Base64編碼格式,CAPICOM_ENCODE_BINARY1)表示DER編碼的二進制格式。默認是Base64編碼格式。

返回值:String類型的某一特定編碼格式的證書數據

提示:數字信封包括加密後的原文以及爲每個接收者加密的session key。這些session key都是用接收者證書的公鑰加密的,只有用接收者私鑰才能解密。

2.解密數字信封方法Decrypt

方法功能:解密數字信封。解密成功後EnvelopedData對象的Content屬性就是原始數據。解密的證書必須擁有對應私鑰的權限。

方法定義:

[Visual Basic]

ObjectName.Decrypt(

  EnvelopedMessage as String

)

參數說明:

q      EnvelopedMessage[IN] 加密的數字信封。

返回值:無。

示例代碼:

         var oStore = new ActiveXObject("CAPICOM.Store");

         var oEnvelopedData = new ActiveXObject("CAPICOM.EnvelopedData");

         oStore.Open(CAPICOM_CURRENT_USER_STORE,CAPICOM_MY_STORE,CAPICOM_STORE_OPEN_READ_ONLY | CAPICOM_STORE_OPEN_EXISTING_ONLY);

         var oStoreCerts = oStore.Certificates.Find(CAPICOM_CERTIFICATE_FIND_KEY_USAGE, CAPICOM_DIGITAL_SIGNATURE_KEY_USAGE, true);

         oStoreCerts = oStoreCerts.Select();//彈出證書選擇框

         var oCert = oStoreCerts (1);

         oEnvelopedData.Content="機密數據!";

         oEnvelopedData.Algorithm.Name = 2;

         oEnvelopedData.Algorithm.KeyLength = 0;

         oEnvelopedData.Recipients.Add(oCert);

         var strEnvelopedData = oEnvelopedData.Encrypt(CAPICOM_ENCODE_BASE64);

         alert("數字信封:"+strEnvelopedData);

         //解密

         oEnvelopedData.Decrypt(strEnvelopedData);

         alert("原文:"+oEnvelopedData.Content);

此代碼的運行效果爲選擇數字證書後,彈出加密結果。最後顯示解密結果即原文。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章