1、在指定的文件夹中,使用 git bash
2、在 git bash 窗口中输入对应命令
openssl // 开启命令
genrsa -out 【私钥文件名称】【私钥长度】 // gensra -out private.key 1024 // 生成并输出私钥
rsa -in 【私钥文件名称】 -pubout -out 【公钥文件名称】// rsa -in private.key -pubout -out public.key // 生成并输出公钥
console.log('start')
const fs = require('fs')
const express = require('express')
const jwt = require('jsonwebtoken')
const app = express()
const jwt_key ="htt";
const private_key = fs.readFileSync('../keys/private.key');
const public_key = fs.readFileSync('../keys/public.key');
// 对称加密
app.post('/login',(req,res) =>{
var token = jwt.sign({foo:'bar',},jwt_key,{
expiresIn: 30 //默认为秒,官方文档解释为 ms 毫秒 有问题
});
res.send(token)
})
app.get('/demo',function(req,res) {
console.log();
let authorization = req.get('authorization') || "";
authorization = authorization.replace("Bearer ",'')
console.log(authorization)
jwt.verify(authorization,jwt_key,function(err,decode) {
if(err) {
console.log(err)
res.send('token 验证失败')
}else {
res.send(JSON.stringify(decode))
}
})
});
// 非对称: 公钥 私钥 加密
app.post('/login',(req,res) =>{
let token = jwt.sign({ foo: 'bar'},private_key,{ algorithm: 'RS256', expiresIn: 30});
res.send(token)
})
app.get('/demo',(req,res) =>{
let authorization = req.get('authorization') || '';
authorization = authorization.replace('Bearer ','');
jwt.verify(authorization,public_key,{algorithms:['RS256']},function(err,decode) {
if(err) {
console.log('token 验证失败')
}else {
res.send(JSON.stringify(decode))
}
})
})
app.listen(9001,function() {
console.log('9001,服务开启')
})