做网站用那一种语言最好,域名价格一览表,这几年做那些网站致富,电子商务网站建设调查报告文章目录 前言一、安装依赖二、使用1、默认同步签名#xff08;HMAC SHA256**HS256#xff09;对称秘钥2、同步签名#xff08;RSA SHA256**RS256#xff09;非对称秘钥#xff08;推荐#xff09;3、其他 三、设置时间回溯时间过期时间如有启发#xf… 文章目录 前言一、安装依赖二、使用1、默认同步签名HMAC SHA256**HS256对称秘钥2、同步签名RSA SHA256**RS256非对称秘钥推荐3、其他 三、设置时间回溯时间过期时间如有启发可点赞收藏哟~ 前言
JSON Web Token (JWT)是一个开放标准(RFC 7519)它定义了一种紧凑的、自包含的方式用于作为JSON对象在各方之间安全地传输信息。该信息可以被验证和信任因为它是数字签名的。
JWT是由header头部payload数据signature签名三部分组成中间用点分隔开并且都会使用 Base64 编码。
本文使用了密钥文件可先生成相关秘钥数据参考node加密集合前端加密、后台解密 一、安装依赖
npm install jsonwebtoken -S
and if use TS
npm install types/jsonwebtoken -D二、使用
1、默认同步签名HMAC SHA256**HS256对称秘钥
生成对称私钥
import { generateKeyPairSync } from cryptoconst { privateKey } generateKeyPairSync(rsa, {modulusLength: 1024, // publicKeyEncoding: {type: spki,format: pem},privateKeyEncoding: {type: pkcs8,format: pem,cipher: aes-256-cbc,passphrase: top secret,}
});token加解密
const privateKey admin-node-ts // 自定义密码或者使用上述生成的对称私钥// 加密
import jwt from jsonwebtoken;
var token jwt.sign({ foo: bar }, privateKey);
console.log(encoded, token)// 解密
var decoded jwt.verify(token, privateKey);
console.log(decoded, decoded)2、同步签名RSA SHA256**RS256非对称秘钥推荐 secretOrPrivateKey has a minimum key size of 2048 bits for RS256 import { generateKeyPairSync } from cryptoconst { privateKey } generateKeyPairSync(rsa, {modulusLength: 2048,publicKeyEncoding: {type: spki,format: pem},privateKeyEncoding: {type: pkcs8,format: pem,}
});// 加密
import jwt from jsonwebtoken;
var token jwt.sign({ foo: bar }, privateKey, { algorithm: RS256 });
console.log(encoded, token)// 解密
var decoded jwt.verify(token, privateKey, { algorithms: [RS256] });
console.log(decoded, decoded)3、其他
时间有限~
算法类型HS256HS256使用SHA-256的HMAC是一种对称密钥的散列算法HS384-HS512-RS256RS256算法是一种非对称算法使用私钥来签署JWT使用公钥来验证该签名。 在签署你的JWT时RS256是推荐的算法。 它更安全而且如果钥匙被破坏你可以快速地旋转钥匙。 (Auth0默认使用RS256来签署JWTRS384-RS512-ES256-ES384-ES512-PS256-PS384-PS512-none-
三、设置时间
回溯时间
设置数据中添加iat字段用于设置回溯时间
import jwt from jsonwebtoken;
import { PRIVATE_KEY } from ./const/secret-key;
const iat Math.floor(Date.now() / 1000) - 60; // 回溯前60s
var token jwt.sign({ foo: bar, iat }, PRIVATE_KEY.toString(), { algorithm: RS256 });过期时间
设置数据中添加exp字段用于设置失效时间
import jwt from jsonwebtoken;
import { PRIVATE_KEY } from ./const/secret-key;
const exp Math.floor(Date.now() / 1000) 60; // 60s 失效
var token jwt.sign({ foo: bar, exp }, PRIVATE_KEY.toString(), { algorithm: RS256 });expiresIn
import jwt from jsonwebtoken;
import { PRIVATE_KEY } from ./const/secret-key;
var token jwt.sign({ foo: bar }, PRIVATE_KEY.toString(), { algorithm: RS256, expiresIn: 60 * 60 }); // 推荐
or
var token jwt.sign({ foo: bar }, PRIVATE_KEY.toString(), { algorithm: RS256, expiresIn: 1h }); // 优先推荐一般有以下单位 s秒 m分 h时 d天 其他可使用ms进行转换使用 如有启发可点赞收藏哟~