Flutter密钥派生插件catalyst_key_derivation的使用
内容 #
特性 #
此包为Flutter提供了BIP32-Ed25519 Cardano HD密钥派生(SLIP-0023)。
底层实现是用Rust编写的,并通过 flutter_rust_bridge 转换到Flutter。
参考资料 #
需求 #
- Dart: 3.5.0+
- Flutter: 3.27.3+
安装 #
dependencies:
catalyst_key_derivation: any # 或者在Pub上的最新版本
Web设置 #
flutter_rust_bridge 需要自定义跨源头,以便能够在不同的源之间共享缓冲区。
- 当通过
flutter run
运行应用程序时,请遵循: 当flutter运行时 - 当通过Web服务器部署应用程序时,请确保从您的服务器设置这些头: web-cross-origin#background
示例 #
import 'package:catalyst_key_derivation/catalyst_key_derivation.dart';
Future<void> main() async {
// 在应用程序生命周期内调用一次init,以便在使用该包之前进行初始化
await CatalystKeyDerivation.init();
const keyDerivation = CatalystKeyDerivation();
final xprv = await keyDerivation.deriveMasterKey(
mnemonic: ‘prevent company field green slot measure chief hero apple task eagle sunset endorse dress seed’,
);
print(‘主xprv ${xprv.toHex()}’);
final xpub = await xprv.derivePublicKey();
print(‘主xpub ${xpub.toHex()}’);
final data = [1, 2, 3, 4];
final sig = await xprv.sign(data);
final checkXprvSig = await xprv.verify(data, signature: sig);
print(‘使用xprv验证签名: $checkXprvSig’);
final checkXpubSig = await xpub.verify(data, signature: sig);
print(‘使用xpub验证签名: $checkXpubSig’);
const path = “m/1852’/1815’/0’/2/0”;
final childXprv = await xprv.derivePrivateKey(path: path);
print(‘派生xprv路径 $path: ${childXprv.toHex()}’);
final childXprvHex = childXprv.toHex();
print(‘子xprv十六进制表示 $childXprvHex’);
xprv.drop();
print(‘主xprv已删除 ${xprv.toHex()}’);
}
如何贡献更改 #
flutter_rust_bridge 用于作为Rust和Flutter之间的桥梁。 要添加或更新此包提供的现有功能,请遵循以下步骤:
- 设置flutter_rust_bridge
- 在/rust/src/*中修改Rust代码
- 通过 earthly 生成Flutter绑定:
earthly +code-generator --local true
- 更新引用了Rust暴露API的Flutter代码
- 提交您的更改并提出PR
支持 #
在GitHub 问题跟踪器 上发布问题和功能请求。 请阅读我们的 CONTRIBUTING 以了解如何贡献的指南。
许可证 #
根据 Apache License, Version 2.0 或 MIT license 选择任一许可证。
除非您明确声明,否则任何有意提交给本仓库包含在内的贡献,如Apache-2.0许可证所定义的,应被双重许可为上述许可证,没有任何额外条款或条件。
更多关于Flutter密钥派生插件catalyst_key_derivation的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter密钥派生插件catalyst_key_derivation的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
catalyst_key_derivation
是一个用于 Flutter 的插件,主要用于密钥派生操作。它通常用于从主密钥生成子密钥,这在加密、解密以及其他安全相关的应用中非常有用。以下是如何在 Flutter 项目中使用 catalyst_key_derivation
插件的基本步骤:
1. 添加依赖
首先,你需要在 pubspec.yaml
文件中添加 catalyst_key_derivation
插件的依赖。
dependencies:
flutter:
sdk: flutter
catalyst_key_derivation: ^1.0.0 # 请使用最新版本
然后运行 flutter pub get
来获取依赖。
2. 导入包
在你的 Dart 文件中导入 catalyst_key_derivation
包。
import 'package:catalyst_key_derivation/catalyst_key_derivation.dart';
3. 使用插件进行密钥派生
catalyst_key_derivation
插件通常提供了一些方法来执行密钥派生操作。以下是一个简单的示例,展示如何使用该插件进行密钥派生。
void main() async {
// 主密钥
final masterKey = 'your-master-key';
// 派生密钥的参数
final index = 0; // 子密钥的索引
final length = 32; // 派生密钥的长度(以字节为单位)
// 派生密钥
try {
final derivedKey = await CatalystKeyDerivation.deriveKey(
masterKey: masterKey,
index: index,
length: length,
);
print('Derived Key: $derivedKey');
} catch (e) {
print('Error deriving key: $e');
}
}
4. 处理错误
在实际应用中,密钥派生可能会失败,因此你需要处理可能的异常。catalyst_key_derivation
插件可能会抛出不同类型的异常,例如无效的输入或派生过程中的错误。
5. 进一步使用
根据你的具体需求,你可能需要将派生出的密钥用于加密、解密或其他安全操作。你可以将派生出的密钥传递给其他加密库,如 flutter_secure_storage
或 pointycastle
,以完成更复杂的加密任务。
6. 注意事项
- 安全性:密钥派生是一个关键的安全操作,确保你的主密钥是安全的,并且不要在不安全的环境中存储或传输派生出的密钥。
- 性能:密钥派生操作可能会消耗一定的计算资源,尤其是在处理大量数据时。确保你的应用在性能和安全之间取得平衡。
7. 参考文档
如果你需要更详细的信息或遇到问题,可以查看 catalyst_key_derivation
插件的官方文档或 GitHub 仓库。
示例项目
你可以创建一个简单的 Flutter 项目来测试这个插件,确保它能够在你的环境中正常工作。
flutter create key_derivation_example
cd key_derivation_example