将字符串编码为 Base64 的备选 Java 方法
Alternative Java Methods for Encoding String to Base64
在 C# 中,我可以将一个字符串传递给 Convert.FromBase64String(String string)
,其中 returns 一个 byte[]
。以下面的代码为例:
string key = "lRixPxNRmNOTxB2npoa5zCZR2I/GkuCndWtcRS/w4CI=";
byte[] KeyBytes = Convert.FromBase64String(key);
Console.WriteLine(KeyBytes.Length); //output 32
如果我在 java 中使用 java.util.Base64
库尝试同样的事情,
它看起来像这样:
String key = "lRixPxNRmNOTxB2npoa5zCZR2I/GkuCndWtcRS/w4CI=";
byte[] base64KeyBytes = Base64.getEncoder().encode(key.getBytes(UTF_8));
System.out.println(base64KeyBytes.length); //output 60
Java encode
方法需要参数类型 byte[]
,我认为这就是我的问题所在。
有没有办法在 Java 中生成与我在 C# 中得到的相同的输出?
应该是decode
不是encode
String key = "lRixPxNRmNOTxB2npoa5zCZR2I/GkuCndWtcRS/w4CI=";
byte[] base64KeyBytes = Base64.getDecoder().decode(key);
System.out.println(base64KeyBytes .length); //output 32
.NET
中的方法Convert.FromBase64String
用于解码base64编码的字符串回纯文本。这是正确的,因为您的 key
字符串是 base64 编码的。
相反,在您的 Java
代码摘录中,您正尝试使用 encode
方法 编码 您已经使用 base64 编码的字符串。 .. 当你应该 解码 时。为此,请使用以下代码:
String key = "lRixPxNRmNOTxB2npoa5zCZR2I/GkuCndWtcRS/w4CI=";
byte[] base64KeyBytes = Base64.getDecoder().decode(key);
System.out.println(base64KeyBytes.length); // 32
您也可以使用 android.util.base64
,如下所示:
String key = "lRixPxNRmNOTxB2npoa5zCZR2I/GkuCndWtcRS/w4CI=";
byte[] base64KeyBytes = Base64.decode(key, Base64.DEFAULT);
System.out.println(base64KeyBytes.length); // 32
在 C# 中,我可以将一个字符串传递给 Convert.FromBase64String(String string)
,其中 returns 一个 byte[]
。以下面的代码为例:
string key = "lRixPxNRmNOTxB2npoa5zCZR2I/GkuCndWtcRS/w4CI=";
byte[] KeyBytes = Convert.FromBase64String(key);
Console.WriteLine(KeyBytes.Length); //output 32
如果我在 java 中使用 java.util.Base64
库尝试同样的事情,
它看起来像这样:
String key = "lRixPxNRmNOTxB2npoa5zCZR2I/GkuCndWtcRS/w4CI=";
byte[] base64KeyBytes = Base64.getEncoder().encode(key.getBytes(UTF_8));
System.out.println(base64KeyBytes.length); //output 60
Java encode
方法需要参数类型 byte[]
,我认为这就是我的问题所在。
有没有办法在 Java 中生成与我在 C# 中得到的相同的输出?
应该是decode
不是encode
String key = "lRixPxNRmNOTxB2npoa5zCZR2I/GkuCndWtcRS/w4CI=";
byte[] base64KeyBytes = Base64.getDecoder().decode(key);
System.out.println(base64KeyBytes .length); //output 32
.NET
中的方法Convert.FromBase64String
用于解码base64编码的字符串回纯文本。这是正确的,因为您的 key
字符串是 base64 编码的。
相反,在您的 Java
代码摘录中,您正尝试使用 encode
方法 编码 您已经使用 base64 编码的字符串。 .. 当你应该 解码 时。为此,请使用以下代码:
String key = "lRixPxNRmNOTxB2npoa5zCZR2I/GkuCndWtcRS/w4CI=";
byte[] base64KeyBytes = Base64.getDecoder().decode(key);
System.out.println(base64KeyBytes.length); // 32
您也可以使用 android.util.base64
,如下所示:
String key = "lRixPxNRmNOTxB2npoa5zCZR2I/GkuCndWtcRS/w4CI=";
byte[] base64KeyBytes = Base64.decode(key, Base64.DEFAULT);
System.out.println(base64KeyBytes.length); // 32