博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JWT(JSON Web Token) Java与.Net简单编码实现
阅读量:6224 次
发布时间:2019-06-21

本文共 2366 字,大约阅读时间需要 7 分钟。

参考

Java与.Net实现实现

// java HMacsha256private 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 jwt@Testpublic 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 = ShaUtil.Hmacsha256(secret, base64Header + "." + base64Claim);    String jwt = base64Header + "." + base64Claim  + "." + signature;    System.out.println(jwt);}// c# Hmacsha256protected String HMacSha256Hash(String key, String message){    var keyBytes = Encoding.UTF8.GetBytes(key);    using (var hmacsha256 = new HMACSHA256(keyBytes))    {        var buffer = hmacsha256.ComputeHash(Encoding.UTF8.GetBytes(message));        var b64 = Base64UrlSafeString(buffer);        return b64;    }}protected String Base64UrlSafeString(Byte[] bytes){    var b64 = Convert.ToBase64String(bytes);    return b64.Replace("=", "").Replace("+", "-").Replace("/", "_");}// c# jwt[Test]public void testJWT(){    String secret = "eerp";    String header = "{\"type\":\"JWT\",\"alg\":\"HS256\"}";    String claim = "{\"iss\":\"cnooc\", \"sub\":\"yrm\", \"username\":\"yrm\", \"admin\":true}";    var encoding = Encoding.UTF8;    var base64Header = Base64UrlSafeString(encoding.GetBytes(header));    var base64Claim = Base64UrlSafeString(encoding.GetBytes(claim));    var signature = HMacSha256Hash(secret, base64Header + "." + base64Claim);    var jwt = base64Header + "." + base64Claim + "." + signature;    Console.WriteLine(jwt);}

结果:

eyJ0eXBlIjoiSldUIiwiYWxnIjoiSFMyNTYifQ.eyJpc3MiOiJjbm9vYyIsICJzdWIiOiJ5cm0iLCAidXNlcm5hbWUiOiJ5cm0iLCAiYWRtaW4iOnRydWV9.sAHcCnpnsPA0T9i-Ig9oZnVq3N0-kK_aCwlkzFOkrH8

转载于:https://www.cnblogs.com/byxxw/p/6742230.html

你可能感兴趣的文章
降低测试难度及成本 加速物联网普及
查看>>
融入欧洲产业链 华为在数学上投注希望
查看>>
中国实现城域量子隐形传态为全球量子网络打基础
查看>>
超算入云
查看>>
沃达丰完成5G毫微波测试 室外单用户速率达到20Gbps
查看>>
Facebook宣布支持在Android上使用Tor访问
查看>>
即便背靠微信,微信企业号累积 2000 万用户也用了近两年时间
查看>>
MuleSoft发布新的Anypoint Platform,用户可操控API
查看>>
牙疼怎么快速止痛,三招解决牙痛立竿见影
查看>>
大数据云计算悄然改变服务器市场格局 英特尔霸主地位受IBM、ARM威胁
查看>>
英利宣布退出欧盟限价限协议
查看>>
深圳运用大数据推动"智慧司法"
查看>>
Windows 10免费升级服务终成历史 说说我们和它的恩怨
查看>>
苹果为何在中国一南一北设两个研发中心?五重考量
查看>>
Three UK遭黑客入侵 600万用户的个人信息存在被窃危险
查看>>
自动驾驶应有传感器冗余
查看>>
超融合产业需要这种“情怀”
查看>>
11-3URLTestDemo实例操作完成URL单元测试
查看>>
使用大数据,就像在沙子里淘金
查看>>
敏捷测试理论以及实践(4)
查看>>