基本的に、ユーザー指定の文字列を 256 ビットのバイト配列にハッシュして、Java の AES256 の実装を使用してデータを暗号化するときにキーとして使用しようとしています。この実行時例外が発生し続けます:
java.security.InvalidKeyException: Illegal key size or default parameters
一部のバイトが 8 ビット長ではないため、全体のキー サイズが 256 ビットではないことが原因だと思われます。左側に 0 を埋め込む方法を考えていたので、キーの長さを確認してください。
編集:
これは、値からメッセージ ダイジェストへの変換です。
MessageDigest hasher = MessageDigest.getInstance("SHA-256");
// Use the factory method to get the SHA-256 instance of a MessageDigest object.
hasher.update(input.getBytes());
// Update the message digest object with the bytes of the value to hash.
return hasher.digest();
// Hash the value and return the string representation.
これは、「hasher」からの出力を使用した暗号化です。
SecretKeySpec key = new SecretKeySpec(keyBytes, "AES");
cryptoTool.init(Cipher.ENCRYPT_MODE, key); // This is where the error fires.
return String.valueOf(cryptoTool.doFinal(plaintext.getBytes()));