質問

Google SearchアプライアンスでSAML Authnを構成しようとする一環として、応答をBase64に変換する必要があります。概念実証のために、私はIntellijのアイデアでデバッガーを使用して、文字列をOpenSSLコマンドによって生成されたバージョンに置き換えました。

openssl base64 -in inFileName -out outFileName

今、私は直接的な介入なしにバージョンを機能させる必要があります。私は使用しています Apache Commons Base64 Codec Library(v。1.4)、Charset utf-8、Linelength 64、およびコードは次のようになります。

Base64 encoder = new Base64(64);
signedSamlResponse = signedSamlResponse.replaceAll("[\n\r]","");
byte[] bytes = encoder.encode(signedSamlResponse.getBytes("UTF-8"));
signedSamlResponse = new String(bytes,0,bytes.length);

結果は私が必要とするものに非常に近いです。 Apache Libraryが行う直前に文字列でOpenSSL暗号化を行うと(行3が実行される前にsignedSamlResponseをコピー)、2つの結果をほぼ同一である2つの結果を実行します。唯一の違いは、最後の行で2番目の最後のキャラクターであり、この違いは私のすべての試みで一貫しています。

OpenSSLバージョン:

dD48L0Fzc2VydGlvbj48L3NhbWxwOlJlc3BvbnNlPgo=

Apacheバージョン:

dD48L0Fzc2VydGlvbj48L3NhbWxwOlJlc3BvbnNlPg==

2つの結果を一致させるために、バイト配列またはそれが来る文字列に何をする必要がありますか?

役に立ちましたか?

解決

OpenSSLバージョンは「 n」で終了するように見えます。したがって、2行目でそれらをすべて削除したので、最後に追加する必要があります:)

(基本的に、OpenSSLのバイト配列には、最後に追加の0x0Aがあります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top