JWT令牌,常见加密算法,Base64笔记

编程入门 行业动态 更新时间:2024-10-17 18:24:09

JWT令牌:

是客户端和服务器进行数据安全传输的一种标准:

组成:

头 (指定签名的加密算法方式),
负载(主要子自定义信息内容),
签名(头部Base64+负载Base64通过加密算法和密钥生成的) 作用:防止令牌信息被篡改;

JWT令牌优点:
1.jwt基于json,非常方便解析
2.可以在令牌中自定义丰富的内容,易扩展;
3、通过非对称加密算法及数字签名技术,JWT防止篡改,安全性高。
4、资源服务使用JWT可不依赖认证服务即可完成授权。
缺点:
1、JWT令牌较长,占存储空间比较大。

常见处理方式jti为键,jwt令牌为值存入redis中,jti携带在cookie中;

常见加密算法:

加密算法种类有:

可逆加密算法

解释: 加密后, 密文可以反向解密得到密码原文.

对称加密

【文件加密和解密使用相同的密钥,即加密密钥也可以用作解密密钥,可自定义】
解释: 在对称加密算法中,数据发信方将明文和加密密钥一起经过特殊的加密算法处理 后,使其变成复杂的加密密文发送出去,收信方收到密文后,若想解读出原文,则需要 使用加密时用的密钥以及相同加密算法的逆算法对密文进行解密,才能使其回复成可读 明文。
在对称加密算法中,使用的密钥只有一个,收发双方都使用这个密钥,这就需要 解密方事先知道加密密钥。
优点:
对称加密算法的优点是算法公开、计算量小、加密速度快、加密效率高。 缺点:
没有非对称加密安全.
用途: 一般用于保存用户手机号、身份证等敏感但能解密的信息。
常见的对称加密算法有: AES、DES、3DES、Blowfish、IDEA、RC4、RC5、RC6、HS256

非对称加密

【两个密钥:公开密钥(publickey)和私有密钥,公有密钥加密,私有密钥解密,两个秘钥不同但是成对出现,需要借助工具生成,keytool工具可以生成】
解释: 同时生成两把密钥:私钥和公钥,私钥隐秘保存,公钥可以下发给信任客户端. 加密与解密:私钥加密,持有私钥或公钥才可以解密 公钥加密,持有私钥才可解密 签名: 私钥签名, 持有公钥进行验证是否被篡改过.
优点:
非对称加密与对称加密相比,其安全性更好;
缺点:
非对称加密的缺点是加密和解密花费时间长、速度慢,只适合对少量数据进行加 密。
用途: 一般用于签名和认证。私钥服务器保存, 用来加密, 公钥客户拿着用于对于令牌或 者签名的解密或者校验使用.
常见的非对称加密算法有: RSA、DSA(数字签名用)、ECC(移动设备用)、RS256 (采用 SHA‐256 的 RSA 签名)

不可逆加密算法

解释: 一旦加密就不能反向解密得到密码原文.
种类: Hash加密算法, 散列算法, 摘要算法等
用途:一般用于效验下载文件正确性,一般在网站上下载文件都能见到;存储用户敏感 信息,如密码、 卡号等不可解密的信息。
常见的不可逆加密算法有: MD5、SHA、HMAC 4.3.Base64编码

Base64

是网络上最常见的用于传输8Bit字节代码的编码方式之一。Base64编码可用于在 HTTP环境下传递较长的标识信息。采用Base64编码解码具有不可读性,即所编码的数据 不会被人用肉眼所直接看到。注意:Base64只是一种编码方式,不算加密方法。
Base64加密

//获取盐
String gensalt = BCrypt.gensalt(); 
System.out.println("salt:"+gensalt); 
//将密码传入使用hashpw加密
String saltPassword = BCrypt.hashpw("123456", gensalt); System.out.println("本次生成的密码:"+saltPassword);

BCrypt不支持反运算,只支持密码校验

boolean checkpw = BCrypt.checkpw("123456", saltPassword); 
System.out.println("密码校验结果:"+checkpw);

org.springframework.util.Base64Utils 这个工具可以使用,直接进行加密,底层会使用盐不需要在自己获取盐在使用hashpw方法加密;

HS256对称加密算法:

公钥和私钥是同一个,可以自定义;

RSA非对称加密算法:

公钥和私钥不是同一个,是成对出现的;需要使用工具生成;

Keytool

是一个java提供的证书管理工具,可以生成RSA加密算法秘钥证书(公钥和私钥)不需要在安装的
创建一个文件夹,进入当前文件夹路径的cmd,输入命令
keytool -genkeypair -alias changgou -keyalg RSA -keypass changgou -keystore changgou.jks -storepass changgou
解释:
-alias:密钥的别名
-keyalg:使用的hash算法
-keypass:密钥的访问密码
-keystore:密钥库文件名,changgou.jks保存了生成的证书
-storepass:密钥库的访问密码
回答一系列问题,就会在当前文件夹生成一个秘钥jks文件;

openSSL 利用这个工具在秘钥证书中提取公钥;

安装 openssl:http://slproweb/products/Win32OpenSSL.html

配置openssl的path环境变量,
cmd进入changgou.jks文件所在目录执行如下命令:
HMACSHA256( base64UrlEncode(header) + “.” + base64UrlEncode(payload), secret) keytool -genkeypair -alias changgou -keyalg RSA -keypass changgou -keystore changgou.jks -storepass

解释:
changgou -alias:密钥的别名
-keyalg:使用的hash算法
-keypass:密钥的访问密码
-keystore:密钥库文件名,changgou.jks保存了生成的证书
-storepass:密钥库的访问密码 keytool
-list -keystore changgou.jks keytool
-list -rfc --keystore changgou.jks | openssl x509 -inform pem -pubkey

-----BEGIN PUBLIC KEY----- 以这个开头的就是公钥复制下来保存
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAvFsEiaLvij9C1Mz+oyAm t47whAaRkRu/8kePM+X8760UGU0RMwGti6Z9y3LQ0RvK6I0brXmbGB/RsN38PVnh cP8ZfxGUH26kX0RK+tlrxcrG+HkPYOH4XPAL8Q1lu1n9x3tLcIPxq8ZZtuIyKYEm oLKyMsvTviG5flTpDprT25unWgE4md1kthRWXOnfWHATVY7Y/r4obiOL1mS5bEa/ iNKotQNnvIAKtjBM4RlIDWMa6dmz+lHtLtqDD2LF1qwoiSIHI75LQZ/CNYaHCfZS xtOydpNKq8eb1/PGiLNolD4La2zf0/1dlcr5mkesV570NxRmU1tFm8Zd3MZlZmyv 9QIDAQAB -----END PUBLIC KEY-----

将上边的公钥拷贝到文本public.key文件中,合并为一行,注意:一定要合并一行,可以将它放到需要实现授权认证的工程中。

使用的时候只需要将秘钥文件和公钥文件放在需要的resources目录下

更多推荐

JWT令牌,常见加密算法,Base64笔记

本文发布于:2023-06-14 05:05:00,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1440964.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:令牌   加密算法   常见   笔记   JWT

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!