1.axios请求拦截器判断请求类型
当请求为get请求时拼接请求参数
src\utils\request.js
12345678910//初始化data,data为需要进行签名的字符串let data = config.urlif (config.method === 'get' && config.params) { data += '?' for (let key in config.params) { data += (key + "=" + config.params[key]+ "&") } //删除多余的& data = data.slice(0, -1);}
当请求为post时拼接请求参数
src\utils\request.js
12345if (config.method === 'post' && (typeof con ...
具体实现细节链接地址:
项目简介
密钥交换和用户认证
敏感数据加密传输
传输签名校验
数据库用户密码加密
配置文件加密
项目仓库链接地址
前端VUE
后端SpringBoot
项目演示链接地址
LOGIN-DEMO
默认用户名密码:admin,admin123
1.项目简介1.1.密钥交换和用户认证
前端请求后端获取SM2公钥
前端随机生成SM4密钥(key+iv)
用户认证(用户输入用户名和密码)
前端分别使用SM2公钥加密(用户密码、key、iv)
后端使用SM2私钥解密获得(用户密码、key、iv)
用户认证成功将key、iv存入loginUser然后存入redis
生成JWT,请勿将key、iv存入JWT (JWT只能保证数据完整性)
返回前端存入sessionStorage (完成用户认证和密钥交互)
使用sm4密钥加密业务数据进行传输
1.2.敏感数据加密传输
前端从sessionStorage中获取sm4密钥和iv
加密敏感数据发送至后端
后端使用从JWT中获取到redisKey获取该登陆会话的loginUser,并从loginUser中获取到 ...
1.实现PasswordEncoder接口
通过实现PasswordEncoder接口设置自定义的密码加密规则和匹配规则
实现三次带盐的SM3加密
实现逻辑为SM3(SALT+SM3(SALT+SM3(SALT+PASSWORD)))
com/gaomu/utils/crypto/SM3PasswordEncoder.java
123456789101112131415161718192021public class SM3PasswordEncoder implements PasswordEncoder {//密码加密规则 @Override public String encode(CharSequence rawPassword) { String pwdDigest = rawPassword.toString(); for (int i = 0; i < 3; i++){ pwdDigest = SM3Util.passwordDigest(pwdDigest); ...
1.前端获取SM2公钥
通过钩子函数当用户访问登陆页面时请求获取公钥,并存入sessionStorage
前端axios请求
src\views\Login.vue
123456789101112131415mounted() { this.axios.get('/getPublicKey').then((resp) =>{ let data = resp.data; if(data.code==200){ sessionStorage.setItem('publicKey', data.data.publicKey); } else{ this.$message({ message: "获取公钥失败", type:'error' }); } & ...
1.前端SM4加密
从sessionStorage中获取key和iv加密手机号
src\views\Home.vue
123456this.homeForm.phoneNumber = this.tempPhomeNumberSM4Data.key = sessionStorage.getItem("secretKey")SM4Data.iv = sessionStorage.getItem("iv")SM4Data.originalData = this.homeForm.phoneNumberencryptSM4(SM4Data)this.homeForm.phoneNumber = SM4Data.encryptedData
发送给密文到后端
src\views\Home.vue
1this.axios.get('/getApiTest', { params: this.homeForm })
2.后端读取SM4密钥
后端j接口处获取到加密后的请求数据
com/gaomu/co ...
1.导入jasypt坐标
添加jasypt依赖坐标
pom.xml
12345<dependency> <groupId>com.github.ulisesbocchio</groupId> <artifactId>jasypt-spring-boot-starter</artifactId> <version>3.0.4</version></dependency>
2.实现自定义配置文件加密算法
实现接口PBEStringEncryptor
com/gaomu/utils/crypto/SM4YmlEncryptor.java
1234567891011121314151617181920212223242526272829303132333435public class SM4YmlEncryptor implements PBEStringEncryptor { private String password; //密钥key不可硬编 ...
1.SM2
SM2是一种基于椭圆曲线密码算法,主要包括公钥加密和数字签名两部分。SM2的安全性基于椭圆曲线离散对数难题,对于给定的椭圆曲线,其离散对数问题的难度远超过同等长度的RSA。因此,SM2相比RSA,可以在提供相同安全级别的情况下,使用更短的密钥长度,从而节省存储和计算资源。
在SM2中,公钥和私钥的长度通常都是256位。具体来说:
私钥:私钥是一个256位的随机数,也就是32字节。这个随机数是在椭圆曲线的阶数范围内随机选择的。
公钥:公钥是由私钥生成的,它是椭圆曲线上的一个点,包括x和y两个坐标,每个坐标都是256位,也就是32字节。所以,公钥的总长度是512位,也就是64字节。
需要注意的是,虽然私钥只有256位,但由于椭圆曲线离散对数问题的复杂性,破解SM2的私钥需要的计算量与破解相同长度的RSA私钥所需的计算量相比,要大得多。因此,SM2可以提供相当高的安全性。
SM2为非对称加密算法(加解密密钥不一致),即公钥加密私钥解密,公钥可公开,私钥不可公开。SM2不仅可以用来加密数据,SM2还可以用来数字签名,使用私钥对数据进行签名,公钥验证签名。
SM2为 ...
1.UTF-8转换byte[]12345678910import java.nio.charset.StandardCharsets;// UTF-8 -》 二进制 String utf8str = "Hello, Admin!"byte[] Bytes = utf8str.getBytes(StandardCharsets.UTF_8);//byte[] bytes3 = utf8str.getBytes();System.out.println(Arrays.toString(bytes));// 二进制 -》 UTF-8String utf8str = new String(Bytes, StandardCharsets.UTF_8);System.out.println(utf8str);
前端部分
12let bufferKey = Buffer.from(key, "utf8")key = bufferKey.toString('utf8')
2.BASE64字符串转换byte[]1234567891 ...
1.配置IPV61.1.获取光猫超级管理员+宽带账号
方式一:在百度上搜索,根据自己的带宽运营商搜索默认用户名密码。
方式二:在百度上搜索破解密码的教程,但是随着时间的推移现在,现在新版光猫的系统安全性都在提升,我尝试很多办法都没有成功。
方式三:直接打电话问客户或者问你的装宽带的师傅,如果他问你用来干什么你一定要说专业一点,不要让他以为你是小白,不然他可能不会告诉你,因为如果你是小白什么不懂又乱配置,结果上不了网了又得麻烦他,他可能就不会帮你查。
1.2.配置光猫桥接,使用路由器拨号上网其实这有很多方案,只要是单播就行,只支持一个设备拨号上网,也就是说,
1.使用光猫中继(桥接),路由器拨号上网。(适合:降低光猫的负担,路由器性能可以,或者OPENWRT)
网络拓扑
2.使用光猫拨号(路由),路由器使用桥接,保证和光猫在同一个网络上。(适合:路由器性能差的)
我的是联通,我使用的是第一种方式
输入超管用户名密码进入光猫管理界面 ip地址通常为:192.168.1.1
我的光猫版本需要输入路径/cu.html才能选择超级管理员
跟我一样的配置即可,如果和我的 ...
linux操作
未读1.密钥连接使用启动新实例时创建好的密钥文件
1.
打开 SSH 客户端。
查找您的私有密钥文件。用于启动此实例的密钥为 1216pem.pem
如有需要,运行此命令,以确保您的密钥不公开可见。
chmod 400 xxxxx.pem
通过其 公有 DNS 连接到您的实例:
ec2-xx-xxx-244-xxx.ap-northeast-3.compute.amazonaws.com
$ ssh -i "1216pem.pem" [email protected]
2.修改密码并添加密码登陆权限2.1.修改ubuntu密码切换到root用户
sudo su -
修改密码
passwd ubuntu
输入两次密码即可
修改sshd配置文件
vim /etc/ssh/sshd_config
找到文件参数位置 将PasswordAuthentication参数改为yes即可,
添加使用密码访问权限:
添加后使用:wq保存
并且重启ssh服务sudo se ...