欢迎您访问宜州一中 您可以登录 或注册
 
收藏本站 简繁转换
一方天地育桃李,三尺讲台竞风采             宜州区一中在宜州博物馆举行“人杰地灵读宜州”故事分享会             宜州一中举行2024届中考百日誓师大会             龙腾启新 筑梦未来 ——宜州区第一中学欢庆2024年元旦文艺晚会             走进嘉联丝厂 畅享研学之乐 ——宜州区第一中学开展研学实践活动             2023年河池市宜州区第一中学/宜州区红卫学校家庭经济困难大学新生入学资助项目发放名册(第二批)             展科技志向,圆飞行梦想 ——宜州区一中2025届举行无人机大赛             2023年河池市宜州区第一中学\红卫学校 家庭经济困难大学新生入学资助项目发放名册(第一批)             法制进校园 以法促成长 ——宜州一中举行“三姐护蕾”法治进校园活动             “英”你精彩,“语”你同行 —— 我校2025届举行英文风采大赛            

DoraCMS

您现在的位置是:首页>文档内容页

文档详情

Node.js API实例讲解——数据的加密与解密

doramart 2024-04-20 05:18:28 技术文档236342
听起来好高深,其实这里并不会介绍原理,主要介绍node.js平台提供的加密与解密的工具如何用。 加密和解密的手段有一些,下面一一道来。

数据的加密与解密

听起来好高深,其实这里并不会介绍原理,主要介绍node.js平台提供的加密与解密的工具如何用。

加密和解密的手段有一些,下面一一道来。

Cipher对象用来加密,Decipher对象用来解密。也就是说创建Cipher对象然后调用它的一些“神秘”方法把数据加密,反过来通过创建一个Decipher对象,然后调用它的“秘密”方法把加密的数据解密,还原到原始数据。

那么下面的讲解,会分几个部分,首先介绍创建Cipher对象的方式,2 介绍如何通过Cipher进行加密,3 介绍Decipher对象的创建方式,4 介绍如何通过Decipher对象进行解密。

创建Cipher对象

通过 crypto.createCipher(algorithm, key) 或 crypto.createCipheriv(algorithm, key, key2) 可以创建 Cipher对象。 

第二个方法多了一个key2,可以理解为是多加了一个key,不过kye2必须是8个字符,多也不行,少也不行。第一个参数algorithm算法是专门用于加密的算法,可以通过crypto.getCiphers() 得到一个算法数组。

var crypto = require("crypto");
var ciphter = crypto.createCipher("bf","111"); 
var ciphter2 = crypto.createCipheriv("bf","111","12345678");

以上代码创建了两个Ciphter对象。

加密数据

通过调用Ciphter对象的update和final可以得到加密后的数据。通过ciphter.update(data)方法加密data数据,然后return返回部分加密的数据,可多次调用update方法,最后调用 ciphter.final() 返回剩余的加密数据。这里要注意的是调用update(data)并不一定返回对应的data加密后的数据,所以正确的流程是,每次调用update,然后把返回的数据相加,最后调用一次final,再把final返回的数据相加,得到完整的加密后的数据。

下面看一个例子:

var crypto = require("crypto");
var ciphter = crypto.createCipher("bf","111");
var s = "";
s += ciphter.update("aaa","utf8","hex");
s += ciphter.update("bbb","utf8","hex");
s += ciphter.update("ccc","utf8","hex");
s += ciphter.final("hex");

是最终加密后的数据,update(要加密的数据,数据的编码,加密后的数据编码), final(加密后的数据编码)。

创建Decipher对象,用于解密。

crypto.createDecipher(algorithm, key) 和 crypto.createDecipheriv(algorithm, key, key2) 对应  crypto.createCipher(algorithm, key) 和 crypto.createCipheriv(algorithm, key, key2) 方法。

var decipher = crypto.createDecipher("bf","111");
解密数据

和加密的方法一模一样,下面举个例子,解密上面加密的例子。

var o = "";
var decipher = crypto.createDecipher("bf","111");
o += decipher.update(s,"hex","utf8");
o += decipher.final("utf8");
console.log(o); // aaabbbccc

分解之后,加密解密其实很简单,即使不知道原理,只要知道怎么用就可以了。

文章评论

取消回复
登录 参与评论

评论列表(