Java实现JWT

来源:互联网 发布:电子设计学什么软件 编辑:程序博客网 时间:2024/06/06 03:24
package com.hthl.jwt;import java.security.InvalidKeyException;import java.security.NoSuchAlgorithmException;import javax.crypto.Mac;import javax.crypto.spec.SecretKeySpec;import org.apache.commons.codec.binary.Base64;public class JwtDemo {private static final  String MAC_INSTANCE_NAME = "HMacSHA256";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);}// java jwtpublic static void testJWT() throws InvalidKeyException, NoSuchAlgorithmException {    String secret = "eerp";    String header = "{\"type\":\"JWT\",\"alg\":\"HS256\"}";    String claim = "{\"iss\":\"cnooc\", \"sub\":\"yrm\", \"username\":\"yrm\", \"admin\":true}";    String base64Header = Base64.encodeBase64URLSafeString(header.getBytes());    String base64Claim = Base64.encodeBase64URLSafeString(claim.getBytes());    String signature = Hmacsha256(secret, base64Header + "." + base64Claim);    String jwt = base64Header + "." + base64Claim  + "." + signature;    System.out.println(jwt);}public static void main(String[] args) throws Exception{testJWT();}}

原创粉丝点击