gpt4 book ai didi

github - Dart 常量时间字符串比较

转载 作者:行者123 更新时间:2023-12-01 12:38:42 24 4
gpt4 key购买 nike

我正在 dart 中实现一个 github push hook 监听器,我遇到了这个文档:https://developer.github.com/webhooks/securing/

写在哪里:

Using a plain == operator is not advised. A method like secure_compare performs a “constant time” string comparison, which renders it safe from certain timing attacks against regular equality operators.

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

最佳答案

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

bool secureCompare(String a, String b) {
if(a.codeUnits.length != b.codeUnits.length)
return false;

var r = 0;
for(int i = 0; i < a.codeUnits.length; i++) {
r |= a.codeUnitAt(i) ^ b.codeUnitAt(i);
}
return r == 0;
}

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

关于github - Dart 常量时间字符串比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27006687/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com