繁体   English   中英

Dart base64解码

[英]Dart base64 decoding

这是我的 base64 编码字符串:

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzZXNzaW9uSWQiOiJkMjNiN2ViMy03MDgyLTRkZDktOGQ0OC1lMjU2YTM3OTNiOTciLCJyZWZyZXNoVG9rZW4iOiJiN2M3MTc4Yi04OWRjLTQxMDctYjUzNC1hOGZiOTNhMzEwNzAiLCJuYW1lIjoiTGVuIiwiaWF0IjoxNTczMDI4MjU2fQ

使用https://jwt.io/它可以正确解码但是当尝试使用base64.decode('--Base64String--); 在 Flutter 它给了我这些错误

FormatException: Invalid character (at character 37)
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzZXNzaW9uSWQiOiIzYWNiNzBjZS0wYzYxLT...

当删除前面的字符串时. (我只需要 . 之后的信息. )我收到此错误

FormatException: Invalid length, must be multiple of four (at character 183)
...jLTQxMDctYjUzNC1hOGZiOTNhMzEwNzAiLCJuYW1lIjoiTGVuIiwiaWF0IjoxNTczMDI4MjU2fQ

是否有任何其他方法可以解码 Dart 的 base64 编码字符串

您可以先使用base64.normalize

例如:

import 'dart:convert';

void main() {
  final String b64 = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzZXNzaW9uSWQiOiJkMjNiN2ViMy03MDgyLTRkZDktOGQ0OC1lMjU2YTM3OTNiOTciLCJyZWZyZXNoVG9rZW4iOiJiN2M3MTc4Yi04OWRjLTQxMDctYjUzNC1hOGZiOTNhMzEwNzAiLCJuYW1lIjoiTGVuIiwiaWF0IjoxNTczMDI4MjU2fQ';

  String foo = b64.split('.')[0];
  List<int> res = base64.decode(base64.normalize(foo));

  print(utf8.decode(res));
}

结果:

{"alg":"HS256","typ":"JWT"}

使用此package

这将帮助您解码 jwt.io

试试看。 这将帮助你

Center(child: 
Image.memory(
base64Decode(image6464.substring(23).replaceAll("\n", ""))
 )
),

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM