标题: VBS调用CAPICOM对象实现SHA1&MD5加密
作者: Demon
链接: https://demon.tw/programming/vbs-sha1-md5.html
版权: 本博客的所有文章,都遵守“署名-非商业性使用-相同方式共享 2.5 中国大陆”协议条款。
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: https://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参考文档。
赞赏微信赞赏支付宝赞赏
随机文章:
好东西就是用来学习的
问个问题啊,请看下面,同样是对三个字节进行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
请仔细检查你的代码。
靠… …这次彻底蠢了一把… …一个是十进制,一个是hex!
感谢博主,在你博客上学到不少东西啊。