【Android】ファイル暗号化

Android

ファイルの中身自体を保護するために、暗号化を行うのがおすすめです。Cipherクラスを利用してAES暗号化を実装できます。

KeyGenerator keyGen = KeyGenerator.getInstance("AES");
keyGen.init(128);
SecretKey secretKey = keyGen.generateKey();

Cipher cipher = Cipher.getInstance("AES");
cipher.init(Cipher.ENCRYPT_MODE, secretKey);

byte[] encryptedData = cipher.doFinal("This is hidden content.".getBytes());
FileOutputStream fos = new FileOutputStream(file);
fos.write(encryptedData);
fos.close();

このコードは、AES (Advanced Encryption Standard) を用いたデータの暗号化を行っています。具体的な処理について一行ずつ説明します。

  1. KeyGenerator のインスタンス作成:javaKeyGenerator keyGen = KeyGenerator.getInstance("AES"); keyGen.init(128);
    • KeyGenerator.getInstance("AES") でAES暗号方式に対応した鍵生成器を取得。
    • keyGen.init(128) で鍵長を128ビットに設定。
  2. 鍵の生成:javaSecretKey secretKey = keyGen.generateKey();
    • ここで実際の暗号鍵 (SecretKey) を生成します。この鍵は暗号化と復号に使用されます。
  3. 暗号化モードの初期化:javaCipher cipher = Cipher.getInstance("AES"); cipher.init(Cipher.ENCRYPT_MODE, secretKey);
    • Cipher.getInstance("AES") でAES暗号方式を使用するための暗号化器 (Cipher) を取得。
    • cipher.init(Cipher.ENCRYPT_MODE, secretKey) で暗号化モードに設定し、先ほど生成した鍵を使用します。
  4. データの暗号化:javabyte[] encryptedData = cipher.doFinal("This is hidden content.".getBytes());
    • doFinal() メソッドで、文字列 "This is hidden content." を暗号化し、暗号化されたバイト配列 (byte[]) を取得。
    • .getBytes() は文字列をバイト配列に変換するメソッドです。
  5. 暗号化されたデータをファイルに保存:javaFileOutputStream fos = new FileOutputStream(file); fos.write(encryptedData); fos.close();
    • FileOutputStream を使用して、暗号化されたデータを指定されたファイル (file) に書き込みます。
    • 最後に fos.close() でストリームを閉じます。

このプログラムは、以下を実現しています:

  • AES暗号方式を使用して文字列を暗号化。
  • 暗号化結果をバイナリデータとしてファイルに保存。

コメント