use*_*076 2 encryption node.js jwt cryptojs
我看到了如何使用 Crypto 和 jsonwebtoken 库在 NodeJS 中创建 HMAC 256 加密 JWT。这很容易
//encrypt & sign with HS256
const jwt = require('jsonwebtoken');
const pass = crypto.randomBytes(256).toString('hex');
const A = {algorithm:'HS256'};
const token = jwt.sign({ foo: 'bar' }, pass, A);
//decrypt & verify
jwt.verify(token, pass, A, function(err, decoded)
{
console.log('decode ',decoded);
console.log('err ',err);
res.send({error:err, text:decoded});
});
Run Code Online (Sandbox Code Playgroud)
我想用'RSA 256 SHA'替换'pass',用{algorithm:'RS256'}替换A
在 node crypto JS 的文档中,我看到了命令
const sign = crypto.createSign('RSA-SHA256');
Run Code Online (Sandbox Code Playgroud)
但是,文档具有以下功能
getPrivateKeySomehow()
Run Code Online (Sandbox Code Playgroud)
未定义或未定义为 crypto.getPrivateKeySomehow() 的一部分
所以我想我只需要帮助获取从加密返回的 RSA-SHA-256 字符串,这样我就可以将它传递给 jsonwebtoken 来签署我的 JWT。
注意:我不想从服务器上的静态文件中读取 private.key,因为我认为所有用户都拥有一个私钥会带来太大的安全风险,因此为什么我要生成自己的 256 字节密码并存储他们在场外(不包括在这篇文章中)
另外,我不确定我是否应该做这样的事情(不使用命令行中的 openssl 之类的东西?)
const begin = '-----BEGIN RSA PRIVATE KEY-----\n';
const enc = crypto.randomBytes(256).toString('base64') + '\n';
const end = '-----END RSA PRIVATE KEY-----'
const pass = sign.sign(begin + enc + end);
const A = {algorithm:'RS256'};
const token = jwt.sign({ foo: 'bar' }, pass, A);
Run Code Online (Sandbox Code Playgroud)
小智 5
看看下面这个例子:
signExample = (str) => {
crypto.generateKeyPair('rsa', {
modulusLength: 1024,
publicKeyEncoding: {
type: 'spki',
format: 'pem'
},
privateKeyEncoding: {
type: 'pkcs8',
format: 'pem'
}
}, (err, publicKey, privateKey) => {
// sign String
var signerObject = crypto.createSign("RSA-SHA256");
signerObject.update(str);
var signature = signerObject.sign({key:privateKey,padding:crypto.constants.RSA_PKCS1_PSS_PADDING}, "base64");
console.info("signature: %s", signature);
//verify String
var verifierObject = crypto.createVerify("RSA-SHA256");
verifierObject.update(str);
var verified = verifierObject.verify({key:publicKey, padding:crypto.constants.RSA_PKCS1_PSS_PADDING}, signature, "base64");
console.info("is signature ok?: %s", verified);
});
}
Run Code Online (Sandbox Code Playgroud)
脚步:
| 归档时间: |
|
| 查看次数: |
6313 次 |
| 最近记录: |