前提・実現したいこと
Androidでアクセストークンを端末に保存する際に
暗号化を施して保存しようとしていますが、
復号に失敗します。
下記を参考に実装しています。
https://qiita.com/f_nishio/items/485490dea126dbbb5001
エラーメッセージ
復号時のread()でIllegalBlockSizeExceptionが発生
該当のソースコード
JAVA
1 private String decryptString(KeyStore keyStore, String alias, String encryptedText) { 2 String plainText = null; 3 try { 4 PrivateKey privateKey = (PrivateKey) keyStore.getKey(alias, null); 5 6 Cipher cipher = Cipher.getInstance(ALGORITHM); 7 cipher.init(Cipher.DECRYPT_MODE, privateKey); 8 9 CipherInputStream cipherInputStream = new CipherInputStream( 10 new ByteArrayInputStream(Base64.decode(encryptedText, Base64.DEFAULT)), cipher); 11 12 ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); 13 int b; 14 while ((b = cipherInputStream.read()) != -1) { 15 outputStream.write(b); 16 } 17 outputStream.close(); 18 plainText = outputStream.toString("UTF-8"); 19 } catch (Exception e) { 20 Log.e(TAG, e.toString()); 21 } 22 return plainText; 23 } 24}
試したこと
サンプルコードをそのまま利用しましたが、同様の箇所でIllegalBlockSizeExceptionが起きました。
サンプルコードと全く同じアプリを作ってみましたが同じ結果でした。
補足情報(FW/ツールのバージョンなど)
AndroidStudio 3.1.1を使用しています。
SDKは23~27でtargetSDKは27です。
よろしくお願いします。
回答2件
あなたの回答
tips
プレビュー