{
  "slug": "scrypt-derive",
  "name": "gizza-ai/scrypt-derive",
  "version": "0.1.0",
  "title": "scrypt Key Derivation — derive a key from a password — gizza.ai",
  "description": "Derive a key from a password with the scrypt memory-hard KDF (RFC 7914). Set N, r, p, salt and hex/base64 output — free and fully in-browser.",
  "tags": [
    "scrypt",
    "key derivation",
    "kdf",
    "memory-hard",
    "derive key from password",
    "rfc 7914",
    "password based key derivation",
    "scrypt online"
  ],
  "category": "security",
  "urls": {
    "page": "https://gizza.ai/tools/scrypt-derive/",
    "markdown": "https://gizza.ai/tools/scrypt-derive/index.md",
    "descriptor": "https://gizza.ai/tools/scrypt-derive/tool.json",
    "deep_link_example": "https://gizza.ai/tools/scrypt-derive/?password=The%20password%20%2F%20passphrase&mode=derive&salt=Unique%20random%20salt%20%28recommended%29&salt_encoding=utf8&n=16384&r=8&p=1&length=32&encoding=hex&expected=hex%20or%20base64%20key%20to%20check%20against"
  },
  "cli": "gizza tool scrypt-derive \"The password / passphrase\"",
  "tool": {
    "description": "Derive a cryptographic key from a password using the scrypt memory-hard key-derivation function (RFC 7914), or verify a password reproduces a key. mode=derive (default) produces a key; mode=verify checks the password+params against the `expected` key. Configure the cost parameters N (power of two, default 16384), r (block size, default 8) and p (parallelization, default 1), the salt (with salt_encoding utf8/hex/base64), the output length in bytes (default 32), and the output encoding (hex default or base64). scrypt is memory-hard, resisting GPU/ASIC brute-force better than PBKDF2. Deterministic — the same inputs always produce the same key. Runs locally; the password never leaves the device.",
    "parameters": {
      "additionalProperties": false,
      "properties": {
        "encoding": {
          "default": "hex",
          "enum": [
            "hex",
            "base64"
          ],
          "type": "string"
        },
        "expected": {
          "type": "string"
        },
        "length": {
          "maximum": 1024,
          "minimum": 1,
          "type": "integer"
        },
        "mode": {
          "default": "derive",
          "enum": [
            "derive",
            "verify"
          ],
          "type": "string"
        },
        "n": {
          "maximum": 1073741824,
          "minimum": 2,
          "type": "integer"
        },
        "p": {
          "maximum": 1024,
          "minimum": 1,
          "type": "integer"
        },
        "password": {
          "type": "string"
        },
        "r": {
          "maximum": 1024,
          "minimum": 1,
          "type": "integer"
        },
        "salt": {
          "type": "string"
        },
        "salt_encoding": {
          "default": "utf8",
          "enum": [
            "utf8",
            "hex",
            "base64"
          ],
          "type": "string"
        }
      },
      "required": [
        "password"
      ],
      "type": "object"
    }
  }
}