文章を暗号化してから復号しようとしています。Google Developerの公式ドキュメントを見て、
encryptButton?.setOnClickListener { val plaintext:ByteArray=editText.text.toString().toByteArray() val keygen=KeyGenerator.getInstance("AES") keygen.init(256) val key:SecretKey=keygen.generateKey() val cipher=Cipher.getInstance("AES/CBC/PKCS5PADDING") cipher.init(Cipher.ENCRYPT_MODE,key) val cipherText:ByteArray=cipher.doFinal(plaintext) val iv: ByteArray = cipher.iv encryptedText.text=cipherText.toString() }
として暗号化したテキストを表示しました。次に、この暗号化した文章を元に戻そうとして、
decryptButton.setOnClickListener { val encryptedtext:ByteArray=encryptedText.text.toString().toByteArray() val keygen=KeyGenerator.getInstance("AES") keygen.init(256) val key:SecretKey=keygen.generateKey() val cipher=Cipher.getInstance("AES/CBC/PKCS5PADDING") cipher.init(Cipher.DECRYPT_MODE,key) val cipherText:ByteArray=cipher.doFinal(encryptedtext) val iv:ByteArray=cipher.iv decryptedText.text=cipherText.toString() }
としたのですが、cipher.init(Cipher.DECRYPT_MODE,key)の部分を実行すると、「Caused by:java.security.InvalidAlgorithmParameterException: IV must be specified in CBC mode」とログキャットに表示されました。復号方法の情報が見つけられなかったので、暗号化した時のコードの一部を、cipher.init(Cipher.DECRYPT_MODE,key)に変えれば暗号化されるかもと安直に考えてしまったのですが、やり方が分からないため、詳しい方がいらっしゃれば教えて頂けないでしょうか?よろしくお願い致します。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/05/19 15:30 編集
2021/05/19 15:47