Node.js实现国密算法

1|0Node.js安装

1|1Node.js下载

下载地址

1|2Node.js解压

使用以下指令进行解压

tar -xvf node-v18.12.1-linux-x64.tar.xz

1|3Node.js配置

首先将node文件移至/usr/local/bin文件夹下

mv node-v16.18.1-linux-x64 /usr/local/bin

随后进行配置环境变量

vi /etc/profile

配置这两个环境变量,PATH若有其他变量使用:进行断开即可

1|0配置软连接(未把node移至usr/local/bin的进行)

为了使nodejs能够全局使用,我们需要配置一下软链接(类似于快捷方式,如果安装的路径在/usr/local/bin/下不需要这一步操作),当然也是软连接到用户目录下/usr/local/bin/

软链接的命令很简单: ln -s 源文件 目标路径

使用以下指令进行软连接

ln -s 'nodejs路径'/bin/node /usr/local/bin/ ln -s 'nodejs路径'/bin/npm /usr/local/bin/

1|4Node.js验证安装

使用以下指令进行验证,若未报错则安装成功!!!

node -v npm -v

2|0gm-crypto module下载

使用npm install gm-crypto指令进行下载

3|0Node.js实现国密算法

3|1node.js+gm-crypto算法实现流程图

3|2SM2算法实现

1|0具体代码如下:

const { SM2 } = require('gm-crypto') const { publicKey, privateKey } = SM2.generateKeyPair() const originalData = '20201325xjr' const encryptedData = SM2.encrypt(originalData, publicKey, { inputEncoding: 'utf8', outputEncoding: 'base64' }) console.log(encryptedData) const decryptedData = SM2.decrypt(encryptedData, privateKey, { inputEncoding: 'base64', outputEncoding: 'utf8' }) console.log(decryptedData)

1|0使用node指令进行编译运行文件

node sm2.js

最后的结果就是这样

3|3SM3算法实现

1|0具体代码如下:

const { SM3 } = require('gm-crypto') console.log(SM3.digest('20201325')) console.log(SM3.digest('xjr')) console.log(SM3.digest('112233'))

1|0使用node指令进行编译运行文件

node sm3.js

经验证发现摘要值一样,算法实现准确

最后的结果就是这样

3|4SM4算法实现

1|0具体代码如下:

const { SM4 } = require('gm-crypto') const key = '0123456789abcdeffedcba9876543210' // Any string of 32 hexadecimal digits const originalData = '20201325xjr' /** * Block cipher modes: * - ECB: electronic codebook * - CBC: cipher block chaining */ let encryptedData, decryptedData // ECB encryptedData = SM4.encrypt(originalData, key, { inputEncoding: 'utf8', outputEncoding: 'base64' }) console.log(encryptedData) decryptedData = SM4.decrypt(encryptedData, key, { inputEncoding: 'base64', outputEncoding: 'utf8' }) console.log(decryptedData) console.log('\n') // CBC const iv = '0123456789abcdeffedcba9876543210' // Initialization vector(any string of 32 hexadecimal digits) encryptedData = SM4.encrypt(originalData, key, { iv, mode: SM4.constants.CBC, inputEncoding: 'utf8', outputEncoding: 'hex' }) console.log(encryptedData) decryptedData = SM4.decrypt(encryptedData, key, { iv, mode: SM4.constants.CBC, inputEncoding: 'hex', outputEncoding: 'utf8' }) console.log(decryptedData)

1|0使用node指令进行编译运行文件

node sm4.js

最后的结果就是这样


__EOF__

本文作者userName
本文链接https://www.cnblogs.com/1314xhuan/p/16927709.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   20201325my  阅读(1140)  评论(1编辑  收藏  举报
相关博文:
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
点击右上角即可分享
微信分享提示