2つの文字列を比較するには、現在strcmpまたはその変形の1つを使用しています。しかし、より多くの文字が一致するとstrcmpは時間がかかるため、タイミング攻撃の影響を受けやすくなります。 Windows上の標準ライブラリに定数時間文字列比較関数はありますか?常時文字列比較関数
0
A
答えて
-1
WindowsやVisual Studioにはこのような機能はありません。
少なくともstrcmpのような単純なものでは、自分自身で何かを払うことができます。
あなただけの平等を気にしている場合:
int strctcmp(const char*a, const char*b)
{
int r = 0;
for (; *a && *b; ++a, ++b)
{
r |= *a != *b;
}
return r;
}
あなたはソート可能な結果を必要と場合は、最長の文字列のすべてを処理する必要があります。
int strctcmp(const char*a, const char*b)
{
int r = 0, c;
for (;;)
{
c = *a - *b;
if (!r) r = c;
if (!*a && !*b) break;
if (*a) ++a;
if (*b) ++b;
}
return r;
}
これらは賢明な完璧なタイミングではなく、ネットワークベースの何らかのものには十分以上のものでなければなりません。
+0
コメントなしのDownvoteはとても役に立ちます – Anders
関連する問題
- 1. Cの文字列比較関数
- 2. 時間と文字列の比較
- 3. 文字列比較
- 4. 比較文字列
- 5. 文字列の反転後の文字列比較関数の問題
- 6. マップの文字列としての文字列、比較関数のカスタム
- 7. コマンドライン文字列変数の比較
- 8. 文字列と数値の比較 - Python
- 9. 複数値の文字列比較python
- 10. javascript - 文字列と数値の比較
- 11. 文字列の比較 - Java
- 12. Jinja2テンプレート - 文字列比較
- 13. Pythonの文字列比較
- 14. 文字列比較は
- 15. PHPの文字列比較
- 16. 文字列/パスの比較
- 17. フラスコ比較文字列
- 18. PHPの文字列比較
- 19. バイナリ文字列比較
- 20. DateTime、文字列の比較
- 21. Python文字列の比較
- 22. Java:文字列の比較
- 23. Javaの文字列比較
- 24. 文字列比較:100
- 25. bash文字列比較
- 26. AngularJS文字列比較
- 27. 比較文字列が
- 28. C++文字列の比較
- 29. JavaScriptを比較文字列
- 30. グローブ文字列の比較
固定ループの違いを蓄積している最中に、最大文字列の長さとパッドをゼロに制限しますか?または、私はあなたが文字列の暗号化ハッシュダイジェストを計算し、それを代わりに比較して、あらかじめ計算されたデータベースキーの内容に関するサイドバンド情報を放棄しないようにするかもしれないと思います。私はどのように効果的にWindowsの稀な文字列のキャッシュ/ページング効果をキャンセルするのかわかりません。 – doynax