Nodejs 使用node-rsa 加密数据

Nodejs 使用node-rsa 加密数据,第1张

RSA算法原理 阮一峰

1、在node.js中使用rsa算法。首先需要是使用node-rsa包

2、实现加密/解密

客户端需要使用一个jsencrypt.min.js 包利用公钥对数据进行加密

以上运行时可以会出现如下错误

出现如上错误的时候,是服务端的加密方法和jsencrypt的加密方式不一致导致的。jsencrypt加密方式是pkcs1,node-rsa 默认的加密方式是pkcs1_oaep。解决办法如下:

就是加密和解密使用同一个密钥,通常称之为“Session Key ”这种加密技术在当今被广泛采用,如美国政府所采用的DES加密标准就是一种典型的“对称式”加密法,它的Session Key长度为56bits。

非对称式加密:

就是加密和解密所使用的不是同一个密钥,通常有两个密钥,称为“公钥”和“私钥”,它们两个必需配对使用,否则不能打开加密文件。

加密为系统中经常使用的功能,node自带强大的加密功能Crypto,下面通过简单的例子进行练习。

1、加密模块的引用:

var crypto=require('crypto')

var $=require('underscore')var DEFAULTS = {

encoding: {

input: 'utf8',

output: 'hex'

},

algorithms: ['bf', 'blowfish', 'aes-128-cbc']

}

默认加密算法配置项:

输入数据格式为utf8,输出格式为hex,

算法使用bf,blowfish,aes-128-abc三种加密算法

2、配置项初始化:

function MixCrypto(options) {

if (typeof options == 'string')

options = { key: options }

options = $.extend({}, DEFAULTS, options)

this.key = options.key

this.inputEncoding = options.encoding.input

this.outputEncoding = options.encoding.output

this.algorithms = options.algorithms

}

加密算法可以进行配置,通过配置option进行不同加密算法及编码的使用。

3、加密方法代码如下:

MixCrypto.prototype.encrypt = function (plaintext) {

return $.reduce(this.algorithms, function (memo, a) {

var cipher = crypto.createCipher(a, this.key)

return cipher.update(memo, this.inputEncoding, this.outputEncoding)

+ cipher.final(this.outputEncoding)

}, plaintext, this)

}

使用crypto进行数据的加密处理。

4、解密方法代码如下:

MixCrypto.prototype.decrypt = function (crypted) {

try {

return $.reduceRight(this.algorithms, function (memo, a) {

var decipher = crypto.createDecipher(a, this.key)

return decipher.update(memo, this.outputEncoding, this.inputEncoding)

+ decipher.final(this.inputEncoding)

}, crypted, this)

} catch (e) {

return

}

}


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

原文地址: http://outofmemory.cn/sjk/10700486.html

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

发表评论

登录后才能评论

评论列表(0条)

保存