openssl生成公钥私钥后进行非对称加密报错:secretOrPrivateKey has a minimum key size of 2048 bits for RS256

1.使用openssl协议生成公钥和私钥

//在当前目录下生成一个长度为1024的private.key私钥文件
genrsa -out private.key 1024
//根据私钥生成一个对应的public.key公钥文件
rsa -in private.key -pubout -out public.key

2.使用生成的公钥私钥和RS256非对称算法进行token加密和验证

2.1使用私钥加密颁发token

const privateKey = fs.readFileSync('./keys/private.key')
const publicKey = fs.readFileSync('./keys/public.key')

useRouter.get('/login', (ctx, next) => {
  // 1.颁发token
  const payload = {id: 001, name: 'kobe'}
  const token = jwt.sign(payload, privateKey, {
    expiresIn: 60 * 5 , //设置过期时间,
    algorithm: 'RS256'
  })
 ctx.body = {
    code: 0,
    token,
    message: '登录成功,可以进行其他操作~'
  }
})

2.2 使用公钥解密验证token

useRouter.get('/list', (ctx, next) => {
  // 验证用户的登录凭证 验证token
  const authorization = ctx.headers.authorization
  const token = authorization.replace('Bearer ', '')
  try {
    const res = jwt.verify(token, publicKey, {
      algorithms: ['RS256']
    })
    console.log(res)
    ctx.body = {
      code: 0,
      data: [
        {id: 01, name: 'rose'},//验证成功后返回给客户端的数据
      ]
    }
  } catch (error) {
    ctx.body = {
      code: -1010,
      message: '无效token~'
    }
  }
})

3.允许后颁发token时报错:secretOrPrivateKey has a minimum key size of 2048 bits for RS256

在这里插入图片描述

3.1 解决方法: 生成私钥时把1024改成2048,然后重新颁发就ok了

genrsa -out private.key 2048

3.2 然后就能正常运行并颁发token了,如下图所示:颁发token成功

在这里插入图片描述

3.3 验证token成功

在这里插入图片描述

  • 4
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值