微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在流中找不到与密文匹配的密钥

如何解决在流中找不到与密文匹配的密钥

我在解密加密文件时遇到异常。 decryptFile() 方法中发生异常。发生异常的行是

 while (fileInputStream.read(buffer).also { read = it } != -1) {

完整代码如下

fun encryptFile(source: File,destination: File,applicationContext: Context) {
    val mainKey = MasterKey.Builder(applicationContext,MasterKey.DEFAULT_MASTER_KEY_ALIAS)
        .setKeyScheme(MasterKey.KeyScheme.AES256_GCM)
        .build()

    val encryptedFile = EncryptedFile.Builder(
        applicationContext,destination,mainKey,EncryptedFile.FileEncryptionScheme.AES256_GCM_HKDF_4KB
    ).build()

    val fileOutputStream = encryptedFile.openFileOutput()
    val fileInputStream = FileInputStream(source)

    val buffer = ByteArray(1024)
    var read: Int
    while (fileInputStream.read(buffer).also { read = it } != -1) {
        fileOutputStream.write(buffer,read)
    }

    fileInputStream.close()
    fileOutputStream.flush()
    fileOutputStream.close()
    source.delete()
    destination.renameto(source)
}

fun decryptFile(source: File,applicationContext: Context){
    val mainKey = MasterKey.Builder(applicationContext,source,EncryptedFile.FileEncryptionScheme.AES256_GCM_HKDF_4KB
    ).build()

    val fileInputStream = encryptedFile.openFileinput()
    val fileOutputStream = FileOutputStream(destination)

    val buffer = ByteArray(1024)
    var read: Int

    while (fileInputStream.read(buffer).also { read = it } != -1) {
        fileOutputStream.write(buffer,read)
    }

    fileInputStream.close()
    fileOutputStream.flush()
    fileOutputStream.close()
    source.delete()
    destination.renameto(source)
}

我正在使用安全性的 alpha 版本。为什么我使用安全的 alpha 版本,因为稳定版本在官方文档中被标记为已弃用

implementation("androidx.security:security-crypto:1.1.0-alpha03")
implementation("androidx.security:security-identity-credential:1.0.0-alpha02")
implementation("androidx.security:security-app-authenticator:1.0.0-alpha02")

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。