Я хочу закодировать следующую строку в Base64Url во Flutter и декодировать ее на сервере Dart.
"username:password"
Как мне это сделать? А как мне это сделать в Base64?
Я хочу закодировать следующую строку в Base64Url во Flutter и декодировать ее на сервере Dart.
"username:password"
Как мне это сделать? А как мне это сделать в Base64?
Библиотека dart:convert
содержит кодировщик и декодер для Base64 и Base64Url. Однако они кодируют и декодируют списки целых чисел, поэтому для строк вам также необходимо кодировать и декодировать в UTF-8. Вместо того, чтобы выполнять эти две кодировки по отдельности, вы можете объединить их с помощью fuse
.
У вас должен быть следующий импорт:
import 'dart:convert';
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
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
utf8.decode(base64.decode(credentials));
используйте Codec::fuse()
метод
- person pskink; 18.05.2019
utf8
и base64
не нужно. Вы просто используете decode
в объединенном методе. Так что да, намного проще.
- person Suragch; 18.05.2019
fuse()
говорится: При кодировании результирующий кодек кодируется с помощью this
перед кодированием с помощью other
. При декодировании результирующий кодек декодируется с помощью other
перед декодированием с помощью this
.
- person pskink; 18.05.2019
Base64Encoder().convert(credentials.codeUnits)
, где вы также можете сделать Base64Encoder.urlSafe()
. Что вы думаете об этом? Мне это кажется более читаемым.
- person Suragch; 19.05.2019