{
  "slug": "xor-cipher",
  "name": "gizza-ai/xor-cipher",
  "version": "0.1.0",
  "title": "XOR Cipher — Repeating-key XOR for text, hex, and Base64 — gizza.ai",
  "description": "XOR text, hex, or Base64 data against a repeating key and output hex, Base64, or UTF-8. Symmetric encrypt/decrypt in your browser.",
  "tags": [
    "xor",
    "xor cipher",
    "xor encrypt",
    "xor decrypt",
    "repeating-key xor",
    "vigenere xor",
    "cryptopals",
    "hex xor",
    "base64 xor"
  ],
  "category": "security",
  "urls": {
    "page": "https://gizza.ai/tools/xor-cipher/",
    "markdown": "https://gizza.ai/tools/xor-cipher/index.md",
    "descriptor": "https://gizza.ai/tools/xor-cipher/tool.json",
    "deep_link_example": "https://gizza.ai/tools/xor-cipher/?data=Text%2C%20hex%2C%20or%20Base64%20to%20XOR%E2%80%A6&input=text&key=Repeating%20key%20%28must%20not%20be%20empty%29%E2%80%A6&key_format=text&output=hex"
  },
  "cli": "gizza tool xor-cipher \"Text, hex, or Base64 to XOR…\" 'key=Repeating key (must not be empty)…'",
  "tool": {
    "description": "Repeating-key XOR cipher: XOR `data` against a repeating `key`, byte by byte. XOR is symmetric — the same operation encrypts and decrypts. Use it for CTFs, obfuscation, interop, and learning only; it is not secure encryption.",
    "parameters": {
      "additionalProperties": false,
      "properties": {
        "data": {
          "description": "The data to XOR. Read as UTF-8 text by default, or decoded from hex/base64 when input=hex/base64.",
          "type": "string"
        },
        "input": {
          "default": "text",
          "description": "How to read data: text, hex, or base64.",
          "enum": [
            "text",
            "hex",
            "base64"
          ],
          "type": "string"
        },
        "key": {
          "description": "The non-empty repeating XOR key, read according to key_format.",
          "type": "string"
        },
        "key_format": {
          "default": "text",
          "description": "How to read the key: text, hex, or base64.",
          "enum": [
            "text",
            "hex",
            "base64"
          ],
          "type": "string"
        },
        "output": {
          "default": "hex",
          "description": "How to encode the XOR result: hex, base64, or utf8.",
          "enum": [
            "hex",
            "base64",
            "utf8"
          ],
          "type": "string"
        }
      },
      "required": [
        "data",
        "key"
      ],
      "type": "object"
    }
  }
}