|
CAPICOM 版本 2.1.0.3 是 CAPICOM 的最新版本,CAPICOM 可用于对数据进行数字签名,检查、验证和显示他们的数字签名或数字证书,在证书存储中添加或删除证书,最后加密或解密数据。
如何让VBScript利用Windows原生自带的CAPICOM组件来实现随机数、Hash(MD5/SHA1)以及Base64算法,当然在VBScript的世界里,这些算法都有免组件的纯代码实现,当然使用组件的好处就是代码简洁和运行效率的提高,所以我们不妨尝试一下。
在包含CAPICOM特性代码部署到服务器上之前需要测试一下当前系统是否支持,如果不支持只有考虑.NET或者原生代码的实现了。
CAPICOM有很多对象(Objects),这里我也不一一介绍,主要关注的是 CAPICOM.Utilities 和 CAPICOM.HashedData 。
本文也是通过这两个对象实现所需要的算法功能的。
第一、实现随机数:
可能大家要问为什么VBScript语言自带随机数功能,我们还需要使用CAPICOM来生成随机数,实际上我们通过脚本语言生成的随机数是伪随机数,当然这些伪随机数可以应用于一些要求不高的场合,伪随机数是通过算法和数学运算生成的模拟随机数,对于加密这类应用来说这种随机数是不安全的,而真正的随机数是通过硬件噪音生成的,比如在Linux及其他类Unix系统下,可以通过 /dev/random 或者 /dev/urandom 获得,因为这里我们实现的系统是Windows,所以可以变通的通过CAPICOM获取。
方法的说明:
- Utilities.GetRandom( _
- [ ByVal Length ], _
- [ ByVal EncodingType ] _
- )
复制代码
长度 [in, 可选]
要创建的随机数的长度(以字节为单位)。 默认值为 8 个字节。
EncodingType [in, 可选]
CAPICOM_ENCODING_TYPE枚举的值,该值指示要用于生成的随机数的编码类型。 默认值为CAPICOM_ENCODE_BINARY。 此参数的取值可为下列值之一:
值 | 含义 | CAPICOM_ENCODE_ANY | 仅当输入数据具有未知编码类型时,才使用此编码类型。 如果使用此值指定输出的编码类型,将改用CAPICOM_ENCODE_BASE64。 在 CAPICOM 2.0 中引入。
| CAPICOM_ENCODE_BASE64 | 数据保存为 base64 编码的字符串。
| CAPICOM_ENCODE_BINARY | 数据保存为纯二进制序列。 |
枚举类型:成员 | 说明 | 值 | CAPICOM_ENCODE_ANY | 数据保存为 base64 编码的字符串或纯二进制序列。 此编码类型仅用于具有未知编码类型的输入数据。 在 CAPICOM 2.0 中引入。
| 0xffffffff | CAPICOM_ENCODE_BASE64 | 数据保存为 base64 编码的字符串。
| 0 | CAPICOM_ENCODE_BINARY | 数据保存为纯二进制序列。
| 1 |
注解
以下 CAPICOM 方法和属性使用此枚举类型:
Certificate.Export 方法
EncodedData.Value 属性
EncryptedData.Encrypt 方法
EnvelopedData.Encrypt 方法
ExtendedProperty.Value 属性
SignedData.Sign 方法
SignedData.CoSign 方法
Microsoft Store.Export 方法
Utilities.GetRandom 方法
实例:
- Function GetRandom(ByVal intLen,ByVal intType)
-
- Dim objCapiCom
- Set objCapiCom = CreateObject("CAPICOM.Utilities.1")
- GetRandom = objCapiCom.GetRandom(intLen, intType)
- Set objCapiCom = Nothing
- End Function
- Response.Write GetRandom(10,0)
复制代码
|
|