• rsa加密算法及js的JSEncrypt实现前端加密


    最近的项目中用到了rsa加密算法,在实现了相关功能之后,我去了解了一下rsa相关原理,于是就写了这篇博客啦。

    首先介绍一下什么是rsa加密算法

    作为非对称加密算法的老大,rsa号称是地球上最安全的加密算法。

     首先了解一些数学背景(我发现我真的好喜欢看数学概念0.0),这里就不再赘诉相关数学背景了,但是请务必要理解这些概念,贴一个我觉着讲得特别清晰的概念,便于理解:

    https://blog.csdn.net/u014044812/article/details/80782448

    然后介绍一下rsa密钥生成过程:

    1.随机选两个不等的质数p和q:

    实际应用中如果这两个质数越大就越难破解
    

     2.计算p和q的乘积n

    n=p*q
    n的长度就是密钥长度,然后把n写成二进制,共有多少位,这个密钥就有多少位,
    在一般场景中rsa密钥一般是1024位,重要场合位2048位
    

     3.计算n的欧拉函数φ(n)

    4.随机选择一个整数e,条件是1<e<φ(n),且e与φ(n)互质

    5.计算e对于φ(n)的模反元素d

    ed-kφ(n)=1
    

    (可以利用辗转相除法求的d元素,)

    按照公式,d=x=-367,但是一般取正整数,然后d加减φ(n)的n倍都是e的模反元素
    
    所以取d=d+kφ(n)=-367+1x3120=2753

    6.将n和e封装成公钥,n和d封装成私钥

    公钥:(n,e) 

    私钥:(n,d)

    利用JSEncrypt实现的整个加密过程,具体实现可以看看

    https://github.com/travist/jsencrypt

    我司现在后端用java实现的解密过程,我现在在前端实现加密过程,列举部分代码

  • 相关阅读:
    vue之前端鉴权
    vue jsx与render的区别及基本使用
    vue-svgicon基本使用
    vue-cli 3.0按需引入element-ui
    手动实现Promise
    checkbox、radio设置自定义样式
    AngularJS之拖拽排序(ngDraggable.js)
    webpack 4.x之搭建前端开发环境
    VUE,基于vue-cli搭建创建vue项目
    ES6面向对象 动态添加标签页
  • 原文地址:https://www.cnblogs.com/yuan233/p/10787469.html
Copyright © 2020-2023  润新知