c# - 将base64编码的字节转换为Java和C#中不同的字符串

标签 c# java base64 encode

我有一些代码可以登录到第 3 方解决方案,这需要我对密码进行编码。他们为我提供了一个 Java 示例,但我还需要用 C#(以及后来的 PHP)开发它。

我在 C# Windows 应用程序和 Java Android 应用程序中有代码,并且输出相同,它们似乎运行良好,直到我尝试将密码字节转换为 base 64 编码字符串。

Java代码如下:

enc = Base64.encodeBase64(ciphertext);
return enc.toString();

这是 C# 代码:

return System.Convert.ToBase64String(cipherBytes);

我可以看到 Java 应用程序中的密文字节与 C# 应用程序中的相同,除了它们是签名的,并且 Java 中的 base64 编码字节如果转换为 ASCII 值,将给出我我在 C# 应用程序中看到,但 Java 中的 enc.ToString() 没有返回相同的字符串。

更多信息

Java

ciphertext = 66, 67, -69, 24, -48, -23, 84, -5
encodeded64 = 81, 107, 79, 55, 71, 78, 68, 112, 86, 80, 115, 61
to string = [B@41771ea8

C#

cipherBytes = 66, 67, 187, 24, 208, 233, 84, 251
result = QkO7GNDpVPs=

非常感谢您的帮助。 (这是我在这里的第一篇文章,所以如果我违反了任何规则,请随时告诉我)

最佳答案

您正在使用的 Java 代码在字节数组上调用 toString(),它总是给您一个 [B@ 形式的字符串....

可以使用:

return new String(enc, "ASCII");

...但我建议更改为使用 API,在该 API 中对字节数组进行编码会返回一个字符串作为开头。我喜欢这个public domain implementation .

return Base64.encodeBytes(cipherText);

关于c# - 将base64编码的字节转换为Java和C#中不同的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15337289/

相关文章:

c# - 文件流写入文件并读取 bfile

java - DiffCallBack不被调用吗?

java - 为什么我的java代码中创建了两个内部框架?

javascript - Base64 Alfresco 上的 GET 请求

javascript - 在 Convert.FromBase64String 中输入时 FileReader.readAsDataURL 结果返回格式异常

c# - 来自 javascript 或 c# 的动态 html?

c# - 如何在 C# 中激活网络发现?

c# - 如何使用 ADO.NET 获取表中列的 SqlDbType?

java - 路径、相对、直接

python - Base64 字符串 python 上的 pytesseract