自定义注解实现解密+单个属性解密
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了自定义注解实现解密+单个属性解密相关的知识,希望对你有一定的参考价值。
参考技术A 1、首先定义自定义注解类2、定义RequestBodyAdvice实现请求前的解密操作
加在字段上的注解
拦截方法
展示其中一个解密方式
使用演示
实体类 只需要对手机号和身份证加密,名称不加密
JavaScript自定义实现字符串加密和解密
加密算法:
/**
* 字符串自定义加密规则
*/
export function toCode(str) { //加密字符串
//定义密钥,36个字母和数字
var key = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
var l = key.length; //获取密钥的长度
var a = key.split(""); //把密钥字符串转换为字符数组
var s = "", b, b1, b2, b3; //定义临时变量
for (var i = 0; i < str.length; i++) { //遍历字符串
b = str.charCodeAt(i); //逐个提取每个字符,并获取Unicode编码值
b1 = b % l; //求Unicode编码值得余数
b = (b - b1) / l; //求最大倍数
b2 = b % l; //求最大倍数的于是
b = (b - b2) / l; //求最大倍数
b3 = b % l; //求最大倍数的余数
s += a[b3] + a[b2] + a[b1]; //根据余数值映射到密钥中对应下标位置的字符
}
return s; //返回这些映射的字符
}
解密算法:
/**
* 字符串自定义解密规则
*/
export function fromCode(str) {
//定义密钥,36个字母和数字
var key = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
var l = key.length; //获取密钥的长度
var b, b1, b2, b3, d = 0, s; //定义临时变量
s = new Array(Math.floor(str.length / 3)); //计算加密字符串包含的字符数,并定义数组
b = s.length; //获取数组的长度
for (var i = 0; i < b; i++) { //以数组的长度循环次数,遍历加密字符串
b1 = key.indexOf(str.charAt(d)); //截取周期内第一个字符串,计算在密钥中的下标值
d++;
b2 = key.indexOf(str.charAt(d)); //截取周期内第二个字符串,计算在密钥中的下标值
d++;
b3 = key.indexOf(str.charAt(d)); //截取周期内第三个字符串,计算在密钥中的下标值
d++;
s[i] = b1 * l * l + b2 * l + b3 //利用下标值,反推被加密字符的Unicode编码值
}
b = eval("String.fromCharCode(" + s.join(',') + ")");
return b; //返回被解密的字符串
}
应用实例:
(1)加密字符串
var str = "xuyoubo";
var str1 = toCode(str);
console.log(str1);
(2)解密字符串
var ver = "03C03903D03303902Q033";
var str2 = fromCode(ver);
console.log(str2);
以上是关于自定义注解实现解密+单个属性解密的主要内容,如果未能解决你的问题,请参考以下文章