本文转载自:https://blog.csdn.net/qq_37023928/article/details/116777630
RSA
加密简介
RSA
加密是一种 非对称加密
。可以在不直接传递密钥的情况下,完成解密。这能够确保信息的安全性,避免了直接传递密钥所造成的被破解的风险。是由一对密钥来进行加解密的过程,分别称为公钥和私钥。两者之间有数学相关,该加密算法的原理就是对一极大整数做因数分解的困难性来保证安全性。通常个人保存私钥,公钥是公开的(可能同时多人持有)
RSA
加密、解密流程
通过 RSA
实现用户密码加密传输,核心思路
- 点击登录,先请求后端,生成一对公私钥,将公钥返回给前台
- 前台使用开源的
jsencrypt.js
对密码进行加密,加密后传输到后台 - 后台对加密的密码进行解密
示例
使用的是 sprngboot + thymeleaf
模板进行整合的
前端
获取开源的 js
文件:https://github.com/travist/jsencrypt/tree/master/bin,文件名称为:jsencrypt.js
获取到开源文件后,我们把它放在:static/js/
,创建页面 templates/login.html
文件
<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<script src="http://code.jquery.com/jquery-1.8.3.min.js"></script>
<script src="js/jsencrypt.js"></script>
<body>
<h1 th:text="${msg}">RSA测试</h1>
<form>
用户账号:
<input type="text" name="username" id="username">
<br>
用户密码:
<input type="text" name="password" id="password">
<br>
<input type="button" th:onclick="login()" th:value="提交">
</form>
</body>
<script>
function login() {
var username = $('#username').val();
var password