CAPICOM开发指引——对称加解密、数字信封及数字摘要

在这里插入图片描述
今天介绍如何使用CAPICOM进行对称加解密、非对称加解密和摘要运算。

对称加解密使用到的是EncryptedData组件,先上代码。

//加密

Dim message As New EncryptedData

message.Content =“12345678”

message.SetSecret “password”

message.algorithm.Name = CAPICOM_ENCRYPTION_ALGORITHM_AES

message.algorithm.keylength = CAPICOM_ENCRYPTION_KEY_LENGTH_128_BITS

Dim EncryptedMessage As String

EncryptedMessage = message.encrypt

//解密

Dim message As New EncryptedData

message.SetSecret “password”

message.Decrypt EncryptedMessage

Dim outfile as String

outfile = message.Content

EncryptedData 组件的Content属性为待加密的原文,加密的第一步就是将原文赋值给Content;第二步调用SetSecret方法设置加密用的口令,EncryptedData 组件会根据这个口令生成对称密钥;第三步和第四步分别设置使用的对称加密算法和密钥长度。这里使用到了EncryptedData 组件的algorithm属性。algorithm属性的类型是Algorithm组件,顾名思义,它代表加密算法。Algorithm组件有两个属性:Name属性为算法名称,取值及代表的含义如下表。

在这里插入图片描述
KeyLength属性是密钥长度,取值及代表的含义如下表。
在这里插入图片描述

注意,如果选择DES或3DES算法,不用设置密钥长度,设置了也没用。参数设置完毕后,就可以调用EncryptedData 组件的Encrypt方法进行加密,此方法有一个EncodingType参数,代表加密结果的编码方式,此参数类型前文已经介绍过,不再赘述。缺省值为CAPICOM_ENCODE_BASE64。Encrypt方法返回值为加密结果。

解密时,先通过SetSecret设置口令,因为是对称加解密,所以口令要和加密口令一致。然后调用Decrypt方法解密,方法只有一个参数,即密文。Decrypt没有返回值,如果解密失败会抛出错误。解密成功后,访问Content属性即可得到明文。

很简单是吧,但EncryptedData 组件的加解密也有明显的缺点,一是不能指定CSP。前面说过,在Windows的CryptoAPI/CSP体系中,真正提供密码功能的是CSP。但微软应该是出于易用的考虑,在CAPICOM里不支持用户使用指定CSP进行对称加解密,而是使用缺省CSP。第二是不支持国产加密算法。

前面介绍过,在实际应用中,非对称加解密都是通过数字信封的形式实现的,所以,CAPICOM中实现非对称加解密的组件就叫做EnvelopedData。代码和对称加解密基本如出一辙。

//封装

Dim message As New EnvelopedData

message.Content = “12345678”

message. Recipients.Add UserCert

message.algorithm.Name = CAPICOM_ENCRYPTION_ALGORITHM_AES

message.algorithm.keylength = CAPICOM_ENCRYPTION_KEY_LENGTH_128_BITS

Dim EncryptedMessage As String

EncryptedMessage = message.Encrypt

//解封

Dim message As New EnvelopedData

message.Decrypt EncryptedMessage

Dim outfile as String

outfile = message.Content

封装时同样要设置明文和加密算法,这里的加密算法是指对称密钥对明文加密时使用的算法。封装与加密最大不同在于多了一个Recipients属性,它是用来指定数字信封的接收者,实际上就是用来加密的证书(公钥)集合。这里用Recipients对象的Add方法增加了一个用户证书。最后调用EnvelopedData组件的Encrypt方法进行加密,同样有一个EncodingType参数,返回结果就是数字信封。

解封时调用Decrypt方法即可,如果失败会抛出错误;如果成功则同样访问Content属性得到明文。这里并不需要你设置证书或私钥来解密,CAPICOM会自动在计算机上寻找对应的私钥进行解密。

和对称加解密类似,CAPICOM的数字信封里对称加解密部分同样不能指定CSP,也不支持国产加密算法。另外非对称加解密部分只支持RSA算法。所以,如果想使用更复杂的功能以及更多的算法,只能直接调用底层API了。

最后介绍一下数字摘要运算。涉及到的组件是HashedData,

Dim hashobj As New HashedData

hashobj. Algorithm= CAPICOM_HASH_ALGORITHM_SHA_256

hashobj.hash “12345678”

Dim outfile as String

outfile = hashobj.Value

HashedData的Algorithm属性用来设置摘要算法,取值及代表的含义如下表。
在这里插入图片描述

调用hash方法进行摘要运算,参数为进行摘要运算的明文。此方法支持数据分组运算。摘要运算后,访问Value属性即可得到数字摘要结果。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值