VBS中通过调用CAPICOM对象实现SHA1&MD5加密
本来打算自己写的,但是看到复杂的算法描述就知难而退了。算了吧,有现成的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上即可,缺点是不能处理太大的文件。
文中软件与vbs打包下载 http://xiazai.jb51.net/201101/tools/capicom_dc_sdk_jb51.rar
原文:http://demon.tw/programming/vbs-sha1-md5.html
相关推荐
-
ASP.NET中MD5与SHA1加密的几种方法
MD5的全称是Message-Digest Algorithm 5(信息-摘要算法),在90年代初由Mit Laboratory for Computer Science和Rsa data security inc的Ronald l. rivest开发出来,经md2.md3和md4发展而来.它的作用是让大容量信息在用数字签名软件签署私人密匙前被"压缩"成一种保密的格式(就是把一个任意长度的字节串变换成一定长的大整数).不管是md2.md4还是md5,它们都需要获得一个随机长度的信息并产
-
c# 实现MD5,SHA1,SHA256,SHA512等常用加密算法源代码
复制代码 代码如下: using System; using System.IO; using System.Data; using System.Text; using System.Diagnostics; using System.Security; using System.Security.Cryptography; /**//* * .Net框架由于拥有CLR提供的丰富库支持,只需很少的代码即可实现先前使用C等旧式语言很难实现的加密算法.本类实现一些常用机密算法,供参考.其中MD5算
-
浅谈C#中Md5和Sha1两种加密方式
1.新建控制台应用程序 2.新建类 EncryptHelper.cs public static class EncryptHelper { /// <summary> /// 基于Md5的自定义加密字符串方法:输入一个字符串,返回一个由32个字符组成的十六进制的哈希散列(字符串). /// </summary> /// <param name="str">要加密的字符串</param> /// <returns>加密后的十六
-
VBS中通过调用CAPICOM对象实现SHA1&MD5加密
本来打算自己写的,但是看到复杂的算法描述就知难而退了.算了吧,有现成的COM对象调用,又何必去关心算法呢,直接拿来使用就行了.如果下面的例子代码提示无法创建对象,需要下载CAPICOM组件并注册. 复制代码 代码如下: Const CAPICOM_HASH_ALGORITHM_MD2 = 1 Const CAPICOM_HASH_ALGORITHM_MD4 = 2 Const CAPICOM_HASH_ALGORITHM_MD5 = 3 Const CAPICOM_HASH_ALGORITHM_
-
Kettle中使用JavaScrip调用jar包对文件内容进行MD5加密的操作方法
Kettle中使用JavaScript调用jar包对文件内容进行MD5加密.本文主要知识点: JavaScript调用jar包对文件内容进行MD5加密,返回加密md5值 Kettle实现对文件内容的加密,返回加密md5值 2.使用方法 1)下载jar包 http://xiazai.jb51.net/202009/yuanma/filemd5hash_jb51.rar 2)将jar包导入Kettle的lib目录下 3)重启Kettle Spoon.bat,使得kettle加载到新加入的jar包,下
-
PowerShell中调用.NET对象的静态方法、静态属性和类方法、类属性例子
本文介绍在PowerShell中如何使用.NET对象,PowerShell内在支持大量的.NET对象. 调用类的静态方法 用中括号把类的名称括起来,然后输入两个冒号,然后再输入方法名,最后是方法的参数.语法如下: [类名]::方法名(参数列表) 如: 复制代码 代码如下: [System.Diagnostics.Process]::GetProcessById(0) 访问类的静态属性 要访问.NET类的静态属性,可以使用中括号把类的名称括起来,然后输入两个冒号,然后再输入属性名.语法如下: [类
-
Laravel 6.2 中添加了可调用容器对象的方法
Laravel小组上周发布了v6.2.0 ,其中包含 针对已登录用户的新的密码确认流程以及可调用的容器对象.现在,让我们去了解一些尚未发布的一些其他新功能,在发行说明中表示已经可以使用: 首先,Container::call 现在支持可调用对象.下面是pull请求的测试,它演示了它的工作原理: class ContainerCallCallableStub { public function __invoke(ContainerCallConcreteStub $stub, $default =
-
vbs 中调用shell.application 简单函数
Set os=CreateObject("wscript.shell") Set os0=CreateObject("shell.application") Do input1=InputBox(" 请选择:"+chr(13)+chr(13)+ _ "1. 全部窗口最小化"+chr(13)+ _ "2. 窗口状态复原"+chr(13)+ _ "
-
VBS中Run和Exec的区别
Set ws = CreateObject("WScript.Shell") '这里创建一个对象引用,以便在以下示例代码中使用. 'Demon注:这个变量名怎么这么猥琐(WS) 语法:(常识(Demon注:常识这个词我喜欢):作为过程使用时,不要加括号,否则出现编译器错误(参数唯一或没有时加括号不会出错,但建议不要加)) 复制代码 代码如下: ws.Run(strCommand, [intWindowStyle], [bWaitOnReturn]) [Set objExec =] ws
-
VBS中CreateObject和WScript.CreateObject的区别介绍
CreateObject和WScript.CreateObject的区别一: CreateObject是VBS的内置函数,属于语言的一部分:而WScript.CreateObject是Windows脚本宿主(wscript.exe和cscript.exe)提供的WScript对象的方法.类似于批处理中内部命令和外部命令的关系.在VBS中,CreateObject总是可用的,而WScript.CreateObject只有在宿主为wscript.exe和cscript.exe的情况下才可以使用,在W
-
Python面向对象编程中的类和对象学习教程
Python中一切都是对象.类提供了创建新类型对象的机制.这篇教程中,我们不谈类和面向对象的基本知识,而专注在更好地理解Python面向对象编程上.假设我们使用新风格的python类,它们继承自object父类. 定义类 class 语句可以定义一系列的属性.变量.方法,他们被该类的实例对象所共享.下面给出一个简单类定义: class Account(object): num_accounts = 0 def __init__(self, name, balance): self.name =
-
js中iframe调用父页面的方法
本文实例讲述了js中iframe调用父页面的方法.分享给大家供大家参考.具体实现方法如下: 子页面调用父页面的方法在js中很容易实现.我们只需要在主页面加个函数,然后在子页面通过window.parent.方法()即可实现了 比如调用a()函数,就写成: 复制代码 代码如下: window.parent.a(); 但是我在chrome浏览器下却发现此方法无效了 复制代码 代码如下: //在父页面中调用该函数 <script> function dey() { var cards_frame=d
-
详解JavaScript异步编程中jQuery的promise对象的作用
Promise, 中文可以理解为愿望,代表单个操作完成的最终结果.一个Promise拥有三种状态:分别是unfulfilled(未满足的).fulfilled(满足的).failed(失败的),fulfilled状态和failed状态都可以被监听.一个愿望可以从未满足状态变为满足或者失败状态,一旦一个愿望处于满足或者失败状态,其状态将不可再变化.这种"不可改变"的特性对于一个Promise来说非常的重要,它可以避免Promise的状态监听器修改一个Promise的状态导致别的监听器的行
随机推荐
- 微信小程序中的swiper组件详解
- Windows Server 2008 R2 下配置证书服务器和HTTPS的图文教程
- 详解Spring Boot 部署jar和war的区别
- JS+CSS实现表格高亮的方法
- 关于iframe跨域POST提交的方法示例
- Yii2中关联查询简单用法示例
- Python访问纯真IP数据库脚本分享
- C#判断当前程序是否通过管理员运行的方法
- 基于Mysql的IP处理函数inet_aton()与inet_ntoa()的深入分析
- php基于表单密码验证与HTTP验证用法实例
- js跨域请求数据的3种常用的方法
- Bootstrap Table服务器分页与在线编辑应用总结
- JavaScript 脚本将当地时间转换成其它时区
- 浅谈python import引入不同路径下的模块
- Kotlin实现静态方法
- Android Handler 机制实现原理分析
- List转换成Map工具类的简单实例
- Yii2使用Bootbox插件实现自定义弹窗
- 灵活使用asp.net中的gridview控件
- Android实现简单的分批加载ListView