js node md5模块使用问题
问题描述:md5(123456)得到的结果不是正确的。
why?
问题查找:
1)安装路径问题:
yarn add md5(md5模块在npmjs中显示每周download人数高达百万,有问题还这么多人?)
2)源码查看:
md5入口源码如下:

注意第一行注释和最后一行注释,就是需要把字符串转成字节数组。
再看看不同输入,console.log打印的结果,如下:
如果传入数字123456,那么message的值是:message: 123456
如果传入字符串"123456",那么message的值是:message: (6) [49, 50, 51, 52, 53, 54]
好家伙,问题来了,传入一个数字,就无法变成字节数组了,那么后面是不是就会有问题了?
问题就出在crypt模块的bytesToWords方法,它会把我们的字节数组变成高字节序32位字,如下:

那么该函数传入数字和字符串返回的结果肯定是不一样的,按照数组取值,123456就是取值1,2,3,4,5,6来计算,“123456”则是取值49,50,51,52,53,54来计算,返回结果自然不一样了
crypt模块的bytesToWords函数返回结果如下:
数字123456的结果:crypt.bytesToWords: (2) [16909060, 84279296]
字符串123456的结果:crypt.bytesToWords: (2) [825373492, 892731392]
所以md5函数后面算法计算出来的结果肯定就不一致了。
3)解决方法:
传入字符串:md5("123456")
js node md5模块使用问题的更多相关文章
- Node.js的Formidable模块的使用
今天总结了下Node.js的Formidable模块的使用,下面做一些简要的说明. 1) 创建Formidable.IncomingForm对象 var form = new formidab ...
- node.js学习(三)简单的node程序&&模块简单使用&&commonJS规范&&深入理解模块原理
一.一个简单的node程序 1.新建一个txt文件 2.修改后缀 修改之后会弹出这个,点击"是" 3.运行test.js 源文件 使用node.js运行之后的. 如果该路径下没有该 ...
- 利用Node.js的Net模块实现一个命令行多人聊天室
1.net模块基本API 要使用Node.js的net模块实现一个命令行聊天室,就必须先了解NET模块的API使用.NET模块API分为两大类:Server和Socket类.工厂方法. Server类 ...
- Node.js入门:模块机制
CommonJS规范 早在Netscape诞生不久后,JavaScript就一直在探索本地编程的路,Rhino是其代表产物.无奈那时服务端JavaScript走的路均是参考众多服务器端语言来 ...
- Node.js的net模块
net模块提供了一个异步网络包装器,用于TCP网络编程,它包含了创建服务器和客户端的方法 创建TCP服务器 net.createServer方法 创建客户端去连接服务器 net.connect方法 简 ...
- node.js中express模块创建服务器和http模块客户端发请求
首先下载express模块,命令行输入 npm install express 1.node.js中express模块创建服务端 在js代码同文件位置新建一个文件夹(www_root),里面存放网页文 ...
- node.js中ws模块创建服务端和客户端,网页WebSocket客户端
首先下载websocket模块,命令行输入 npm install ws 1.node.js中ws模块创建服务端 // 加载node上websocket模块 ws; var ws = require( ...
- node.js中net模块创建服务器和客户端(TCP)
node.js中net模块创建服务器和客户端 1.node.js中net模块创建服务器(net.createServer) // 将net模块 引入进来 var net = require(" ...
- 第5月第10天 node.js的request模块
1.node.js的request模块 http://www.cnblogs.com/meteoric_cry/archive/2012/08/18/2645530.html
随机推荐
- 捷配制作PCB流程
https://www.jiepei.com/orderprocess.html 以我的板子为例 查看下自己板子的信息 切换到mm 键盘 Q 压缩PCB文件 付款什么的自己哈 改天我有贴片的订单的时候 ...
- Noip2019暑期训练1
题目名称 时空定位 棋子移动 高精度乘法 数独游戏 存盘文件名 location piece mul sudoku 输入文件名 location.in piece.in mul.in sudoku.i ...
- 「2019-8-13提高模拟赛」树 (tree)
传送门 Description 你有一个 \(n\)个点的树,第 \(i\)个点的父亲是\(p_i\).每个点有一个权值 \(t_i\) 和一个颜色黑或者白.所有点一开始都是白色. 你要进行 \(m\ ...
- HTML页面之间的参数传递
HTML 与 HTML 的跳转中如何在HTML之中实现参数的传递?主要代码如下:request为方法名称,params 为要获取的参数. function request(params) { var ...
- 微信小程序之如何定义页面标题
效果图: 这个标题是在哪里定义的呢?type.js核心代码如下(通常这段代码放在onLoad函数体内): wx.setNavigationBarTitle({ title: "支出类型列表& ...
- CTF 文件上传
目录 一.客户端校验 1.禁用JS 2.抓包改包 二.服务端校验 1.MIME类型检测 2.后缀名黑名单校验 3.后缀名白名单校验 4.内容头校验 5.竞争上传 6.过滤<?或php 两种校验方 ...
- DELPHI7 ADO二层升三层新增LINUX服务器方案
DELPHI7 ADO二层升三层新增LINUX服务器方案 引子:笔者曾经无数次在用户的LINUX服务器上创建一个WINDOWS虚拟机,用于运行自己DELPHI开发中间件. 现在再不需要如此麻烦了. 咏 ...
- Redis自定义fastJson Serializer
public class FastJsonRedisSerializer<T> implements RedisSerializer<T> { public static fi ...
- 微信小程序 自定义tabbar实例
在小程序的开发文档中,对tabbar是这样说明的: 如果小程序是一个多 tab 应用(客户端窗口的底部或顶部有 tab 栏可以切换页面),可以通过 tabBar 配置项指定 tab 栏的表现,以及 t ...
- 学习使用junit4
目录 一.junit介绍 二.junit4的简单使用