gpt4 book ai didi

java - 从 JWT 到 json 的 Base64 字符串

转载 作者:行者123 更新时间:2023-11-30 01:53:54 25 4
gpt4 key购买 nike

当我尝试将 jwt 中的 header 解析为 base64 到字符串时,输出为:

{"alg":"RS256","typ":"JWT","kid":"1234"

没有最后一个括号,但是当我解码相同的 base64 字符串时,例如:https://www.base64decode.org/那么 json 的格式就正确了。

我使用的功能:

   public void test() {
String encodedToken = "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6IjEyMzQifQ";
System.out.println(new String(DatatypeConverter.parseBase64Binary(encodedToken)));
}

可能出了什么问题?

编辑:Java 7 是强制性的。

最佳答案

尝试在 base64 中编码 {"alg":"RS256","typ":"JWT","kid":"1234"}

您将看到eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCISImtpZCI6IjEyMzQifQ==

== - 是 padding

我认为问题是 DatatypeConverter.parseBase64Binary 使用 xsd:base64Binary 的表示形式(RFC 2045)。但在 RFC 2045 中,填充是强制性的。

您可以使用这种方式(java.util.Base64):

public void test() {
String encodedToken = "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6IjEyMzQifQ";
System.out.println(new String(Base64.getDecoder().decode(encodedToken.getBytes())));
}

java.util.Base64 使用 RFC 4648(填充是可选的)。

关于java - 从 JWT 到 json 的 Base64 字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55139336/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com