2017-12-21 49 views
1

C#では、Convert.FromBase64String(String string)に文字列を渡すことができ、byte[]を返します。私はjava.util.Base64ライブラリを使用してJavaで同じことをしようとした場合、それはこのようなものに見える、 をStringをBase64にエンコードする代替Javaメソッド

string key = "lRixPxNRmNOTxB2npoa5zCZR2I/GkuCndWtcRS/w4CI="; 
byte[] KeyBytes = Convert.FromBase64String(key); 
Console.WriteLine(KeyBytes.Length); //output 32 

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言語で作成する方法はありますか?

+5

をきっとあなたは**こちら**デコードしたいですか? –

+0

多分.netのバージョンは、iso-8859のようなutf-8とは異なるプラットフォームのデフォルトのエンコーディングを使用しています。 – tsolakp

答えて

1

.NETConvert.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 
0

それはdecodeであるべきではないencode

String key = "lRixPxNRmNOTxB2npoa5zCZR2I/GkuCndWtcRS/w4CI="; 
    byte[] base64KeyBytes = Base64.getDecoder().decode(key); 
    System.out.println(base64KeyBytes .length); //output 32 
関連する問題