Sat*_*ian 7 java base64 x509certificate
我的供应商在文件中发送给我一份证书.p7b。我需要从中提取证书。所以我在我的cmd上运行这个:
openssl pkcs7 -inform DER -outform PEM -in in.p7b -print_certs > cer_bundle.cer
Run Code Online (Sandbox Code Playgroud)
我打开一看cer_bundle.cer,看到三张证书。前两个看起来不错。最终证书在通过时Base64.getDecoder().decode(myCert)会抛出如下错误:
java.lang.IllegalArgumentException: Last unit does not have enough valid bits\n\tat
java.util.Base64$Decoder.decode0(Base64.java:734)\n\tat
java.util.Base64$Decoder.decode(Base64.java:526)\n\tat
java.util.Base64$Decoder.decode(Base64.java:549)\n\t
...
Run Code Online (Sandbox Code Playgroud)
然后我获取证书的内容并在我的终端上执行此操作
CERT=MIIFDj...
base64 --decode <<< $CERT
Run Code Online (Sandbox Code Playgroud)
我在控制台上看到输出没有错误。
java的Base64解码器是怎么回事?
小智 7
Base 64 编码使用四个字符来编码三个字节,因此长度应该是四个字符的倍数。如果输入是三个字节的倍数,则不需要填充,否则=将添加。将有一两个“剩余”字节。
XY==的地方。XYXYZ=编码X六位,Y编码第一字节的两位和第二字节的四位,同时Z编码第二字节的四位。您收到的错误表明最后四个字符本质上是X===(=可以省略),这在 Base 64 编码中没有意义。
| 归档时间: |
|
| 查看次数: |
36917 次 |
| 最近记录: |