◆ [2017-12-17 星期日 2:14] ◆ 您来自:54.226.172.30,欢迎您访问風雲工作室。 收藏本站 ◆ | ◆ 设为首页
联系站长(腾讯QQ)
5029111 [風雲]
站长当前离线
首  页 论坛交流 游戏频道 无忧脚本 网络硬盘 网店精选 聊 天 室 自助链接 来访记录 访客留言 搜索提供
位置:風雲工作室 - 论坛交流 - 技术专栏 - 脚本中心 - 【原创】JScript调用.NET类库实现MD5加密 返回
主题:【原创】JScript调用.NET类库实现MD5加密
風雲
★☆☆☆☆☆☆☆☆☆
积分:32
发帖:35
登录:2017/10/21
注册:2006/9/17
(1楼)【原创】JScript调用.NET类库实现MD5加密
网上有不少的JScript/VBScript实现的加密代码,由于不是使用UTF-8编码进行加密,所以加密字符如果出现中文,会出现与常见(PHP、.NET等)语言加密结果不一致的现象,因此仅适用于纯英文字符的加密。

.NET 2.0环境为JScript和VBScript提供了不少的类库,因此,我们可以利用这些类库很简单的实现标准的MD5加密:
WSH.Echo(md5("中文测试"));

function MD5(str) {
        var xml = new ActiveXObject("Microsoft.XmlDom");
        var utf = new ActiveXObject("System.Text.UTF8Encoding");
        var md5 = new ActiveXObject("System.Security.Cryptography.MD5CryptoServiceProvider");
        xml.loadXML("<root />");
        var root = xml.documentElement;
        root.dataType = "bin.hex";

        var buf = utf.GetBytes_4(str);
        root.nodeTypedValue = md5.ComputeHash_2(buf);
        return root.text;
}
在WSH环境下,默认调用的是.NET 2.0类库(.NET 4.0未提供),如果没有安装2.0环境,调用时便会自动弹出安装2.0的对话框。不过,在ASP环境下,是根据当前的AppPool确定.NET版本的,并非必须安装.NET 2.0版本。

微软Microsoft 脚本专家日志:http://technet.microsoft.com/zh-cn/magazine/2007.01.heyscriptingguy.aspx
时间:2015年4月27日 4:08:53 IP:已记录 引用 回复
Rimifon
★☆☆☆☆☆☆☆☆☆
积分:261
发帖:293
登录:2017/11/15
注册:2006/6/28
(2楼)
网上JScript、VbScript版本的MD5代码对中文的加密结果会与php、.NET等语言的加密的结果不一致,可以先使用encodeURIComonent和unescape转成单字节再加密就正常了,例如:

WSH.Echo(GetObject("script:http://www.fengyun.org/Down/DbHelper.sct").MD5(unescape(encodeURIComponent("中文")), 1));

正确加密结果为:A7BAC2239FCDCB3A067903D8077C4A07


时间:2015年4月27日 7:42:31 IP:已记录 引用 回复

© Copyright 2006-2017,風雲工作室 All rights reserved.
湘ICP备05009306号QQ登录
操作 1 个库,连接 3 次,执行 9 次,耗时 234 毫秒。