如何在Flutter / Dart中编码和解码Base64和Base64 Url

6fe3ivhb  于 2023-10-22  发布在  Flutter
关注(0)|答案(2)|浏览(458)

我想在Flutter中将以下字符串编码为Base64Url,并在Dart服务器上解码。

"username:password"

我该怎么做呢?如何在Base64中实现?

fgw7neuy

fgw7neuy1#

dart:convert库包含Base64和Base64 Url的编码器和解码器。但是,它们编码和解码整数列表,因此对于字符串,您还需要使用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

参见

f5emj3cl

f5emj3cl2#

在这个例子中,我们将向您展示如何在Flutter中将字符串转换为base64或base64Url编码字符串。该方法可用于Flutter中敏感数据的双向加密。参见下面的示例:
导入这个库进行base64编码和解码:

import 'dart:convert';

如何将字符串编码为Base64:

String mydata = "myusername|password";
String bs64 = base64.encode(mydata.codeUnits);
print(bs64); //output: bXl1c2VybmFtZXxwYXNzd29yZA==

你也可以使用以下代码:

String mydata1 = "myusername|password";
List<int> mydataint = utf8.encode(mydata1);
String bs64str = base64.encode(mydataint);
print(bs64str); //output: bXl1c2VybmFtZXxwYXNzd29yZA==

如何将Base64解码为String:

List<int> decodedint = base64.decode(bs64string);
String decodedstring = utf8.decode(decodedint);

如何将字符串编码为Base64Url:

String mydata2 = "myusername|password";
String bs64str1 = base64Url.encode(mydata1.codeUnits);
print(bs64str1); //output: bXl1c2VybmFtZXxwYXNzd29yZA==

如何将Base64Url解码为String:

List<int> decodedint1 = base64Url.decode(bs64str1);
String decodedstring1 = utf8.decode(decodedint1);

通过这种方式,您可以在Flutter中将String转换为Base64或Base64Url编码。

相关问题