如何在 C 中解密 base64 编码的字符串
How to decrypt a base64-encoded string in C
几天来我一直在为这个问题苦恼,我就是想不通。
我有一个字符串,它是我在 JWT 中获得的用于身份验证等的令牌。
令牌是这样创建的:
token = base64_urlsafe_encode(DATA)
DATA = IV + CIPHER_TAG + CIPHER_TEXT
IV = 16 bytes - initialization vector
CIPHER_TAG = 16 bytes - cipher tag
CIPHERTEXT = remaining bytes - encrypted(CREDENTIAL)
CREDENTIAL = <username>:<password>
现在,我可以对传入的 jwt 进行 base64 解码,没问题。但是我的令牌是这样出现的:
(出于安全原因更改了一些字符,我只更改了 0 的字母数字)
token" => "00_0000000000000000000000000000000000-00_000000000000000000000000_0000_00000000000000000000000_0000000000000000000000000000000==",
我无法将 64 解码为二进制,因为它在“_”字符和“-”以及任何非 base64 的字符上都失败。
谁能帮我弄清楚该怎么做?
他们怎么能说:token = base64_urlsafe_encode(DATA)
如果令牌包含无效(不是 base64)字符?
JWT采用Base64url编码(与普通的Base64有点区别)。差异是:
- Base64url 将
+
替换为 -
(减号)
- Base64url 将
/
替换为 _
(下划线)
- Base64url 不需要填充字符
=
几天来我一直在为这个问题苦恼,我就是想不通。 我有一个字符串,它是我在 JWT 中获得的用于身份验证等的令牌。
令牌是这样创建的:
token = base64_urlsafe_encode(DATA)
DATA = IV + CIPHER_TAG + CIPHER_TEXT
IV = 16 bytes - initialization vector
CIPHER_TAG = 16 bytes - cipher tag
CIPHERTEXT = remaining bytes - encrypted(CREDENTIAL)
CREDENTIAL = <username>:<password>
现在,我可以对传入的 jwt 进行 base64 解码,没问题。但是我的令牌是这样出现的: (出于安全原因更改了一些字符,我只更改了 0 的字母数字)
token" => "00_0000000000000000000000000000000000-00_000000000000000000000000_0000_00000000000000000000000_0000000000000000000000000000000==",
我无法将 64 解码为二进制,因为它在“_”字符和“-”以及任何非 base64 的字符上都失败。
谁能帮我弄清楚该怎么做?
他们怎么能说:token = base64_urlsafe_encode(DATA)
如果令牌包含无效(不是 base64)字符?
JWT采用Base64url编码(与普通的Base64有点区别)。差异是:
- Base64url 将
+
替换为-
(减号) - Base64url 将
/
替换为_
(下划线) - Base64url 不需要填充字符
=