简介
node-red-contrib-opengpg 是一个基于 OpenPGP 协议的 Node-RED 插件,提供了使用 OpenPGP 加密和解密流数据的功能。当前,使用数字签名或加密算法进行数据保护变得越来越重要,而 OpenPGP 是一个免费的、开放的标准,常用于数据加密、数字签名以及密钥管理等领域中。
安装
在 Node-RED 安装目录的终端(如下图)中运行以下命令进行安装:
cd ~/.node-red npm install node-red-contrib-opengpg
使用
安装完成后,我们可以在“加密与解密”类的节点类别中看到 node-red-contrib-opengpg
的节点:
加密
拉出加密节点到工作空间中,并配置好所需参数。加密节点的参数主要包括:
Passphrase
:此参数指定用于解密此数据的口令(不存储在保存密钥时)。Algorithm
:此参数指定用于生成密钥的算法(例如:RSA,DSA 等,默认为 RSA)。Key Size
:此参数指定生成密钥的大小(例如:2048,4096 等)。Encrypt To
:加密的目标对象,可以指定每个对象所需的钥匙编号。
例如,我们将加密 msg.payload
的数据并指定目标数据的接收者为 0800axxxx
,并使用默认的 RSA 算法与密钥大小 2048:
在该节点的输出上,加密后的消息会写入到输出 msg.payload
变量中。
解密
拉出解密节点到工作空间中,并配置好所需参数。解密节点的参数主要包括:
Passphrase
:此参数指定用于解密此数据的口令(不存储在保存密钥时)。
例如,我们将解密 msg.payload
并在解密后使用 Node-RED
节点输出:
在该节点的输出上,解密后的消息会写入到输出 msg.payload
变量中。
key management
生成新密钥
在工具栏中或在节点编辑器中直接使用以下命令一次生成一个新的密钥对:
每个生成的新密钥对包括:
- 公钥 ID、
- 公钥指纹(用于识别此密钥的固定字符串),
- 公钥和私钥键值。
此时会弹出一个窗口,我们可以在窗口中填写密钥的名称,以及是否需要保护此密钥的密码:
在窗口中,我们可以通过单击 Advanced
按钮来获得更多选项,例如:使用 DSA 或 ECC(elliptic curve cryptography)算法加密等。
导入已有密钥
如果我们已经拥有密钥并想要将其添加到 node-red-contrib-opengpg
中,我们可以单击编辑器中的“密钥环管理”按钮,并在新打开的对话框中单击“导入”按钮:
然后导入并选择要关联的私钥文件(从其他系统或应用程序中导出)。
导出密钥
如果我们想将密钥从 node-red-contrib-opengpg
中导出并存储到其他地方(例如:USB 密钥、密钥服务器或某个文件夹),我们可以单击“密钥环管理”按钮并在新打开的对话框中单击“导出”按钮:
系统会要求我们提供要导出的密钥文件的名称及密码等信息,并且导出的文件是加密的。
实例
以下是一个使用内置的 keypairs 加密和解密消息的示例:
[{"id":"ed49cba4.4a4b8","type":"change","z":"ef9bd19f.e6de8","name":"","rules":[{"t":"set","p":"payload","pt":"msg","to":"A message to encrypt","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":317,"y":137,"wires":[["33d734be.07013"]]},{"id":"33d734be.07013","type":"opengpg-encrypt","z":"ef9bd19f.e6de8","passphrase":"","algorithm":"","keysize":"","name":"","x":509,"y":139,"wires":[["4e9fd83.12911d"]]},{"id":"c4646e8f.3b14d8","type":"inject","z":"ef9bd19f.e6de8","name":"","topic":"","payload":"","payloadType":"date","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":132,"y":137,"wires":[["ed49cba4.4a4b8"]]},{"id":"4e9fd83.12911d","type":"debug","z":"ef9bd19f.e6de8","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","targetType":"full","x":702,"y":142,"wires":[]},{"id":"1d36cf96.0e78a8","type":"opengpg-decrypt","z":"ef9bd19f.e6de8","passphrase":"","name":"","x":538,"y":207,"wires":[["bf39f4ba.b4b0f"]]},{"id":"bf39f4ba.b4b0f","type":"debug","z":"ef9bd19f.e6de8","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","targetType":"full","x":702,"y":207,"wires":[]},{"id":"378f351.3bb1d98","type":"comment","z":"ef9bd19f.e6de8","name":"Encrypt and Decrypt example","info":"","x":166,"y":78,"wires":[]}]
结论
通过使用 node-red-contrib-opengpg
这个插件,我们可以很容易地在 Node-RED
上开发出加密与解密流数据的处理模块,可以极大的提高数据安全性,具有很好的应用前景。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6005672181e8991b448e3919