Как кодировать и декодировать 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