決定論ツールの結果に添える「指紋(receipt)」を生成し、別環境で再計算して一致を照合します。
これは真偽証明ではありません
改ざん不能な署名や正しさの証明ではなく、同じ入力・同じツール版なら誰が計算しても同じ hex になるという「決定論一致」の確認です。入力
結果
仕組みとAIO呼び出し
- 指紋 =
sha256( 長さ:正準化input + 長さ:tool_id + 長さ:tool_version + 長さ:正準化output ) - 長さプレフィックス連結で境界を一意化し、別入力が同じ指紋になる衝突を防ぎます。
- 時刻・乱数を一切混ぜないため、同じ入力・ツール版なら誰がいつ計算しても同じ hex になります。
- URLクエリ例(非機密のみ):
receipt_verifier.html?input=hello&tool_id=sha256_hash&tool_version=1.0.0&output=2cf24dba...&format=json format=jsonはレシートを含む機械可読JSON、format=rawは hex 文字列のみを表示します。
検証可能レシートは、菊丸ツゥルズの決定論ツールで得た「入力」と「出力」のペアに対して、SHA-256ベースの「指紋(receipt)」を生成・照合するツールです。入力・出力をそれぞれ正準化(改行をLFに統一、行末空白を除去、Unicode正規化、JSONはキーを昇順ソート)したうえで、tool_idとtool_versionとあわせて長さプレフィックス付きで連結し、SHA-256でハッシュ化します。同じ入力・同じツールバージョンであれば、誰が・いつ計算しても同じhex値になることを確認するための仕組みで、改ざん防止の署名や正しさの証明そのものではありません。
使い方・サンプル・結果例・注意点
使い方
入力・tool_id・tool_version・出力を入力欄に記入して「指紋を生成」を押すと、SHA-256のレシート(hex文字列)が生成されます。照合したいhexがあれば「照合する指紋」欄に入れると一致判定も行われます。
サンプル入力
input: hello tool_id: sha256_hash tool_version: 1.0.0 output: 2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824
結果例
上記の値を入力して「指紋を生成」を押すと、入力helloと出力のSHA-256ハッシュ値、tool_idとtool_versionを正準化・長さプレフィックス連結したうえで再度SHA-256をかけたレシート(別のhex文字列)が生成されます。同じ4つの値(input・tool_id・tool_version・output)を別の環境やタイミングで入力しても、まったく同じレシートが得られます。「照合する指紋」欄に過去に生成したレシートを貼り付けると、一致すれば緑の「✔ 一致」、異なれば赤の「✘ 不一致」と表示されます。
注意点
このツールは真偽証明や改ざん防止の電子署名ではありません。同じ入力・出力・tool_id・tool_versionの組み合わせから、同じハッシュ値が再現できることを確認するための「決定論一致」の確認用です。短い入力はハッシュから推測され得るため、パスワードや個人情報・機密情報は入力しないでください。tool_versionを入力しないとレシートは生成されません(誤照合防止のため)。入力・出力はそれぞれ200,000文字までです。JSON形式の入出力は、オブジェクトまたは配列として正しくパースできる場合のみキー昇順ソートなどのJSON正準化が適用され、それ以外はテキストとして正準化されます。
こんなときに使えます
- AIエージェント開発者が、決定論的な菊丸ツゥルズ(json_formatterやsha256_hashなど)の実行結果に対してレシートを発行し、後で同じ結果が再現できるかを別環境で検証する
- QAエンジニアが、テスト実行時の入力・出力ペアからレシートを生成し、リリース前後で同じツールバージョンの出力が変わっていないかを照合する
- ドキュメント作成者が、チュートリアルに掲載するツールの実行例について、入力・出力・レシートをセットで記録し、読者が再現性を確認できるようにする
- 複数人で同じ決定論ツールを使う開発チームが、各自の実行結果のレシートを突き合わせることで、環境差異による出力の違いがないかを確認する
よくある質問
tool_versionを入力しないとどうなりますか?
「tool_version を入力してください(未設定では指紋を生成しません)。」というエラーになり、レシートは生成されません。バージョンが異なる出力同士を誤って同一視してしまうことを防ぐためです。
同じ入力でも改行コードや行末スペースが違うとレシートは変わりますか?
変わりません。正準化処理でCRLF/CRはLFに統一され、各行の行末の半角スペース・タブは除去されたうえでハッシュ化されるため、見た目上の改行・空白の違いは結果に影響しません。
JSON形式の入力・出力はキーの順番が違っても同じレシートになりますか?
なります。入力・出力がオブジェクトまたは配列としてパースできる場合、キーを再帰的に昇順ソートしてから比較するため、キーの記述順だけが異なるJSONは同じレシートになります(配列の要素順は保持されます)。
このレシートを他人に見せても安全ですか?
短い入力やよく使われる文字列の場合、ハッシュから元の値が推測される可能性があります。パスワードやAPIキー、個人情報などの機密情報はinput/outputに入れないでください。
「照合する指紋」が一致しない場合、何を確認すればいいですか?
input・output・tool_id・tool_versionのいずれかが、レシートを生成した時点と異なっている可能性があります。改行や空白の違いは正準化で吸収されますが、内容そのものの違いやtool_versionの食い違いがないか確認してください。
