私は128ビットキーを含むSecretkeySpecオブジェクトを作成しました。 私はこのキーをStringに入れたいのですが(この文字列を元のキーに戻す必要があります)、Base64エンコーディングを使用します。JAVA:128ビットのキーとストリングの問題
これは私のキーは文字にバイト配列からRAW形式でどのように見えるかです:
*P??? ?ukL|?~
だから私はバイトを取ると、このようにそれをコードします。
byte[] okay = Base64.encode(eF.getSpec().getEncoded());
は、今私は文字に翻訳するとき、私は得る:
S2xEa3Ara0o5blVGYTB3WkRIeUZmZz09DQo=
今、私は私のキーが戻って、それはbase64でエンコードされた配列から元の形式だに復元したいです。私は結果を確認するとき
String dkey = "S2xEa3Ara0o5blVGYTB3WkRIeUZmZz09DQo=";
byte[] key = null;
key = dKey.getBytes();
key = Base64.decode(key);
は、今私が得る:
DKlDkp+kJ9nUFa0wZHyFfg==
の代わりに:
*P??? ?ukL|?~
あなたは、これは私が見ることを望んだ結果ではない見ることができるように。 私は確かに初心者の間違いをして、それを私を許しても、私はプログラミングに新しいrelativalyです。 誰かが私に128ビットの鍵を読み取り可能な形式に変換するという実例を教えてもらえればと思っています。
私はスペルミスをお詫びします。英語は母国語ではありません。あなたは、コードに多少の誤差があった事前
どのような 'Base64'クラスを使用していますか?それはApache Codecライブラリからですか? –
'eF.getSpec()。getEncoded()'は何をしますか?私はデコード部分で同様の呼び出しを見ません。 – casablanca
@casablanca:* SecretKeySpecクラスのgetEncoded()メソッドです(http://download.oracle.com/javase/1.4.2/docs/api/javax/crypto/spec)。 /SecretKeySpec.html#getEncoded%28%29)。その場合、キーを表す生のバイトを単に返す必要があります。 –