Flutter BIP66标准验证插件dart_bip66的使用
Flutter BIP66标准验证插件dart_bip66的使用
BIP66
是一种严格的DER签名编码/解码规范。更多详细信息可以查看 BIP66。
说明
- 该模块仅适用于二进制补码数字。
- BIP66 不会检查
r
或s
是否完全有效。check
/decode
不会检查r
或s
是否大于33字节或是否表示椭圆曲线上的有效点。encode
不会检查r
/s
是否表示椭圆曲线上的有效点。
示例
import 'dart:typed_data';
import 'package:convert/convert.dart';
import 'package:dart_bip66/dart_bip66.dart';
void main() {
// 示例r值
Uint8List r = Uint8List.fromList(hex.decode(
'1ea1fdff81b3a271659df4aad19bc4ef83def389131a36358fe64b245632e777'));
// 示例s值
Uint8List s = Uint8List.fromList(hex.decode(
'29e164658be9ce810921bf81d6b86694785a79ea1e52dbfa5105148d1f0bc1'));
// 对r和s进行编码
var encodedSignature = der.encode(DER(r: r, s: s));
// 打印编码后的结果
print(encodedSignature);
// 输出: [48, 67, 2, 32, 30, 161, 253, 255, 129, 179, 162, 113, 101, 157, 244, 170, 209, 155, 196, 239, 131, 222, 243, 137, 19, 26, 54, 53, 143, 230, 75, 36, 86, 50, 231, 119, 2, 31, 41, 225, 100, 101, 139, 233, 206, 129, 9, 33, 191, 129, 214, 184, 102, 148, 120, 90, 121, 234, 30, 82, 219, 250, 81, 5, 20, 141, 31, 11, 193]
// 示例签名数据
Uint8List signature = Uint8List.fromList(hex.decode(
'304302201ea1fdff81b3a271659df4aad19bc4ef83def389131a36358fe64b245632e777021f29e164658be9ce810921bf81d6b86694785a79ea1e52dbfa5105148d1f0bc1'));
// 解码签名数据
DER decodedSignature = der.decode(signature);
// 打印解码后的结果
print(decodedSignature);
// 输出: 304302201ea1fdff81b3a271659df4aad19bc4ef83def389131a36358fe64b245632e777021f29e164658be9ce810921bf81d6b86694785a79ea1e52dbfa5105148d1f0bc1
// 对解码后的签名数据进行编码
var reEncodedSignature = der.encode(decodedSignature);
// 打印重新编码后的结果
print(reEncodedSignature);
// 输出: [48, 67, 2, 32, 30, 161, 253, 255, 129, 179, 162, 113, 101, 157, 244, 170, 209, 155, 196, 239, 131, 222, 243, 137, 19, 26, 54, 53, 143, 230, 75, 36, 86, 50, 231, 119, 2, 31, 41, 225, 100, 101, 139, 233, 206, 129, 9, 33, 191, 129, 214, 184, 102, 148, 120, 90, 121, 234, 30, 82, 219, 250, 81, 5, 20, 141, 31, 11, 193]
}
更多关于Flutter BIP66标准验证插件dart_bip66的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html
1 回复