VBS调用CAPICOM对象实现SHA1&MD5加密

标签: , , , ,

MD5算法的VBS代码在网上可以找到很多,这些代码都是按照“算法”写出来的,所以都很长,更重要的是,找不到SHA1算法的VBS实现。本来打算自己写的,但是看到复杂的算法描述就知难而退了。算了吧,有现成的COM对象调用,又何必去关心算法呢,直接拿来使用就行了。如果下面的例子代码提示无法创建对象,需要下载CAPICOM组件并注册。

Const CAPICOM_HASH_ALGORITHM_MD2 = 1
Const CAPICOM_HASH_ALGORITHM_MD4 = 2
Const CAPICOM_HASH_ALGORITHM_MD5 = 3
Const CAPICOM_HASH_ALGORITHM_SHA1 = 0
Const CAPICOM_HASH_ALGORITHM_SHA_256 = 4
Const CAPICOM_HASH_ALGORITHM_SHA_384 = 5
Const CAPICOM_HASH_ALGORITHM_SHA_512 = 6

'Author: Demon
'Website: http://demon.tw

Dim HashedData
Set HashedData = CreateObject("CAPICOM.HashedData")
HashedData.Algorithm = CAPICOM_HASH_ALGORITHM_SHA1
HashedData.Hash "Demon"
WScript.Echo HashedData.Value

需要指出的是VBS的字符串是Unicode编码的,例如上面的字符串"Demon"在内存中的十六进制是4400 6500 6D00 6F00 6E00,这些Hash算法只关心数据的二进制值,不同编码的同一字符串的二进制值是不一样的,这就是算出来的值和PHP中(PHP默认的编码是UTF-8)的sha1("Demon")的值不一样的原因。更多CAPICOM的用法请自行查阅MSDN参考文档

随机文章:

  1. PHP调用COM组件
  2. 用VBS下载文件
  3. 在线VBScript代码格式化工具VbsBeautifier
  4. Microsoft Platform SDK Febrary 2003版下载
  5. OpenWrt配置IPv6之6to4隧道

5 条评论 发表在“VBS调用CAPICOM对象实现SHA1&MD5加密”上

  1. 王菲说道:

    好东西就是用来学习的

  2. wankoilz说道:

    问个问题啊,请看下面,同样是对三个字节进行md5运算,为什么“字节数组”型的结果与“string”型的结果不一样呢:
    Set xmldom=CreateObject(“microsoft.xmldom”)
    Set node=xmldom.createelement(“binary”)
    node.datatype=”bin.hex”
    node.text=”616263″
    Dim HashedData
    Set HashedData = CreateObject(“CAPICOM.HashedData”)
    HashedData.Algorithm = CAPICOM_HASH_ALGORITHM_MD5
    ‘被加密对象为字节数组类型
    HashedData.Hash node.nodetypedvalue
    WScript.Echo HashedData.Value
    ‘被加密对象为string类型
    HashedData.Hash chrb(61)&chrb(62)&chrb(63)
    WScript.Echo HashedData.value

  3. tyan说道:

    感谢博主,在你博客上学到不少东西啊。

留下回复