Github Dart常量时间字符串比较

Github Dart常量时间字符串比较,github,hash,dart,Github,Hash,Dart,我正在dart中实现一个github推钩侦听器,我遇到了以下文档: 上面写着: 不建议使用普通==运算符。一种类似secure\u比较的方法 执行“常量时间”字符串比较,从而使其安全 来自对常规相等运算符的特定定时攻击 我必须比较两个哈希值是否相等。现在我想知道是否有一种方法可以在dart中比较恒定时间内的字符串?(阅读:dart中是否有字符串恒定时间比较函数?不是恒定时间,但您可以创建自己的比较函数,比较字符串中的每个代码单元,并且不会短路: bool secureCompare(字符串a、字

我正在dart中实现一个github推钩侦听器,我遇到了以下文档:

上面写着:

不建议使用普通==运算符。一种类似secure\u比较的方法 执行“常量时间”字符串比较,从而使其安全 来自对常规相等运算符的特定定时攻击

我必须比较两个哈希值是否相等。现在我想知道是否有一种方法可以在dart中比较恒定时间内的字符串?(阅读:dart中是否有字符串恒定时间比较函数?

不是恒定时间,但您可以创建自己的比较函数,比较字符串中的每个代码单元,并且不会短路:

bool secureCompare(字符串a、字符串b){
if(a.codeUnits.length!=b.codeUnits.length)
返回false;
var r=0;
对于(int i=0;i

只要两个输入字符串长度相同,此函数将执行恒定时间字符串比较。由于您正在比较哈希,这应该不是问题,但对于可变长度字符串,此方法仍然会泄漏计时信息,因为如果长度不相等,它会立即返回。

这里的术语“常量时间”似乎相当混乱。这通常用来表示O(1)。是的,这就是它的意思。