android - 在 Kotlin 中使用 ByteArrays 和 SecretKeySpec

标签 android kotlin aes encryption-symmetric

我有一个看似简单的任务..

获取一个文件,打开它,将字节流作为 AES key ,然后实例化一个 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 应用程序中。应用程序中的硬编码是否不安全?我应该将 key 存储为文件并从 android 文件系统中读取吗?

最佳答案

如果您将 key 作为文件存储在外部驱动器上,则会发生以下情况:

  • 您需要获得用户的许可才能读取/写入外部驱动器
  • 由于 key 位于外部驱动器上,因此很容易受到以下影响:
    2.1 被用户删除
    2.2 被您想要的应用程序/人阅读

  • 由于 key 是对称的,并且可以用于加密和解密。

    现在,对于我们的鸟类:

    从磁盘加载文件:This explains it quite well

    关于android - 在 Kotlin 中使用 ByteArrays 和 SecretKeySpec,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60031097/

    相关文章:

    android - 从 AIDE 转移到 Eclipse——预览不显示

    javascript - Highcharts - 数据不会加载到 Android WebView 上的图表中

    android - 如何从kotlin中的适配器打开 Activity

    java - 可观察以重用运算符执行

    aes - Crypto.Cipher.AES.new 中的默认模式

    ios - 使用 MonoTouch 的 AES 加密

    android - 如何在没有编码问题的情况下用 iText 替换 PDF 中的文本? (安卓)

    android - 将 Facebook SDK 添加到 Android Studios 项目? (出现错误 8)

    android - 如何在分页库的PagedList中添加Item

    java - 非法 key 大小 - AES CBC 解密