Flutter 如何获得特定范围内的随机BigInt(Dart)

Flutter 如何获得特定范围内的随机BigInt(Dart),flutter,dart,encryption,cryptography,largenumber,Flutter,Dart,Encryption,Cryptography,Largenumber,如果以前有人问过这个问题,我很抱歉,但我找不到任何有帮助的解决方案 基本上,我有一个巨大的数字n,其中n是一个4000位的数字。显然,它不适合Dart中原语类型int所允许的64位 我需要找到一个随机数g,这样2≤ G≤ (n-1)。有没有办法生成这样一个随机数 我当前的解决方案: void _generatePrivateKey(){ 常量编号='0123456789'; final halfOfLength=N.toString().length~/2;//其中'N'是'BigInt'` 最

如果以前有人问过这个问题,我很抱歉,但我找不到任何有帮助的解决方案

基本上,我有一个巨大的数字
n
,其中
n
是一个4000位的数字。显然,它不适合Dart中原语类型
int
所允许的64位

我需要找到一个随机数
g
,这样
2≤ G≤ (n-1)
。有没有办法生成这样一个随机数

我当前的解决方案:

void _generatePrivateKey(){
常量编号='0123456789';
final halfOfLength=N.toString().length~/2;//其中'N'是'BigInt'`
最终长度=_rand.nextInt(半边长度)+半边长度;
final buffer=StringBuffer();
对于(var=0;<长度;++){
buffer.write(数字[_rand.nextInt(数字.长度)]);
}
_privateKey=BigInt.parse(buffer.toString());
}
我知道这不是一个好的解决方案,但这就是我目前所拥有的全部

包含一个实用程序文件,该文件带有一个将字节列表转换为字节的函数

以下是如何使用它生成4000位值:

import'dart:math';
导入“dart:键入的_数据”;
BigInt randomBigInt(){
常数大小=4000;
final random=random.secure();
最终生成器=字节生成器();
对于(变量i=0;i

或者,
decodeBigIntWithSign
可用于强制执行负面或正面结果。

也许此实现与构造函数结合可以作为一个起点。感谢您的回复。我当前的解决方案是使用方法
randomPrimeBigInt
,它接受一个
字节
参数。它生成一个素数,但这更好,因为我需要一个素数,因为我用这个数来加密。