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

问题描述

我在解密加密文件时遇到异常。 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 (将#修改为@)