私は目的にJavaコードを移植する必要があります。しかし、私はJavaで使われているデコードの仕組みに固執しています。 ObjectiveCで間違ったデコードが使用されたため、最終的にJavaコードから間違っています。ObjectiveCのJava同等のデコード
がString s = values.getProperty("s");
byte[] salt = Base64.getDecoder().decode(s);
System.out.println(s);
System.out.println("Salt DECODED = " + salt);
System.out.println("Decoded value as string " + new String(salt));
上記のコードの出力はobjectiveCで書かれた同じ私は、私は次のコード
NSString *s = parsedMessageDict[@"s"]; //ZB3NNxAMNB/x6JpAryCd0g==
NSData *salt = [[NSData alloc] initWithBase64EncodedString:s options:0];
を使用していた
's' holds the string value "ZB3NNxAMNB/x6JpAryCd0g==",
'salt' holds the value "Salt DECODED = [[email protected]",
'salt' hold the string value "Decoded value as string d�7"
を次の:私は捕まってしまったJavaコードは、以下に示します
違いは、Javaのsaltはbyte []として、objectiveCではNSDataとして宣言されていることです。これが今後の課題となりますか?以後、すべてのデータは値に基づいて処理されます。だから私はここで間違っています、間違いなく、最終的な出力は間違っています。
objectiveCでは、塩を文字列としてデコードしてバイト配列に変換するか、NSDataをバイト配列に変換する必要がありますか?
誰でも提案できますか?
あなたが '[B @ ...'を印刷すると、これはバイト[]内の値とは無関係であり、バイト[]を持っているということだけであり、このhashCodeはランダムそれを実行します。これを再現しようとする根気的な理由はありません。 –
NSData *はObjCの「バイト配列」です。それは正しい形式のようです。 –
@BenZotto b/w nsdataとバイト配列に違いはありますか? –