Code)をPythonで試してみました。一つであり、秘密鍵とメッセージ(データ)とハッシュ関数をもとに計算される。2104として公開されている。198にも採用されている。HMACを使ったデータ検証クライアントが送信したい「データ」と、そのデータを「秘密鍵」を使ってゴニョゴニョと符号化した「署名」をワンセットにして、Webサービスのエンドポイント(APIを受け付けるURL)に送信します。サービス側は、クライアントと共有の秘密鍵で受信データをゴニョゴニョ符号化し、それを受信した署名と一致するかどうか検証します。サービス側が送信したデータを、受信したクライアント側で検証するのも同様です。データをゴニョゴニョと符号化した署名の正体は何かというと、MD5とかSHA-256などのハッシュ関数を使って得たハッシュ値のことです。ハッシュ関数とは、任意長のビット列から規則性のない固定長のビット列を生成する関数、手順のことをいう。一般に、ハッシュ関数への入力データは「メッセージ」、ハッシュ関数からの出力データは「ハッシュ値」「メッセージダイジェスト」「フィンガープリント」などと呼ばれる。ハッシュ関数は一方向関数であるため、出力データから入力データを推定することは極めて難しい。今どきのプログラミング言語Python(3.7.3を使用)はハッシュもHMACも標準装備しています。送信側を想定して、送信データ(sendData)と秘密鍵(secret)から署名(sig)を作成してみましょう。ハッシュ関数にSHA-256を使いました。b'OF\xe1\xb8\xff\xe2)b\x95g|/\rO\xe9U\x84\x9b\xf5\xdd\xbe\x10@,AW\xe6\xa6\x10x\xbaO'sigは256ビット長の非ASCIIを含むバイナリなので、WebサービスのAPI仕様にもよりますが、Base64などを使ってASCIIに変換してから送受信します。16進数64桁のASCII文字列形式でハッシュ値を得ることも可能です。digestmod=hashlib.sha256).hexdigest()'4f46e1b8ffe2296295677c2f0d4fe955849bf5ddbe10402c4157e6a61078ba4f'あとは、APIの仕様にしたがって、Requestsなどを使いデータと署名を送信すればOK。(割愛)受信側を想定した、受信データを検証するプログラムです。Truecompare_digest()は符合同士が一致するかどうか検証する関数で、一致すればTrueを返します。送信側と受信側で、同じデータ、秘密鍵、ハッシュ関数を使っているので、compareがTrueになるのは当然ですね。compareがFalseになったら、受信データは偽物ということです。hexdigestで良さそうですが非推奨とのこと。compare_digest()を使うことをお奨めします。3.7.3ドキュメントより以上です。画像ファイルサイズを変更。Automatorでクイックアクション化。ファイル名をハッシュ値でリネーム。Automatorでクイックアクション化。BottleでWebSocketを試す。コメントをキャンセルメールアドレスが公開されることはありません。上に表示された文字を入力してください。コメントデータの処理方法の詳細はこちらをご覧ください。画像ファイルサイズを変更。Automatorでクイックアクション化。ファイル名をハッシュ値でリネーム。Automatorでクイックアクション化。DockerでHTTPS-PORTAL使うとHTTPSサイトの構築が超絶簡単DockerでWordPress+MySQL+phpMyAdmin+WSGIのプラクティスBB-8のプラモデルを作りました。プラモデル作りを再開。BottleでWebSocketを試す。fastenersで排他ロックを試す。Blue-black.ink。