简介
@mongox/mxjs-keyutils 是一个基于 Node.js 平台的 npm 包,用于生成、解析和验证各种类型的密钥和签名,是构建安全性较高应用时的重要工具。
安装
使用 npm 包管理器安装:
npm install --save @mongox/mxjs-keyutils
使用
导入模块:
const keyutils = require("@mongox/mxjs-keyutils");
生成密钥对
- ECC 密钥对生成
const ecc_key = keyutils.generate_pair("ECDSA"); console.log(ecc_key); // { private: '-----BEGIN PRIVATE KEY-----\nMIIBVQIBADANBgkqhkiG9w0BAQEFAASCAT8wggE7AgEAAkEA0/EsWrY6nmgagldU\n....', public: '-----BEGIN PUBLIC KEY-----\nMFYwEAYHKoZIzj0CAQYFK4EEAAoDQgAEs8QtMSeRmunYuZ+bXcFsjtCTfo1tTgTJ\n....\n-----END PUBLIC KEY-----\n' }
- RSA 密钥对生成
const rsa_key = keyutils.generate_pair("RSA", {bitlength: 1024}); console.log(rsa_key); // { private: '-----BEGIN PRIVATE KEY-----\nMIICdwIBADANBgkqhkiG9w0BAQEFAASCAmEw....', public: '-----BEGIN PUBLIC KEY-----\nMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCUV7ydOStpBGePUid5zqmtdkuW\n....\n-----END PUBLIC KEY-----\n' }
解析密钥
const ecc_key = keyutils.parse_private_key(ecc_key.private); console.log(ecc_key); // { type: 'EC', curveName: 'secp256r1', d: <Buffer 7b 19 35 6d 41 00 fc .....>, x: <Buffer 2b f2 fb ce 40 ef 86 ...>, y: <Buffer 62 58 bf c8 00 0c 98 54 ...> }
签名
- 使用私钥签名数据(ECDSA、RSA、Ed25519都可)
const signature = keyutils.sign_ecdsa("message", ecc_key); console.log(signature.toString('hex')); // 3045022100e06f520eeeaa40f44e49664d86d9a9aa517e84e204a8b18fa68d62116f4305a0220fd9885df5f80d9aef2b7fc478b0fd0d7b571ee34ef0fd073330a529c8a4 const signature_rsa256 = keyutils.sign_rsa("message", rsa_key, "sha256"); console.log(signature_rsa256.toString('hex')); // 6b63735bc93a7c6225de386dimfa58a172e93d9fun593cdd354e65b4737d93b90ef07f3e3b4cf4e7eeae022d98b9e3f81aa2bfc28a7351e0f453c96445b98902
验证签名
const res = keyutils.verify_ecdsa("message", signature, ecc_key.public); console.log(res); // true const res2 = keyutils.verify_rsa("message", signature_rsa256, rsa_key.public, "sha256"); console.log(res2); // true
示例
一个使用了 @mongox/mxjs-keyutils 的示例代码如下:
-- -------------------- ---- ------- ----- -------- - --------------------------------- -- -------- --- ---- ----- ------- - -------------------------------- --------------------- -- ---- ------- ----- --------- - --------------------------- -------- --------- --------------------------------------- -- ------ --------- ----- --- - ----------------------------- -------- ---------- ---------------- -----------------展开代码
总结
通过学习这个示例和 @mongox/mxjs-keyutils
的使用教程,我们可以知道如何在前端应用中生成、解析和验证各种类型的密钥和签名。这些技术在构建安全性较高应用上非常有用。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/600671d730d0927023822dbe