什么是 Node-red-contrib-bcrypt
Node-red-contrib-bcrypt
是一个基于 bcrypt
的 Node-RED 密码模块。它提供了对密码的安全存储和验证,以及加密和解密敏感数据的能力。Node-red-contrib-bcrypt
是一个开源的 npm 包,可以用于在 Node-RED 上进行密码的安全处理。
安装 Node-red-contrib-bcrypt
要使用 Node-red-contrib-bcrypt
,首先需要确保已经安装了 Node-RED。如果你还没有安装 Node-RED,请先按照官方文档提示进行安装。在安装 Node-RED 后,你可以通过以下命令安装 Node-red-contrib-bcrypt
:
npm install node-red-contrib-bcrypt
安装完成后,需要在 Node-RED 运行环境中确保已安装了 node-red-contrib-bcrypt
,这可以通过在终端中输入以下命令进行验证:
cd $HOME/.node-red npm ls
需要确保已经存在 node-red-contrib-bcrypt
,如果没有,则需要通过以下命令手动安装:
npm install node-red-contrib-bcrypt
使用 Node-red-contrib-bcrypt
安装完成后,在 Node-RED 编辑器中,你可以在左侧面板中找到 node-red-contrib-bcrypt
,并将它拖到编辑区中。
node-red-contrib-bcrypt
提供了两个节点: bcrypt
和 bcrypt compare
。 bcrypt
节点可将给定的文本加密并输出散列值。bcrypt compare
节点将比较输入的文本和已加密的文本,并根据结果发出 true
或 false
的信号。
示例:
1.在编写示例前你需要安装 node-red-contrib-bcrypt
依赖和 node-red-dashboard
组件包。
2.首先,我们先将 Inject
节点和 bcrypt
节点连线。 Inject
节点生成需要加密的明文密码,可以在节点的属性面板中设置这个明文密码。 bcrypt
节点将生成加密的散列密码值。 输入信息卡GPIO2的散列密码值输出结果卡输出。
[{"id":"7198d6c9.114e2c","type":"inject","z":"b6b16439.7c4ad8","name":"inject","repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","x":140,"y":120,"wires":[["8da607d9.142ba"]]},{"id":"f2af2e5f.188d08","type":"debug","z":"b6b16439.7c4ad8","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","x":520,"y":120,"wires":[]},{"id":"8da607d9.142ba","type":"bcrypt","z":"b6b16439.7c4ad8","name":"bcrypt","action":"hash","password":"password","x":310,"y":120,"wires":[["f2af2e5f.188d08","8a252d33.f31ec"]]},{"id":"8a252d33.f31ec","type":"function","z":"b6b16439.7c4ad8","name":"make message","func":"\nmsg.topic = \"password\" + \"-\" + \"hash\";\nmsg.payload = {hash : msg.payload};\nmsg.hash=msg.payload;\nreturn msg;","outputs":1,"noerr":0,"x":470,"y":180,"wires":[["19c427be.3a16a"]]},{"id":"19c427be.3a16a","type":"ui_gauge","z":"b6b16439.7c4ad8","name":"","group":"e7c26adc.ab0d6","order":0,"width":0,"height":0,"gtype":"gage","title":"Bcrypt Hash","label":"","format":"{{msg.hash}}","min":0,"max":"10","colors":["#00b500","#e6e600","#ca3838"],"seg1":"","seg2":"","x":630,"y":180,"wires":[]},{"id":"e7c26adc.ab0d6","type":"ui_group","name":"Default","tab":"49c17730.4fe73c","order":1,"disp":true,"width":"6","collapse":false},{"id":"49c17730.4fe73c","type":"ui_tab","z":"","name":"Home","icon":"dashboard","order":1}]
3.现在,我们需要将 Inject
节点和 bcrypt compare
节点连线。 Inject
节点生成要验证的接收到的密码明文字符串。 与此同时,bcrypt compare
节点与 bcrypt
节点彼此配合以验证刚刚生成并保存的加密密码和此时输入的原始密码是否相同。 它会输出一个值,表示两个密码是否匹配。只不过这里的密码明文不是设定,而是输入Raspberry的信息卡密码。
[{"id":"5243d106.bdcf74","type":"inject","z":"f4cd4e10.1a7cc","name":"inject","repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","x":150,"y":120,"wires":[["3298bcd7.875894"]]},{"id":"d9c817a8.eb7bf8","type":"debug","z":"f4cd4e10.1a7cc","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","targetType":"full","x":540,"y":120,"wires":[]},{"id":"3298bcd7.875894","type":"bcrypt","z":"f4cd4e10.1a7cc","name":"bcrypt","action":"hash","password":"password","x":300,"y":120,"wires":[["d9c817a8.eb7bf8","c1363b3f.9165e"]]},{"id":"c1363b3f.9165e","type":"function","z":"f4cd4e10.1a7cc","name":"make message","func":"msg.payload = \"password_to_check\";\nreturn msg;","outputs":1,"noerr":0,"x":470,"y":180,"wires":[["eb9d7c91.9206c"]]},{"id":"eb9d7c91.9206c","type":"bcrypt compare","z":"f4cd4e10.1a7cc","name":"compare","x":310,"y":180,"wires":[["d9c817a8.eb7bf8","816e679b.065ef"]]},{"id":"816e679b.065ef","type":"function","z":"f4cd4e10.1a7cc","name":"make message","func":"let hashedpassword = msg.payload.hash\nlet result = msg.payload.result\nlet toDisplay = '';\n\nif(result == true){\n toDisplay = 'The passwords match'\n}\nelse if(result == false){\n toDisplay = 'The passwords do not match'\n}\n\nmsg.payload = toDisplay\n\nreturn msg;","outputs":1,"noerr":0,"x":520,"y":240,"wires":[["d9c817a8.eb7bf8","9c9d8cb6.64c818"]]},{"id":"9c9d8cb6.64c818","type":"ui_text","z":"f4cd4e10.1a7cc","group":"8ecb5a78.831a98","order":0,"width":0,"height":0,"name":"","label":"Check Result","format":"{{msg.payload}}","layout":"row-center","x":660,"y":240,"wires":[]},{"id":"8ecb5a78.831a98","type":"ui_group","name":"Default","tab":"7a30e91d.0d0b98","order":1,"disp":true,"width":"6","collapse":false},{"id":"7a30e91d.0d0b98","type":"ui_tab","z":"","name":"Home","icon":"dashboard","order":1}]
结论
Node-red-contrib-bcrypt
是用于处理密码和加密数据的可靠 Node-RED 模块。本文提供了 Node-red-contrib-bcrypt
包的安装和使用教程,并提供了示例代码进行演示。要在你的 Node-RED 项目中使用它,请在 Node-RED 编辑器中添加 node-red-contrib-bcrypt
节点,然后连接到其他节点来实现密码的安全处理。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/65536