dart - RSA 私钥的 Dart 加密
问题描述
我正在使用 dart pointycastle 库(基于 java bouncycastle)编写一个小库。
这些库不包含任何将私钥写入磁盘的方法。
所以我需要先用密码加密后将密钥写入磁盘。
我采取的方法是:
- 将键的每个组件(模数、指数...)编码为 base64 字符串(从 bigint 转换)
- 将每个 base 64 编码组件写入一个公共字符串
- 使用 AES 加密公共字符串
- base64 编码结果
- 将 base 64 编码结果写入文件。
这是否被认为是存储私钥的安全方式。
我发现我用来将密码短语延长到 128 位的这段代码:
Key stretch(int desiredKeyLength,
{int iterationCount = 100, Uint8List salt}) {
if (salt == null) {
salt = SecureRandom(desiredKeyLength).bytes;
}
final params = Pbkdf2Parameters(salt, iterationCount, desiredKeyLength);
final pbkdf2 = PBKDF2KeyDerivator(Mac('SHA-1/HMAC'))..init(params);
return Key(pbkdf2.process(_bytes));
}
这足够吗?
解决方案
推荐阅读
- string - 将 Go 符文转换为字符串
- visual-studio-code - 部署扩展时出错:“没有注册可以提供视图数据的数据提供者”
- mysql - 在 Jtable 错误中显示数据库中的数据
- php - 仅使用 php 代码在模态框中加载完整的 HTML 页面
- c# - 如何正确评估 .GetType().IsInstanceOfType(typeof(Interface<>))
- ios - ISSUE: 重新加载 tableView 部分会隐藏其他 tableView 部分
- python - Scipy stats.rv_continuous 从二维数据中查找 MLE
- javascript - 文本框 onChange 事件和 Datepicker onSelect 冲突
- java - 填充在 GeometricObject 中具有私有访问权限
- javascript - react native 中的获取请求没有得到完整的网页