簡體   English   中英

如何在 flutter 中存儲密鑰對?

[英]How to store Keypairs in flutter?

我正在使用 Firebase 作為數據庫開發 Flutter 消息傳遞應用程序。 為了加密 2 個用戶之間發送的消息,我在應用程序開始時使用rsa-encrypt package 生成公鑰和私鑰對。

用於使用 EncryptionData class 生成密鑰對的代碼:

    import 'package:rsa_encrypt/rsa_encrypt.dart';
    import 'package:pointycastle/api.dart' as crypto;

    Future<crypto.AsymmetricKeyPair> futureKeyPair;
    crypto.AsymmetricKeyPair keyPair;

    class EncryptFunctions{

    Future<crypto.AsymmetricKeyPair<crypto.PublicKey,crypto.PrivateKey>> getKeyPair(){
      var helper = RsaKeyHelper();
      return helper.computeRSAKeyPair(helper.getSecureRandom());
      }
     }

Main.dart 是這樣的:

    void main(){
    EncryptFunctions encryptFunctions = new EncryptFunctions();
    futureKeyPair = encryptFunctions.getKeyPair();
    runApp(MyApp());
    }

為了加密或解密字符串,我們使用來自同一個 package 的 encrypt() 和 decrypt() 方法。futureKeyPair 包含公鑰和私鑰,可以通過使用

    keyPair = await futureKeyPair();

如何將私鑰安全地存儲在設備上以完成端到端加密。 這是我在 Stackoverflow 上的第一個問題。 對於任何格式錯誤,我們深表歉意。

我正在使用 Firebase 作為數據庫的 Flutter 消息傳遞應用程序。 為了加密兩個用戶之間發送的消息,我使用rsa-encrypt package 在應用程序開始時生成公鑰和私鑰對。

用於使用 EncryptionData class 生成密鑰對的代碼:

    import 'package:rsa_encrypt/rsa_encrypt.dart';
    import 'package:pointycastle/api.dart' as crypto;

    Future<crypto.AsymmetricKeyPair> futureKeyPair;
    crypto.AsymmetricKeyPair keyPair;

    class EncryptFunctions{

    Future<crypto.AsymmetricKeyPair<crypto.PublicKey,crypto.PrivateKey>> getKeyPair(){
      var helper = RsaKeyHelper();
      return helper.computeRSAKeyPair(helper.getSecureRandom());
      }
     }

Main.dart 是這樣的:

    void main(){
    EncryptFunctions encryptFunctions = new EncryptFunctions();
    futureKeyPair = encryptFunctions.getKeyPair();
    runApp(MyApp());
    }

為了加密或解密字符串,我們使用來自同一個 package 的 encrypt() 和 decrypt() 方法。 futureKeyPair 包含可以通過使用訪問的公鑰和私鑰

    keyPair = await futureKeyPair();

如何將私鑰安全地存儲在設備上以完成端到端加密。 這是我在 Stackoverflow 上的第一個問題。 很抱歉任何格式錯誤。

Android 有 KeyChain 和 KeyStore api:

https://developer.android.com/reference/android/security/KeyChain

https://developer.android.com/training/articles/keystore.html

iOS 有鑰匙串:

https://developer.apple.com/documentation/security/keychain_services

截至 2020 年 12 月,我不知道有任何 flutter package 抽象了這些 API。

除非您想編寫自己的 package,否則您可能想要使用的最接近的東西可能是flutter_secure_storage package,它將密鑰對存儲在 android 的密鑰庫中和 iOS 的鑰匙串中,然后在存儲到 SharedPreference 之前使用密鑰加密數據(在 Android 上) ). 只需查看代碼即可了解詳細信息。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM