key_textが64文字以上の場合、HMacSha256の計算が正しくない。この場合、何を修正すべきでしょうか?
string text = "Hello";
string key_text = "12345678901234567890123456789012345678901234";
https://www.devglan.com/online-tools/hmac-sha256-online-> 7558a77ff19ed6cb4777355e4bbc4772759a8130e1bb0913ba62b88411fdbaf8
テストスクリプト -> 2025.02.27 22:28:43.792 Sha256TestFile (EURUSD,M5) 6d8ee9dc1d16261fd986fafb97d919584aa206ca76706fb3deccc63ab2b7f6b
- DevGlan
- www.devglan.com
string text = "Hello";
string key_text = "12345678901234567890123456789012345678901234";
https://www.devglan.com/online-tools/hmac-sha256-online-> 7558a77ff19ed6cb4777355e4bbc4772759a8130e1bb0913ba62b88411fdbaf8
テストスクリプト -> 2025.02.27 22:28:43.792 Sha256TestFile (EURUSD,M5) 6d8ee9dc1d16261fd986fafb97d919584aa206ca76706fb3deccc63ab2b7f6b
ターミナルで試したところ、オンラインハッシュツールと同じ結果が出た:
2025.02.28 12:37:16.468 hashin_example_code (EURUSD,M5) 7558A77FF19ED6CB4777355E4BBC4772759A8130E1BB0913BA62B88411FDBAF8
void Hash() { // ハッシュ化するテキスト string text = "Hello"; string key_text = "1234567890123456789012345678901234567890123456789012345678901234"; HMacSha256 myhash(key_text, text); Print(myhash.hexval); }あなたのコードを共有したいかもしれない。
はい、オリジナルのSha256Algorithm.mqhでは正しく動作します。いくつか変更を加えたのですが、それがうまくいかなかった理由でしょうか?
string CSha256Class::GetHex( void ) { string result = "" ; /* result += UintToHex(h0); result += UintToHex(h1); result += UintToHex(h2); result += UintToHex(h3); result += UintToHex(h4); result += UintToHex(h5); result += UintToHex(h6); result += UintToHex(h7); */ result += StringFormat ( "%.2x" ,h0); result += StringFormat ( "%.2x" ,h1); result += StringFormat ( "%.2x" ,h2); result += StringFormat ( "%.2x" ,h3); result += StringFormat ( "%.2x" ,h4); result += StringFormat ( "%.2x" ,h5); result += StringFormat ( "%.2x" ,h6); result += StringFormat ( "%.2x" ,h7); return (result); }
お手数かけてすみません!
- www.mql5.com
- 無料取引アプリ
- 8千を超えるシグナルをコピー
- 金融ニュースで金融マーケットを探索
新しい記事「MQL5でSHA-256暗号化アルゴリズムをゼロから実装する」はパブリッシュされました:
取引環境でSHA-256を実装する際、わずかなミリ秒の遅延が取引結果に影響するため、パフォーマンスの最適化は非常に重要です。カスタム実装により、組み込み関数では不可能な最適化が可能となります。
取引システムでは、暗号化処理に特有のパターンが見られます。たとえば、注文署名はタイムスタンプ、銘柄、数量など似たような要素を含みます。これらのパターンを活用することで、取引関連データ構造に特化したSHA-256の最適化が可能です。
典型的な取引シナリオにおける注文処理について考えてみましょう。各注文には取引ペア、注文タイプ、数量、価格、タイムスタンプなど複数の情報が必要です。一般的な実装では、これらのデータは毎回まったく新しい入力として処理されます。しかし、多くの要素が一定であったり、予測可能なパターンに沿って変化することに着目すれば、この処理を効率化することが可能です。
作者: Abdulkudus Okatengwu Kadir