{
  "title": "Controlled BitTorrent v1 infohash comparison",
  "date": "2026-10-28",
  "environment": {
    "python": "3.12.14",
    "os": "Windows"
  },
  "scope": "Generated bytes and canonical bencoding only. No client, peer, tracker, download, or speed test.",
  "recipe": {
    "payload_python": "bytes(range(256)) * 2400",
    "changed_byte": {
      "offset_zero_based": 42,
      "operation": "XOR 1",
      "before": 42,
      "after": 43
    },
    "infohash": "SHA1(bencode(info))",
    "wrapper": "bencode({comment: outer_comment, info: info})",
    "dictionary_order": "Byte-string keys sorted lexicographically; integers encoded in decimal without leading zeros.",
    "repeated_blocks": "The deterministic payload repeats every 256 bytes. Identical full-sized pieces therefore have identical hashes."
  },
  "sources": [
    "https://www.bittorrent.org/beps/bep_0003.html",
    "https://www.bittorrent.org/beps/bep_0009.html",
    "https://www.bittorrent.org/beps/bep_0052.html"
  ],
  "cases": [
    {
      "id": "baseline",
      "label_ko": "기준 표본",
      "payload_bytes": 614400,
      "payload_sha256": "3c7e7ecba97572f06d6792084bf56a8b2e428534e1e36f0bdf009facfac29512",
      "name": "sample.bin",
      "piece_length": 262144,
      "piece_sizes": [
        262144,
        262144,
        90112
      ],
      "piece_sha1": [
        "37ef77696fc255bf53b4cdd014b223676f2dc8bb",
        "37ef77696fc255bf53b4cdd014b223676f2dc8bb",
        "7cec2eb87dfda8e246781bfaacede692233f0472"
      ],
      "info_bencoded_hex": "64363a6c656e6774686936313434303065343a6e616d6531303a73616d706c652e62696e31323a7069656365206c656e6774686932363231343465363a70696563657336303a37ef77696fc255bf53b4cdd014b223676f2dc8bb37ef77696fc255bf53b4cdd014b223676f2dc8bb7cec2eb87dfda8e246781bfaacede692233f047265",
      "info_bytes": 131,
      "infohash_v1": "3eb4c823ece82976dfb969a99999ef8d7e2916d9",
      "outer_comment": "baseline",
      "wrapper_sha256": "f69d04837b37bbab48948a0c7975d875c0586c39ed993fa9d38d0523a0eca052",
      "same_payload_as_baseline": true,
      "same_infohash_as_baseline": true
    },
    {
      "id": "comment",
      "label_ko": "바깥 주석만 변경",
      "payload_bytes": 614400,
      "payload_sha256": "3c7e7ecba97572f06d6792084bf56a8b2e428534e1e36f0bdf009facfac29512",
      "name": "sample.bin",
      "piece_length": 262144,
      "piece_sizes": [
        262144,
        262144,
        90112
      ],
      "piece_sha1": [
        "37ef77696fc255bf53b4cdd014b223676f2dc8bb",
        "37ef77696fc255bf53b4cdd014b223676f2dc8bb",
        "7cec2eb87dfda8e246781bfaacede692233f0472"
      ],
      "info_bencoded_hex": "64363a6c656e6774686936313434303065343a6e616d6531303a73616d706c652e62696e31323a7069656365206c656e6774686932363231343465363a70696563657336303a37ef77696fc255bf53b4cdd014b223676f2dc8bb37ef77696fc255bf53b4cdd014b223676f2dc8bb7cec2eb87dfda8e246781bfaacede692233f047265",
      "info_bytes": 131,
      "infohash_v1": "3eb4c823ece82976dfb969a99999ef8d7e2916d9",
      "outer_comment": "revised note",
      "wrapper_sha256": "cf1315d414828bbcaac98aa3c310a0c3bb04faee55dd9f2e57d46d2298b4a75e",
      "same_payload_as_baseline": true,
      "same_infohash_as_baseline": true
    },
    {
      "id": "name",
      "label_ko": "info.name만 변경",
      "payload_bytes": 614400,
      "payload_sha256": "3c7e7ecba97572f06d6792084bf56a8b2e428534e1e36f0bdf009facfac29512",
      "name": "renamed.bin",
      "piece_length": 262144,
      "piece_sizes": [
        262144,
        262144,
        90112
      ],
      "piece_sha1": [
        "37ef77696fc255bf53b4cdd014b223676f2dc8bb",
        "37ef77696fc255bf53b4cdd014b223676f2dc8bb",
        "7cec2eb87dfda8e246781bfaacede692233f0472"
      ],
      "info_bencoded_hex": "64363a6c656e6774686936313434303065343a6e616d6531313a72656e616d65642e62696e31323a7069656365206c656e6774686932363231343465363a70696563657336303a37ef77696fc255bf53b4cdd014b223676f2dc8bb37ef77696fc255bf53b4cdd014b223676f2dc8bb7cec2eb87dfda8e246781bfaacede692233f047265",
      "info_bytes": 132,
      "infohash_v1": "f84fb6c26cd7e61f2b8849843fdf3c876d54b361",
      "outer_comment": "baseline",
      "wrapper_sha256": "48bb0be50be4f2fb6dca996d3cbcc24ca04b9e7913199dd89ed3b7b263012dd9",
      "same_payload_as_baseline": true,
      "same_infohash_as_baseline": false
    },
    {
      "id": "piece_length",
      "label_ko": "조각 크기만 변경",
      "payload_bytes": 614400,
      "payload_sha256": "3c7e7ecba97572f06d6792084bf56a8b2e428534e1e36f0bdf009facfac29512",
      "name": "sample.bin",
      "piece_length": 524288,
      "piece_sizes": [
        524288,
        90112
      ],
      "piece_sha1": [
        "6c10df9ee9fa4b1c8495b19becb7f8ae8a07ad96",
        "7cec2eb87dfda8e246781bfaacede692233f0472"
      ],
      "info_bencoded_hex": "64363a6c656e6774686936313434303065343a6e616d6531303a73616d706c652e62696e31323a7069656365206c656e6774686935323432383865363a70696563657334303a6c10df9ee9fa4b1c8495b19becb7f8ae8a07ad967cec2eb87dfda8e246781bfaacede692233f047265",
      "info_bytes": 111,
      "infohash_v1": "e468b4f7d49433cdb2cf70b12ef392f1c1d92b25",
      "outer_comment": "baseline",
      "wrapper_sha256": "899d3c3ed53cbc73a8c58ae30bd5c4ea1dce05a194f77724fa3ce5ab35c3b077",
      "same_payload_as_baseline": true,
      "same_infohash_as_baseline": false
    },
    {
      "id": "payload_byte",
      "label_ko": "내용 1바이트 변경",
      "payload_bytes": 614400,
      "payload_sha256": "bc6652a859ba522198010f70b024e072645e3c4f7c49b041cb9c00d0471ff4db",
      "name": "sample.bin",
      "piece_length": 262144,
      "piece_sizes": [
        262144,
        262144,
        90112
      ],
      "piece_sha1": [
        "eb52f1bbd70f0f2f653bedcc621c2f32de6d7b25",
        "37ef77696fc255bf53b4cdd014b223676f2dc8bb",
        "7cec2eb87dfda8e246781bfaacede692233f0472"
      ],
      "info_bencoded_hex": "64363a6c656e6774686936313434303065343a6e616d6531303a73616d706c652e62696e31323a7069656365206c656e6774686932363231343465363a70696563657336303aeb52f1bbd70f0f2f653bedcc621c2f32de6d7b2537ef77696fc255bf53b4cdd014b223676f2dc8bb7cec2eb87dfda8e246781bfaacede692233f047265",
      "info_bytes": 131,
      "infohash_v1": "63a76e0a7e3fbc8c4c5e90da20dd09388b56f91c",
      "outer_comment": "baseline",
      "wrapper_sha256": "693d82e5b85c18e7936f6a7da4feb4aace8fee7130002ff575e7e7ada7d4ee3e",
      "same_payload_as_baseline": false,
      "same_infohash_as_baseline": false
    }
  ]
}
