美文网首页
OpenSSL生成私钥和公钥和使用非对称加密颁发验证token

OpenSSL生成私钥和公钥和使用非对称加密颁发验证token

作者: 静昕妈妈芦培培 | 来源:发表于2021-03-17 13:09 被阅读0次

计算机网络上,OpenSSL是一个开放源代码软件包,应用程序可以使用这个包来进行安全通信,避免窃听,同时确认另一端连接者的身份。这个包广泛被应用在互联网的网页服务器上。

不同操作系统对openssl的支持

mac操作系统是自带openssl这个工具的
window操作系统中,
如果使用的是cmd,openssl工具是无法使用的的;解决办法:你可以在操作系统中单独安装openssl,然后配置环境变量
而git base here自带了openssl工具,可以在git base中使用openssl工具

使用openssl生成公钥私钥

image.png

结果:


image.png image.png

结果:


image.png

例:使用非对称加密颁发token和验证token

const fs = require('fs')
const path = require('path')
const Koa = require('koa')
const Router = require('koa-router')
const jwt = require('jsonwebtoken')


const app = new Koa()

const testRouter = new Router()

//获取私钥公钥
//fs.readFileSync没有指定字符编码,返回的为buffer对象
const PRIVATE_KEY = fs.readFileSync(path.resolve(__dirname,'./keys/private.key'))
const PUBILC_KEY = fs.readFileSync(path.resolve(__dirname,'./keys/public.key'))
// 登录接口
testRouter.post('/test', (ctx, next) => {
    //下面时获取到的用户信息
    const user = {id: 110, name: 'why'}

    //获取token
    const token = jwt.sign(user, PRIVATE_KEY, {
        expiresIn: 10, //token过期时间,单位为s
        algorithm: "RS256", //非对称加密颁发token时需要指定算法
    } )

    //响应数据
    ctx.body = token
})

//验证接口
testRouter.get('/demo', (ctx, next) => {
    //颁发token
    const authorization = ctx.headers.authorization
    const token = authorization.replace('Bearer ','')
    console.log(token)

    //验证token
    try{
        const result = jwt.verify(token, PUBILC_KEY, {
            algorithms: ["RS256"] //非对称加密验证token时需要指定通过哪种算法验证
        })
        ctx.body = result
    }catch(e) {
        ctx.boy = '无效的token'
    }
    
})

app.use(testRouter.routes())
app.use(testRouter.allowedMethods())

app.listen(8000, () => {
    console.log('服务器启动成功')
})

使用接口测试颁发token


image.png

使用接口测试验证token、


image.png

相关文章

  • php实现非对称加密

    使用非对称加密主要是借助openssl的公钥和私钥,用公钥加密私钥解密,或者私钥加密公钥解密。 1.安装opens...

  • OpenSSL生成私钥和公钥和使用非对称加密颁发验证token

    在计算机网络[https://baike.baidu.com/item/%E8%AE%A1%E7%AE%97%E6...

  • 非对称加密算法

    使用非对称加密加密算法生成一对公钥和私钥, 可以使用公钥加密明文然后私钥解密,也可以使用私钥加密然后公钥进行解密....

  • Java实现DH密钥交换算法

    前言 非对称加密算法 加密密钥分为公钥和私钥。可以使用公钥加密私钥解密,也可以使用私钥加密公钥解密。非对称加密算法...

  • python的加密方式: rsa加密和解密

    RSA加密是一种非对称加密,通常使用公钥加密,私钥解密。 公钥、私钥的生成 生成文件如下图: 可以将生成的公钥、私...

  • HTTPS及非对称加密

    非对称加密:公钥加密,只有私钥能解密。私钥加密,只有公钥能解密。A首先生成一对公钥和私钥,然后将公钥公开给别人加密...

  • RSA非对称加密算法

    RSA算法,经典非对称加密算法,通过生成公钥 私钥 进行加密解密 公钥加密 私钥解密 反之 私钥加密 公钥...

  • python实现rsa加密解密

    生成rsa加密解密所使用的公钥私钥 生成私钥:openssl genrsa -out rsaprivatekey....

  • 地址

    非对称加密:公钥与私钥,比特币使用了ecdsa算法用来生成公钥和私钥 生成过程: 1,产生一个256byte的随机...

  • openssl终端命令RSA和DES加解密

    RSA 1、生成公钥和私钥 2、加密解密文件 公钥加密私钥解密 私钥加密公钥解密 3、在程序中使用依次生成 csr...

网友评论

      本文标题:OpenSSL生成私钥和公钥和使用非对称加密颁发验证token

      本文链接:https://www.haomeiwen.com/subject/slpscltx.html