VBS中通過調用CAPICOM對象實現SHA1&MD5加密
更新時間:2011年01月21日 23:00:15 作者:
MD5算法的VBS代碼在網上可以找到很多,這些代碼都是按照“算法”寫出來的,所以都很長,更重要的是,找不到SHA1算法的VBS實現。
本來打算自己寫的,但是看到復雜的算法描述就知難而退了。算了吧,有現成的COM對象調用,又何必去關心算法呢,直接拿來使用就行了。如果下面的例子代碼提示無法創(chuàng)建對象,需要下載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
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參考文檔。
復制代碼 代碼如下:
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
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參考文檔。
下面是我寫的一個用VBS校驗文件SHA1和MD5值的程序,將文件拖動到VBS上即可,缺點是不能處理太大的文件。
文中軟件與vbs打包下載 http://xiazai.jb51.net/201101/tools/capicom_dc_sdk_jb51.rar
原文:http://demon.tw/programming/vbs-sha1-md5.html
相關文章
SQLids.vbs 0.7(最終版,以后改成gui界面的)
今天搞了個網站,注入點過濾得很變態(tài),工具都不能跑,于是寫了這個東東。2009-10-10bookfind 通過ISBN序號獲取圖書連接的書名與作者的vbs代碼
bookfind 通過ISBN序號獲取圖書連接的書名與作者的vbs代碼,類似小偷程序,通過正則匹配,雖然現在已經無法使用,但代碼不錯,原理都有2011-12-12