如何优化 react-native-keychain 性能?

How to optimize react-native-keychain performance?

我正在构建一个使用 react-native-keychain 来安全保存用户令牌的 react-native 应用程序。我知道钥匙串用于保存 username/password 组合,但我认为保存我的令牌不会有任何害处。我目前正在实施一些检查机制,这些机制将检查是否有可用的有效刷新令牌(这意味着最后一个用户在离开应用程序时没有注销,这通常发生在移动应用程序中)并会采取相应的行动。这似乎表现不佳(太慢),我得出的结论是令牌的获取阻碍了应用程序(Keychain.getGenericPassword()) .

问题是:既然钥匙串似乎是本地存储凭据的最安全方式,是否有优化其性能的方法,或者是否有同样安全但通常更快的替代方案?

“react-native-keychain”版本:“6.2.0”

对于仍在尝试解决此问题的任何人。我遇到了同样的问题,我的延迟大约是 10 秒或更多。经过这两个问题 1, 2. I followed the steps mentioned in this 评论后,我能够将它减少到不到一秒。

  1. 使用方法getGenericPasswordsetGenericPassword

    时使用{storage: KeyChain.STORAGE_TYPE.AES}选项
  2. 转到此文件:node_modules\react-native-keychain\android\src\main\java\com\oblador\keychain\KeychainModuleBuilder.java 并将 DEFAULT_USE_WARM_UP 设置为 false

  3. 转到此文件: node_modules\react-native-keychain\android\src\main\java\com\oblador\keychain\KeychainModule.java 内部方法 getGenericPassword 并更改以下内容:更改 这些行

    final String accessControl = getAccessControlOrDefault(options);   
    final boolean useBiometry = getUseBiometry(accessControl);   
    final CipherStorage current = getCipherStorageForCurrentAPILevel(useBiometry);   
    

    // final String accessControl = getAccessControlOrDefault(options);  
    // final boolean useBiometry = getUseBiometry(accessControl);   
    // final CipherStorage current = getCipherStorageForCurrentAPILevel(useBiometry);
    final CipherStorage current = getSelectedStorage(options); 
    

这个问题似乎是因为 RSA 加密使用了预热机制。请点击以上三个链接以获取更多信息。