Смена ключа шифрования базы данных

Для смены ключа шифрования базы данных создайте приложение «RekeyBase», в котором используются методы фреймворка:

Имя метода Краткое описание
openBase(path: String, key: String) Метод выполняет открытие или создание базы данных.
reKeyBase(path: String, new_key: String) Метод выполняет смену ключа шифрования у открытой базы данных.

Приложение состоит из одного экрана, текстового поля ввода ключа шифрования и кнопок:

Для выполнения примера:

  1. Введите в текстовое поле первичный ключ шифрования базы данных и нажмите кнопку «Open Database».

При нажатии на кнопку происходит открытие соединения или создание базы данных с указанным первичным ключом. В текстовом представлении описывается результат выполнения метода.

  1. Введите в текстовое поле новый ключ шифрования базы данных и нажмите кнопку «Rekey Database».

При нажатии на кнопку происходит смена ключа шифрования базы данных. В текстовом представлении описывается результат выполнения метода.

  1. Введите в текстовое поле первичный ключ шифрования базы данных и нажмите кнопку «Open Database».

При нажатии на кнопку происходит закрытие предыдущего соединения с базой данных и попытка открытия нового соединения с первичным ключом. В текстовом представлении описывается результат выполнения метода.

  1. Введите в текстовое поле новый ключ шифрования базы данных, который был указан в пункте 2, и нажмите кнопку «Open Database».

При нажатии на кнопку происходит закрытие предыдущего соединения с базой данных и попытка открытия нового соединения с новым ключом. В текстовом представлении описывается результат выполнения метода.

Код приложения:

import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.widget.EditText;
import android.widget.TextView;
import com.mobrun.plugin.api.HyperHive;
public class ReKeyActivityJava extends Activity
{
  private static final String TAG = ReKeyActivityJava.class.getSimpleName();
  private HyperHive hyperHive;
  @Override
  protected void onCreate(final Bundle savedInstanceState)
  {
    super.onCreate(savedInstanceState);
    hyperHive = Util.INSTANCE.getHyperHive(this);
    initView();
  }
  /**
   * Инициализируем представления
   */
  private void initView()
  {
    setContentView(R.layout.activity_rekey);
    final EditText key = (EditText) findViewById(R.id.key); // поле с ключом
    final TextView result = (TextView) findViewById(R.id.result); // текст с результатом
    final String db_path = Util.INSTANCE.getDbPath(this) + "_rekeytest.sqlite"; // путь к базе данных
    // Откроем базу данных
    findViewById(R.id.btnOpen).setOnClickListener(v ->
    {
      final String response = "open  : " + hyperHive.databaseAPI.openBase(db_path, key.getText().toString());
      Log.d(TAG, "onClick() : open  : " + db_path + " : " + response + " : " + key.getText());
      result.setText(response);
    });
    // Установим новый ключ шифрования
    findViewById(R.id.btnReKey).setOnClickListener(v ->
    {
      final String response = "rekey : " + hyperHive.databaseAPI.reKeyBase(db_path, key.getText().toString());
      Log.d(TAG, "onClick() : rekey : " + db_path + " : " + response + " : " + key.getText());
      result.setText(response);
      hyperHive.databaseAPI.closeBase(db_path);
    });
  }
}
import android.app.Activity
import android.os.Bundle
import android.util.Log
import kotlinx.android.synthetic.main.activity_rekey.*
import kotlinx.android.synthetic.main.activity_rekey.view.*
class ReKeyActivity : Activity()
{
  private lateinit var hyperHive: HyperHive
  override fun onCreate(savedInstanceState: Bundle?)
  {
    super.onCreate(savedInstanceState)
    hyperHive = Util.getHyperHive(this)
    initView()
  }
  /**
   * Инициализируем представления
   */
  private fun initView()
  {
    setContentView(R.layout.activity_rekey)
    val db_path = Util.getDbPath(this) // путь к базе данных
    // Откроем базу данных
    root.btnOpen.setOnClickListener(
    {
      val response = "open  : ${hyperHive.databaseAPI.openBase(db_path, root.key.text.toString())}"
      Log.d(TAG, "onClick() : open  : $db_path : $response : ${root.key.text}")
      root.result.text = response
    })
    // Установим новый ключ шифрования
    root.btnReKey.setOnClickListener(
    {
      val response = "rekey : ${hyperHive.databaseAPI.reKeyBase(db_path, root.key.text.toString())}"
      Log.d(TAG, "onClick() : rekey : $db_path : $response : ${root.key.text}")
      root.result.text = response
      hyperHive.databaseAPI.closeBase(db_path)
    })
  }
  companion object
  {
    private val TAG = ReKeyActivity::class.java.simpleName
  }
}

См. также:

Примеры использования Android-фреймворка | Примеры работы с ресурсами