本來打算自己寫的,但是看到復雜的算法描述就知難而退了。算了吧,有現成的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
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上即可,缺點是不能處理太大的文件。
原文:http://demon.tw/programming/vbs-sha1-md5.html