知识点


hash碰撞:
就是两个对象的key的hashcode是一样的,这个时候怎么get他的value呢?
答案是通过equals遍历table那个位置上面的Entry链表或者红黑树。


链表到红黑树的临界点:
static final int TREEIFY_THRESHOLD = 8;

红黑树转链表的临界点
static final int UNTREEIFY_THRESHOLD = 6;


为什么容量一定要是2^n 呢?例如HashMap的容量是16?

1、’return (key == null) ? 0 : (h = key.hashCode()) ^ (h >>> 16);
hash值的计算
2、n = (tab = resize()).length;
n标示HashMap的容量,
3、i = (n - 1) & hash 
		n-1 :01111 和hash值取&,能让节点的位置更分散。

shiro 拦截器优先于intercept拦截器

hash(input) 单向的,只能加密无法解密


md5  不可逆
sha-1  不可逆 

md5和sha-1 的破解方式:彩虹表查找

base64  可逆

对称加密:DES算法和AES算法
可以穷举暴力解密

非对称加密:

jwt

eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJmcm9tX3VzZXIiOiJCIiwidGFyZ2V0X3VzZXIiOiJBIn0.rSWamyAYwuHCo7IFAgd1oRpSP7nzL7BF5t7ItqpKViM

jwt头           有效荷载               签名

jwt头:alg签名算法,typ令牌类型

有效荷载:iss发行人,exp有效时间,sub主题,aud用户,nbf在次之前不可用,iat发布时间,jti:jwt Id用于标示jwt

签名:hash部分是对上面2部分数据签名,通过指定的算法生成hash,确保数据不被篡改。

	需要指定一个secret,保存在server端,不向用户公开,使用alg的算法根据公式生成签名
	HMACSHA256(base64UrlEncode(header) + "." + base64UrlEncode(payload),secret)
	
	
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值