![](/img/trans.png)
[英]Converting base64 encoded bytes to string different in Javascript and C#
[英]Converting base64 encoded bytes to string different in Java and C#
我有一些代碼可以登錄第三方解決方案,這需要我對密碼進行編碼。 他們為我提供了Java樣本,但我還需要用C#(以及后來的PHP)開發它。
我有一個C#Windows應用程序和一個Java Android應用程序的代碼,並且具有相同的輸出,它們似乎工作得很好,直到我嘗試將cypher字節轉換為base 64編碼的字符串。
這是Java代碼:
enc = Base64.encodeBase64(ciphertext);
return enc.toString();
這是C#代碼:
return System.Convert.ToBase64String(cipherBytes);
我可以看到Java應用程序中的密文字節與C#app中的密文字節相同,只是它們是有符號的,並且Java中的base64編碼字節(如果轉換為ASCII值)將給出我在中看到的字符串C#app,但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,其中編碼字節數組會返回一個字符串開頭。 我喜歡這個公共領域的實現 。
return Base64.encodeBytes(cipherText);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.