{
  "slug": "rabbit-cipher",
  "name": "gizza-ai/rabbit-cipher",
  "version": "0.1.0",
  "title": "Rabbit Cipher — Encrypt/decrypt with the Rabbit stream cipher — gizza.ai",
  "description": "Encrypt or decrypt text with the Rabbit stream cipher (RFC 4503 / eSTREAM) — 128-bit key, optional 64-bit IV, hex or base64. Free, in-browser, no upload.",
  "tags": [
    "rabbit",
    "rabbit cipher",
    "rabbit encrypt",
    "rabbit decrypt",
    "estream",
    "rfc 4503",
    "stream cipher"
  ],
  "category": "security",
  "urls": {
    "page": "https://gizza.ai/tools/rabbit-cipher/",
    "markdown": "https://gizza.ai/tools/rabbit-cipher/index.md",
    "descriptor": "https://gizza.ai/tools/rabbit-cipher/tool.json",
    "deep_link_example": "https://gizza.ai/tools/rabbit-cipher/?data=Text%20to%20encrypt%E2%80%A6&operation=encrypt&key=16-char%20passphrase%2C%20or%20encoded%20key&iv=leave%20empty%20for%20no%20IV&key_format=text&format=hex"
  },
  "cli": "gizza tool rabbit-cipher \"Text to encrypt…\" 'key=16-char passphrase, or encoded key'",
  "tool": {
    "description": "Encrypt or decrypt data with the Rabbit stream cipher (RFC 4503 / eSTREAM), a fast 128-bit-key, 64-bit-IV stream cipher. operation = encrypt (default) or decrypt — Rabbit is symmetric. key must resolve to exactly 16 bytes: a 16-char UTF-8 passphrase (key_format=text, default) or hex/base64 (key_format=encoded). iv is optional and, when given, must resolve to exactly 8 bytes; it must match on both sides. The ciphertext (and an encoded key/IV) use format = hex (default) or base64; the plaintext is UTF-8. Keys and IVs are read most-significant-byte first, matching the RFC 4503 test vectors.",
    "parameters": {
      "additionalProperties": false,
      "properties": {
        "data": {
          "type": "string"
        },
        "format": {
          "default": "hex",
          "enum": [
            "hex",
            "base64"
          ],
          "type": "string"
        },
        "iv": {
          "type": "string"
        },
        "key": {
          "type": "string"
        },
        "key_format": {
          "default": "text",
          "enum": [
            "text",
            "encoded"
          ],
          "type": "string"
        },
        "operation": {
          "default": "encrypt",
          "enum": [
            "encrypt",
            "decrypt"
          ],
          "type": "string"
        }
      },
      "required": [
        "data",
        "key"
      ],
      "type": "object"
    }
  }
}