我想用6位数字的密码锁定我的应用程序.当用户创建新的PIN时,该PIN的散列被保存在Ffltter安全存储中.通过从安全存储中获取散列的PIN并将它们进行比较来验证PIN.这会安全吗?

import 'package:flutter_secure_storage/flutter_secure_storage.dart';
import 'package:steel_crypt/steel_crypt.dart';

//Saves the hash of the pin in FlutterSecureStorage
Future<void> createPin(String pin) async {

  const secureStorage = FlutterSecureStorage();

  //Hash the pin and save the hash
  var hasher = HashCrypt(algo: Hash算法.Sha_256);
  String hashedPin = hasher.hash(inp: pin);

  await secureStorage.write(key: "hashedPin", value: hashedPin)
  return;
}


//Check if the given pin is correct
Future<bool> checkPin(String pin) async {

  const secureStorage = FlutterSecureStorage();
  var hashedPin = await secureStorage.read(key: "hashedPin")

  var hasher = HashCrypt(algo: Hash算法.Sha_256);

  return hasher.check(plain: pin, hashed: hashedPin);
}

推荐答案

免责声明:我不是一名认证的安全专家,但根据我对它的了解,我会说它相当安全.

我在我的另一个应用程序上做了exact件同样的事情,下面是确定它对于我的用例足够安全的推理/逻辑:

  1. Ffltter安全存储使用通向Android's KeyStoreiOS's Keychain的方法通道--这是苹果和谷歌为美国开发者提供的操作系统API,是专门为存储敏感数据而设计的.

当这些API加密和解密值时,只有操作系统(甚至我们自己的应用程序)才能访问解密密钥和/或盐.这意味着没有操作系统的帮助,任何应用程序,即使是我们自己的应用程序,也无法解密,谁来管理谁应该有权为给定的应用程序解密一些东西.

  1. 与您的方法一样,我也只将PIN存储为单向散列(而不是实际的PIN,这是真正敏感的数据),并且使用Flutter 安全存储(因此操作系统提供加密)也意味着数据是静态加密的.

  2. future 对PIN输入的判断也是单向散列的,并与安全存储的值进行比较.

也就是说,所有软件都运行在一个你无法控制的环境中,所以它会被黑客入侵吗?是.但我相信苹果和谷歌的数据安全工程师抵御攻击的能力远远超过我的.

Flutter相关问答推荐

ProviderContainer和GoRouter

DART 3.3:为什么扩展类型不起作用?

在创建肘部并使用冻结时,无法使用中的Copy With方法

如何在用Ffltter成功登录后重定向下一页?

Flutter 块消费者仅对特定的状态属性更改做出react

使用持久的侧边菜单和顶部栏在Ffltter Web应用程序中的页面之间导航

运行调试flutter应用程序时出错:B/BL超出范围(最大+/-128MB)到'';

如何使用providerContainer监听/写入FutureProvider?

如果有空间则居中CustomScrollView

Flutter 中的 Provider 不会在第一次构建 App 时返回

通过在父窗口小部件功能上设置状态来浏览屏幕

Flutter blue plus 库,当try 从 esp32 驱动程序获取 PlatformException 时读取特性

Flutter 动保存新的变量值

Flutter:为什么我的 listTile colored颜色 被容器 colored颜色 覆盖了?

在向 Google Route API 发送 HTTP Post 请求期间发生错误,

.info/connected 这两个代码之间有什么区别吗?

有什么方法可以将 ChangeNotifier 与 ValueListenableBuilder 一起使用

有任何方法可以在应用程序移动背景恢复时显示 appopenAd

小部件库捕获的 Flutter 异常

如何在行/列中扩展没有子级的容器 colored颜色 小部件?