Java 加密算法 HMAC SHA256

发布于 2021-04-07 21:08:40 字数 1432 浏览 1241 评论 0

ApiSecurityExample.java 源码如下:

import javax.crypto.Mac;
import javax.crypto.spec.SecretKeySpec;
import org.apache.commons.codec.binary.Base64;

public class ApiSecurityExample {
  public static void main(String[] args) {
    try {
     String secret = "NCKDUmPQtBDocbqu6ZFo0juJlfGNJXvf";
     String message = "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnNUwxQmFFbFdmcHhLalM4SUpsdWNFczk5VEZ0b2g4WiJ9";

     Mac sha256_HMAC = Mac.getInstance("HmacSHA256");
     SecretKeySpec secret_key = new SecretKeySpec(secret.getBytes(), "HmacSHA256");
     sha256_HMAC.init(secret_key);

     String hash = Base64.encodeBase64String(sha256_HMAC.doFinal(message.getBytes()));
     System.out.println(hash);
    }
    catch (Exception e){
     System.out.println("Error");
    }
   }
}

源码中的 message 是一个 JWT 的头和载荷。
需要下载 apache 的包:

$ wget http://www-us.apache.org/dist//commons/codec/binaries/commons-codec-1.10-bin.zip
$ unzip commons-codec-1.10-bin.zip
$ javac -cp ".:./commons-codec-1.10/commons-codec-1.10.jar" ApiSecurityExample.java
$ java -cp ".:./commons-codec-1.10/commons-codec-1.10.jar" ApiSecurityExample
wc0tE4XSb+iYxBs9a/XWgT0btABQM6JyWCHpSlleUlg=

unzip 自动创建了目录 commons-codec-1.10 目录,解压出 jar 包。-cp 参数指明了类路径。而输出的 wc0tE4XSb+iYxBs9a/XWgT0btABQM6JyWCHpSlleUlg= 是JWT的签名。 这个签名同 https://jwt.io/ 计算出的一样。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

JSmiles

生命进入颠沛而奔忙的本质状态,并将以不断告别和相遇的陈旧方式继续下去。

0 文章
0 评论
84960 人气
更多

推荐作者

苏璃陌

文章 0 评论 0

yizheng

文章 0 评论 0

猫七

文章 0 评论 0

庆幸我还是我

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文