Json web token 详解(二)
来源:互联网 发布:ubuntu怎么上传lrzsz包 编辑:程序博客网 时间:2024/04/30 17:10
下面不使用jwt的类库,而用一个程序来实现jwt,来加深对jwt的格式和生成的理解。
package jwt;import org.apache.commons.codec.binary.Base64;import javax.crypto.Mac;import javax.crypto.spec.SecretKeySpec;import java.security.InvalidKeyException;import java.security.NoSuchAlgorithmException;/** * 不使用jwt库的java实现jwt数据生成 */public class JwtJava { private static final String MAC_INSTANCE_NAME = "HMacSHA256"; /** * 生成jwt的签名部分 * @param secret * @param message * @return * @throws NoSuchAlgorithmException * @throws InvalidKeyException */ public static String Hmacsha256(String secret, String message) throws NoSuchAlgorithmException, InvalidKeyException { Mac hmac_sha256 = Mac.getInstance(MAC_INSTANCE_NAME); SecretKeySpec key = new SecretKeySpec(secret.getBytes(), MAC_INSTANCE_NAME); hmac_sha256.init(key); byte[] buff = hmac_sha256.doFinal(message.getBytes()); return Base64.encodeBase64URLSafeString(buff); } /** * 模拟一个jwt的完成数据 * @throws InvalidKeyException * @throws NoSuchAlgorithmException */ public static void testJWT() throws InvalidKeyException, NoSuchAlgorithmException { //签名的key String secret = "secret"; //header数据 String headerJson = "{\"type\":\"JWT\",\"alg\":\"HS256\"}"; //Payload(载荷) String payloadJson = "{\"sub\":\"1234567890\", \"name\":\"John Doe\",\"admin\":true}"; String base64Header = Base64.encodeBase64URLSafeString(headerJson.getBytes()); String base64Claim = Base64.encodeBase64URLSafeString(payloadJson.getBytes()); String signature = Hmacsha256(secret, base64Header + "." + base64Claim); String jwt = base64Header + "." + base64Claim + "." + signature; System.out.println(jwt); } public static void main(String[] args) throws NoSuchAlgorithmException, InvalidKeyException { JwtJava.testJWT(); }}
阅读全文
2 0
- Json web token 详解(二)
- Json Web Token详解
- Json web token 详解(一)
- Json web token 详解(三)
- 使用json web token
- 使用json web token
- json web token登录
- JSON WEB TOKEN简介
- 使用json web token
- 使用json web token
- JWT -- json web token
- 使用json web token
- json web token登录
- JSON WEB TOKEN 介绍
- JWT(JSON Web Token)
- JSON WEB TOKEN安全
- JSON Web Token
- JSON Web Token (JWT)
- MFC使用WM_HOTKEY消息做窗口的显示和隐藏
- c++入门教程(二)
- 【nodejs】快速入门使用
- C语言 Linux文件系统调用 分组
- 了解TCP三次握手、四次挥手以及syn攻击
- Json web token 详解(二)
- 数据结构排序法之堆排序he归并排序
- uva-439 骑士的移动
- 【枚举标记】HDU4907Task schedule【BestCoder Round #3】
- OpenGL 03 绘制命令
- Linux 之GIT 安装(centos6.5)
- 文件上传与下载权限的控制
- 2017.08.06
- tcp头部没有数据长度信息