Hive加密箱密钥存储在Flutter secure_storage中存在空安全问题



需要一些帮助来解决这个问题,我已经尝试了所有的方法,但真的不知道如何解决这个问题。

我正在根据Hive文档应用加密存储和带有secure_storage的密钥存储的代码。我已经选择使用飞镖2.12与零安全,但这似乎是不可能的。我真的不知道真正的问题在哪里。

final FlutterSecureStorage secureStorage = const FlutterSecureStorage();
var containsEncryptionKey = await secureStorage.containsKey(key: 'key');
if (!containsEncryptionKey) {
var key = Hive.generateSecureKey();
await secureStorage.write(key: 'key', value: base64UrlEncode(key));
}
var encryptionKey = base64Url.decode(await secureStorage.read(key: 'key'));
var encryptedBox =
await Hive.openBox<Sale>(kSalesBox, encryptionCipher: HiveAesCipher(encryptionKey));

上面的问题突出显示为:await secureStorage.read(key: 'key')

我已经尝试了所有的东西,但我不明白IDE想要什么,这个消息在这个应用程序中没有意义。

错误消息:

Decrypts and returns the value for the given [key] or null if [key] is not in the storage.
[key] shouldn't be null. [iOptions] optional iOS options [aOptions] optional Android options [lOptions] optional Linux options Can throw a [PlatformException].
The argument type 'String?' can't be assigned to the parameter type 'String'.

但是密钥不会为空!这就是";如果";支票是。。。

通过随机猜测求解。。。

将括号应用于错误突出显示和空断言运算符"如下所示:

var encryptionKey = base64Url.decode((await secureStorage.read(key: 'key'))!);

对于我来说,在将aOptions: _getAndroidOptions()添加到secureStorage.containsKey像这样:

await secureStorage.containsKey(key: 'encryptionKey',aOptions: _getAndroidOptions());

然后我从模拟器中卸载该应用程序,重新构建并运行。

也与secureStorage.read(key: 'encryptionKey',aOptions:相同

_getAndroidOptions()) and secureStorage.write(key: 'encryptionKey',aOptions: _getAndroidOptions())

相关内容

  • 没有找到相关文章

最新更新