nodejs 对文件进行 压缩加密和解压缩解密
来源:互联网 发布:js button value 编辑:程序博客网 时间:2024/04/30 01:17
utils.js
var fs = require('fs');var zlib = require('zlib');var crypto = require('crypto');function geFileList(path) { var filesList = []; readFile(path, filesList); return filesList;}function readFile(path, filesList) { files = fs.readdirSync(path); files.forEach(walk); function walk(file) { states = fs.statSync(path + '/' + file); if (states.isDirectory()) { readFile(path + '/' + file, filesList); } else { var obj = new Object(); obj.size = states.size; obj.name = file; obj.path = path + '/' + file; filesList.push(obj); } }}var getFileName = function (path) { var pathList = path.split("/"); var fileName = pathList[pathList.length - 1]; return fileName;};var getFileContent = function (filePath, cb) { fs.readFile(filePath, function (err, buf) { cb(err, buf); });};var writeFileSync = function (filePath, text) { fs.writeFileSync(filePath, text);};var writeFileAsync = function (filePath, text, cb) { fs.writeFile(filePath, text, function (err) { cb(err); });};/********************加密解密部分**************************/var consts = { cryptkey: 'S62rgt9rf!nYS5b3', iv: "Og'Y6Jm-'i#io9Op"};function util (){}var prot = util.prototype;prot.md5 = function (str) { var md5sum = crypto.createHash('md5'); md5sum.update(str); str = md5sum.digest('hex'); return str;};prot.encode = function (content) { var cipher = crypto.createCipheriv('aes-128-cbc', consts.cryptkey, consts.iv); cipher.setAutoPadding(true); var bf = []; bf.push(cipher.update(content)); bf.push(cipher.final()); return Buffer.concat(bf);};prot.decode = function (content) { var decipher = crypto.createDecipheriv('aes-128-cbc', consts.cryptkey, consts.iv); decipher.setAutoPadding(true); try { var a = []; a.push(decipher.update(content)); a.push(decipher.final()); return Buffer.concat(a); } catch (e) { console.error('decode error:', e.message); return null; }};/**********************压缩解压缩部分************************/function gZip(strText, cb) { zlib.gzip(strText, function (err, bufData) { cb(err, bufData); });}function unZip(buffer, cb) { zlib.unzip(buffer, function (err, buf) { cb(err, buf); });}module.exports = { "FileUtil": { "getDirFiles": geFileList, "getFileName": getFileName, "writeFileAsync": writeFileAsync, "writeFileSync": writeFileSync, "getFileContent": getFileContent }, "EncodeUtil":util, "ZipUtil": { "gZip": gZip, "unZip": unZip }};
demo.js
var utils = require('./utils');var async = require('async');var encodeUtil = new utils.EncodeUtil();zipEncode();function zipEncode() { var fileList = utils.FileUtil.getDirFiles(__dirname + "/jsonFile"); async.each(fileList, function (item, callback) { var filepath = item.path; var filename = utils.FileUtil.getFileName(filepath); utils.FileUtil.getFileContent(filepath, function (err, buf) { if (!err) { var bpstr = new Buffer(buf); utils.ZipUtil.gZip(bpstr, function (err, bufData) { var encodeBuffer = encodeUtil.encode(bufData);//fs.readFileSync(curPath) var resultPath = __dirname + "/resFile/" + filename; utils.FileUtil.writeFileSync(resultPath, encodeBuffer); callback(err); }); } else { callback(err); } }); }, function (err, resp) { if (err) { console.log("err :", err); } else { console.log("success"); decodeUnzip(); } });}function decodeUnzip() { var fileList = utils.FileUtil.getDirFiles(__dirname + "/resFile"); async.each(fileList, function (item, callback) { var filepath = item.path; utils.FileUtil.getFileContent(filepath, function (err, buf) { if (!err) { var bpstr = new Buffer(buf); var decodeBuffer = encodeUtil.decode(bpstr); utils.ZipUtil.unZip(decodeBuffer, function (err, buf) { console.log(JSON.parse(buf.toString())); callback(err); }); } else { callback(err); } }); }, function (err, resp) { if (err) { console.log("err :", err); } else { console.log("success"); } });}
0 0
- nodejs 对文件进行 压缩加密和解压缩解密
- 对文件或文件夹进行压缩解压加密解密
- 使用Deflate算法对文件进行压缩和解压缩
- 对文件简单压缩和解压缩
- 文件压缩和解压缩
- 对文件压缩加密,解密解压缩,对称加密,DES算法
- 对指定文件或目录进行压缩和解压缩的工具类总结
- 用Eclipse对Hadoop文件进行压缩和解压缩编译过程中遇到的问题
- 对字符串,字节数组进行GZIP压缩和解压缩
- 使用java.util.zip对字符串进行压缩和解压缩
- 使用java.util.zip对字符串进行压缩和解压缩
- 对文件压缩加密/解密解压缩的例子,DES/RSA
- 对MemoryStream进行压缩、加密
- 利用SharpZipLib进行文件的压缩和解压缩
- 利用SharpZipLib进行文件的压缩和解压缩
- 利用SharpZipLib进行文件的压缩和解压缩
- C#利用SharpZipLib进行文件的压缩和解压缩
- 使用java提供的api对文件进行压缩解密
- qemu的网络配置方法2则(转)
- notepad++ 设置编辑区域背景色为黑色
- Windows多线程
- 压缩感知重构算法之正交匹配追踪(OMP)
- systemd详解 (二)
- nodejs 对文件进行 压缩加密和解压缩解密
- hdu1501_Zipper
- NEON函数详解------vcreate_u8 、vsetq_lane_s32、vgetq_lane_s32
- JavaScriptCore(3)
- maven【一】
- oracle库表修改数据类型
- 修改项目浏览器标签的图标
- stornext
- 初步探索Nginx高并发原理