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=-,但是一般取正整数,然后d加减φ(n)的n倍都是e的模反元素 所以取d=d+kφ(n)=-+1x3120=
6.将n和e封装成公钥,n和d封装成私钥
公钥:(n,e)
私钥:(n,d)
利用JSEncrypt实现的整个加密过程,具体实现可以看看
https://github.com/travist/jsencrypt
我司现在后端用java实现的解密过程,我现在在前端实现加密过程,列举部分代码

rsa加密算法及js的JSEncrypt实现前端加密的更多相关文章
- jsencrypt参数前端加密c#解密
写程序时一般是通过form表单或者ajax方式将参数提交到服务器进行验证,如何防止提交的请求不被抓包后串改,虽然无法说绝对安全却给非法提交提高了难度,本篇采用jsencypt在前端进行加密的并且用C# ...
- RSA 加密算法 Java 公钥加密私钥解密 和 私钥加密公钥解密 的特点
package com.smt.cipher.unsymmetry; import org.apache.commons.codec.binary.Base64; import org.apache. ...
- 转发:RSA实现JS前端加密,PHP后端解密
web前端,用户注册与登录,不能直接以明文形式提交用户密码,容易被截获,这时就引入RSA. 前端加密 需引入4个JS扩展文件,jsbn.js.prng4.js.rng.js和rsa.js. <h ...
- RSA实现JS前端加密,PHP后端解密
web前端,用户注册与登录,不能直接以明文形式提交用户密码,容易被截获,这时就引入RSA. 前端加密 需引入4个JS扩展文件,jsbn.js.prng4.js.rng.js和rsa.js. <h ...
- Java前端Rsa公钥加密,后端Rsa私钥解密(目前还不支持中文加密解密,其他都行)
Base64工具类,可以让rsa编码的乱码变成一串字符序列 package com.utils; import java.io.ByteArrayInputStream; import java.io ...
- RSA加密算法在WEB中的应用
加密算法有很多,如不可逆的摘要算法MD5.SHA(安全哈希算法),可逆的Base64编码,对称加密算法DES.AES,还有非对称加密算法DH.RSA等.那是不是说明我们可以使用任何一种加密算法就能保证 ...
- 常见加密算法的 JS 实现
前言 为破解前端加密做准备,先了解一些常见的加密算法 分类 对称加密 采用单钥密码系统的加密方法,同一个密钥可以同时用作信息的加密和解密,这种加密方法称为对称加密,也称为单密钥加密. DES DES ...
- RSA非对称性前端加密后端解密
前端加密代码 <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> ...
- RSA加密算法的简单案例
RSA加密算法是目前最有影响力的公钥加密算法,它能够抵抗到目前为止已知的绝大多数密码攻击. 那关于RSA加密算法有哪些应用呢?以下举一个数据库身份验证的案例. 在使用数据集进行身份认证时,密码存在数据 ...
随机推荐
- ie浏览器许多图片放在一起会有间隙
解决方法一(推荐):设置图片父元素font-size:0. 解决方法二:设置图片为float:并且图片设为块级元素.
- springboot项目简单启动脚本
#!/bin/bash function log_info () { DATE=`date "+%Y-%m-%d %H:%M:%S"` USER=$(whoami) echo &q ...
- php curl使用 常用操作
1. http Get 简单的只需要 这四行 就 $ch = curl_init (); curl_setopt ( $ch, CURLOPT_URL, "http://site" ...
- jQuery人民币转大写,C#人命币转大写
jQuery人民币转大写 function convertCurrency(money) { //汉字的数字 var cnNums = new Array('零', '壹', '贰', '叁', '肆 ...
- es6的理解
目录:let——和var的区别const 特性:暂时性死区解构赋值 [] {}属性简洁函数简洁 属性表达式可以作为对象的属性名字符串扩展数组扩展对象扩展 Object.getPrototypeOf(实 ...
- mysql 表
关系 create table scores( id int primary key auto_increment, stuid int, subid int, score decimal(5,2) ...
- vue 单独页面body css 样式设置
给某个page下template中的第一个div设置如下样式: .body-bg { position: absolute; width: 100%; height: 100%; top:; left ...
- UGUI 5.0 一些笔记
1.加载资源路径 在Assets路径里创建Resources文件夹 a.加载配置好的界面 GameObject obj = (GameObject)Resources.Load ("conf ...
- MySql CURD操作(数据的增删改查)
1.增 格式 insert into 表名字 (列名) values(...); 两种方式 1.直接insert into 表名字 values(...); 全部插入 2.insert into ...
- python 之修饰器
from functools import update_wrapper def debug(func): def wrapper(): print "[DEBUG]: enter {}() ...