Работа с ByteArrays и SecretKeySpe c in Kotlin - PullRequest
1 голос
/ 03 февраля 2020

У меня, казалось бы, простая задача ..

Возьмите файл, откройте его, возьмите поток байтов в качестве ключа AES и создайте экземпляр javax.crypto.spec.SecretKeySpec в Android Kotlin

if (key == null) {

  val my_bytes: ByteArray = byteArrayOf(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0) 
  val algo = "AES"

  val secretKey = SecretKeySpec(my_bytes, algo)

  saveSecretKey(sharedPref, secretKey!!)
  return secretKey
}

Редактировать: SecretKeySpec() работает сейчас. Мне просто нужно знать, как правильно поместить байты из файла в приложение android. Жесткое кодирование в приложении небезопасно? Должен ли я сохранить ключ в виде файла и прочитать его из файловой системы android?

1 Ответ

1 голос
/ 03 февраля 2020

Если вы сохраните ключ в виде файла на внешнем диске, произойдет следующее:

  1. Вам потребуется разрешение пользователя на чтение / запись на внешний диск
  2. Поскольку ключ находится на внешнем диске, он может: 2.1 быть удаленным пользователем. 2.2 быть прочитанным приложением / лицом, отличным от того, для которого он предназначен

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

Теперь для наших птиц:

Чтобы загрузить файл с диска: Это довольно хорошо объясняет

...