暗号化と復号化機能を記述しました。暗号化はうまく動作しますが、私は常に復号化でIllegalBlockSizeExceptionを取得します。復号化時にIllegalBLockSizeExceptionが発生する
public static String aes_encrypt (String text, String key)
{
SecretKey skey = new SecretKeySpec(key.getBytes(), "AES");
Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding", "SunJCE");
cipher.init(Cipher.ENCRYPT_MODE, skey);
return new String((cipher.doFinal(text.getBytes())));
}
そして、ここで復号化機能です:
public static String aes_decrypt (String text, String key)
{
SecretKey skey = new SecretKeySpec(key.getBytes(), "AES");
Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding", "SunJCE");
cipher.init(Cipher.DECRYPT_MODE, skey);
return new String((cipher.doFinal(text.getBytes())));
}
ここでこれをテストする簡単なmainメソッドです:
public static void main (String args[])
{
String text = "Hello, world!";
String key = "nv93h50sk1zh508v";
String en, de;
System.out.println("Text: " + text);
System.out.println("Encrypted: " + (en = aes_encrypt(text, key))
+ " length = " + en.length());
System.out.println("Decrypted: " + (de = aes_decrypt(en, key)));
}
は、誰もが適切になるようにどのように「パッド」に暗号化された文字列を知っています私はそれを解読することができますか? (私は長さが16の倍数になるまで0で文字列を水増ししようとしたが、string not properly padded
のようなものを得ました。)
おかげ
あなた自身のコードを書く理由は何ですか?あなたは "Bouncy Castle"ライブラリを試しましたか? (http://www.bouncycastle.org/java.html) –
私は、第三者のライブラリを使いたくないです。 –
@CarlosTasadaバウンシーキャッスルは多くのことをしています。 CMSなどのコンテナ形式を使用することを意味する場合は、例を指し示してください。 –