1

我正在寻找一个 dart 包,以便在 Flutter 应用程序中实现密钥交换协议(椭圆曲线 Diffie-Hellman)。所以流程会是这样的:

  • 应用程序在登录期间生成一个密钥对并将公钥发送到服务器(因此每次登录都会生成一个新的密钥对)
  • 服务器发回它刚刚生成的公钥
  • 应用程序从它的私钥和服务器的公钥生成一个密钥
  • app 包含所有后续发送到服务器的消息的 hmac

我尝试使用ed25519_dart 包生成密钥,但它不起作用。由于integer literal can't be represented in 64 bits错误,我的应用程序甚至无法启动,飞镖分析器也指出了这一点。

我还看了pointycastle,但它似乎不支持 Diffie-Hellman。

Diffie–Hellman 包也不适合我。提供的示例在第一行抛出此异常:

FormatException: Invalid radix-16 number
FFFFFFFFFFFFFFFFC90FDAA22168C234C4C6628B80DC1CD129024E088A67CC74020BBEA63B1...

知道如何在 Flutter 应用程序中实现我想要做的事情吗?

4

1 回答 1

0

我假设的错误与 BigNum 和 Dart 2 有关。Pointy Castle 在 GitHub 上有一个分支,他们正在切换到 Dart 2.0。

以下是您可以获得密钥对的一些方法:

  • 使用原生 SDK(Java、Kotlin 或 C++)并使用平台通道
  • 使用尖尖城堡 Dart 2.0 分支
  • 试试 flutter_sodium 包。它适用于 Dart 2,但正在进行中。

希望这会有所帮助。我也在尝试找出最好的方法!

于 2018-07-20T03:34:05.800 回答