Как кодировать и декодировать Base64 и Base64Url в Flutter / Dart

Я хочу закодировать следующую строку в Base64Url во Flutter и декодировать ее на сервере Dart.

"username:password"

Как я могу это сделать? И как мне это сделать в Base64?

1 ответ

Решение

dart:convert Библиотека содержит кодировщик и декодер для Base64 и Base64Url. Однако они кодируют и декодируют списки целых чисел, поэтому для строк вам также необходимо кодировать и декодировать в UTF-8. Вместо того, чтобы делать эти две кодировки отдельно, вы можете объединить их с fuse,

Вам необходимо иметь следующий импорт:

import 'dart:convert';

Base64

String credentials = "username:password";
Codec<String, String> stringToBase64 = utf8.fuse(base64);
String encoded = stringToBase64.encode(credentials);      // dXNlcm5hbWU6cGFzc3dvcmQ=
String decoded = stringToBase64.decode(encoded);          // username:password

Обратите внимание, что это эквивалентно:

String encoded = base64.encode(utf8.encode(credentials)); // dXNlcm5hbWU6cGFzc3dvcmQ=
String decoded = utf8.decode(base64.decode(encoded));     // username:password

Base64Url

String credentials = "username:password";
Codec<String, String> stringToBase64Url = utf8.fuse(base64Url);
String encoded = stringToBase64Url.encode(credentials);      // dXNlcm5hbWU6cGFzc3dvcmQ=
String decoded = stringToBase64Url.decode(encoded);          // username:password

Опять же, это эквивалентно:

String encoded = base64Url.encode(utf8.encode(credentials)); // dXNlcm5hbWU6cGFzc3dvcmQ=
String decoded = utf8.decode(base64Url.decode(encoded));     // username:password

Смотрите также

Другие вопросы по тегам