nodejs怎样获取一个上传文件的MD5码

nodejs怎样获取一个上传文件的MD5码,第1张

MD5中的MD代表Message Digest,就是信息摘要的意思,不过这个信息摘要不是信息内容的缩写,而是根据公开的MD5算法对原信息进行数学变换后得到的一个128位(bit)的特征码。

1、D5就是求字符串的md5,文件就是一个字符串;

2、前台目前就别考虑读文件内容了(大部分浏览器不行) 都让后台做;

可以直接看nodeclub源代码,如下:

var crypto = require('crypto')

exports.encrypt = function (str, secret) {

var cipher = crypto.createCipher('aes192’, secret)

var enc = cipher.update(str, 'utf8’, ‘hex’)

enc += cipher.final(‘hex’)

return enc

}

exports.decrypt = function (str, secret) {

var decipher = crypto.createDecipher('aes192’, secret)

var dec = decipher.update(str, 'hex’, ‘utf8’)

dec += decipher.final(‘utf8’)

return dec

}

exports.md5 = function (str) {

var md5sum = crypto.createHash(‘md5’)

md5sum.update(str)

str = md5sum.digest(‘hex’)

return str

}

exports.randomString = function (size) {

size = size || 6

var code_string = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789’

var max_num = code_string.length + 1

var new_pass = '’

while (size >0) {

new_pass += code_string.charAt(Math.floor(Math.random() * max_num))

size–

}

return new_pass

}

1、可以在内存存储所有文件的MD5值。具体的可以生成一个Map,key值为MD5,value为文件路径。当上传文件时,查看该文件的md5值是否存在于内存的Map,若不存在,则上传文件,同时更新该Map,将该文件存于Map中。否则不需要上传。

2、socket.io采用事件驱动。所以文件的上传的连接、结束以及传送数据都可以作为一个事件来处理。具体的处理可以看下formidable模块。

只用crypto.createHash('md5')创建一个md5加密的hash,因为创建的md5加密只能对每个加密字符串使用一次,所以需要每次加密的时候都创建一个新的md5加密块

update告诉md5加密需要对哪个字符串进行加密,可以多次调用,多次调用的结果类似于使用md5.update(str1+str2)也就是说

加密出来的效果是一样的

调用digest()对update传入的字符串或者二进制数据进行加密,可以传入加密后显示的格式作为参数,可接受的参数:hex(16进制)、base64(base64格式)等,一般选用的是hex格式,一旦调用了digest之后,这个md5加密串就完成使命了,再次调用md5.update或者digest都会提示错误,这个时候要想对其他数据进行加密的话,需要创建一个新的加密字串算法

这类算法允许我们对一个字符串或者二进制数据进行加密,然后在解密出来使用,以AES算法来举例

类似于hash算法的使用,nodejs提供了两种创建AES算法的方式,一种需要使用加密向量createDecipheriv,一种是不需要使用加密向量的createDecipher,一般我们要使自己的加密出来的结果和java等其他语言加密的结果相等的话,就需要使用第一种方式,传递一个空字符串作为向量,注意这里的key的长度需要为16位字符长度,也就是128的字节长度,因为我们使用的是aes-128-ecb的加解密算法,也就是key需要为128字节长度即16个字符串的长度


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/11773301.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-18
下一篇 2023-05-18

发表评论

登录后才能评论

评论列表(0条)

保存