gpt4 book ai didi

node.js - NodeJS、RSA,这安全吗?

转载 作者:太空宇宙 更新时间:2023-11-03 22:17:30 24 4
gpt4 key购买 nike

这是一种使用公钥加密并使用私钥解密的安全方法吗?

如果没有,我需要添加什么? AES 或类似的通行证?

var ursa = require('ursa');
var fs = require('fs');

// create a pair of keys (a private key contains both keys...)
var keys = ursa.generatePrivateKey();
console.log('keys:', keys);

// reconstitute the private key from a base64 encoding
var privPem = keys.toPrivatePem('base64');
console.log('privPem:', privPem);

var priv = ursa.createPrivateKey(privPem, '', 'base64');

// make a public key, to be used for encryption
var pubPem = keys.toPublicPem('base64');
console.log('pubPem:', pubPem);

var pub = ursa.createPublicKey(pubPem, 'base64');

// encrypt, with the public key, then decrypt with the private
var data = new Buffer('hello world');
console.log('data:', data);

var enc = pub.encrypt(data);
console.log('enc:', enc);

var unenc = priv.decrypt(enc);
console.log('unenc:', unenc);

最佳答案

它看起来很安全,但如果您想加密字符串,通常应该使用混合加密。在这种情况下,您确实应该使用 AES。如果您使用 AES,强烈建议您也使用某种消息身份验证,尤其是在可以应用填充预言的情况下。

您的代码中完全缺少的当然是信任公钥的方法。您可以在代码中生成 key 对,但这不应该经常执行。 key 管理是密码学最重要的部分之一。

此外,这个图书馆看起来就像一场独角戏。即使 SLAks 做出了贡献,您也应该对此类项目保持高度警惕。例如,SJCL 库存在一些巨大漏洞,RNCrypt 中也发现了一些严重问题。此外,此类项目很容易在没有维护人员的情况下结束。

该库的文档也相当稀疏。例如。我认为 generatePrivateKey() 默认情况下会创建一个大小为 2048 的 key ,但除了代码审查或(确实)之外,没有其他方法可以检查这一点测试输出。我不认为它默认为 512 位,但仅凭 API 文档,我无法确定。

关于node.js - NodeJS、RSA,这安全吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21262357/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com