【问题标题】:Working with ByteArrays and SecretKeySpec in Kotlin在 Kotlin 中使用 ByteArrays 和 SecretKeySpec
【发布时间】:2020-02-02 22:12:09
【问题描述】:

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

获取文件,打开它,将字节流作为 AES 密钥,并在 Android Kotlin 中实例化 javax.crypto.spec.SecretKeySpec

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 文件系统中读取吗?

【问题讨论】:

    标签: android kotlin aes encryption-symmetric


    【解决方案1】:

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

    1. 您需要获得用户的许可才能读取/写入外部驱动器
    2. 由于密钥位于外部驱动器上,因此容易受到以下影响: 2.1 被用户删除 2.2 被非您预期的应用/人阅读

    由于密钥是对称的,可用于加密和解密。

    现在,对于我们的鸟类:

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

    【讨论】:

    • 所以澄清一下...我不应该把它放在磁盘上...所以现在可以将其硬编码到应用程序本身中吗?
    • 如果可能的话把它放在密钥库中
    • 谢谢莉娜,我已经有一个预先存在的密钥(我知道我可能还需要保存初始化变量(iV)......所以现在我正在尝试输入这些值进入应用程序.. 现在直接在源代码中,因为我将它注入到 KeyStore 的实例中。我现在有另一个问题,我将在 SO 上发布。再次感谢!
    • 把链接贴在这里,也许我可以帮忙
    • 我现在真的搞定了!在重新检查我的操作序列(Base64、编码/解码等)之后
    猜你喜欢
    • 2010-09-10
    • 2010-10-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-26
    • 2015-08-13
    • 1970-01-01
    相关资源
    最近更新 更多