Nodes/ComfyUI EncryptMaster/EncryptMaster — Generate Passphrase
ComfyUI Node

EncryptMaster — Generate Passphrase

A passphrase generator that tells you its entropy, so you stop using 'password123'

By orion4d·Created 12 months ago·Updated 12 months ago· 5
EncryptMaster — Generate Passphrase
    • passphrase
    • entropy_bits
    • recipe
    moderandom_chars
    length20
    use_lowercasetrue
    use_uppercasetrue
    use_digitstrue
    use_symbolstrue
    exclude_ambiguoustrue
    diceware_wordlist_path
    num_words8
    separator-
    extra_digits_suffix0
    deterministic_seed-1

    Every cipher node in EncryptMaster is only as strong as the passphrase you feed it. AES-256-GCM and scrypt are doing real work, but scrypt's whole job is making brute force expensive - it can't save you if your "secret" is a word from the dictionary. That's why this pack ships a passphrase generator. It makes a strong passphrase for you and, unusually, tells you exactly how strong it is in bits of entropy.

    If that sounds like overkill for hiding a message in a PNG - sure, sometimes. But the author's whole framing is "generate a passphrase here and paste it into the cipher nodes," and honestly that's the right habit. One generated passphrase, used consistently, and you never have to worry that the weakest link is you.

    Two modes

    • random_chars (default) - a classic random string from a configurable character set. Toggle use_lowercase, use_uppercase, use_digits, use_symbols, and exclude_ambiguous (default on - it strips lookalikes like Il1O0oB8S5Z2 so the result is usable by humans). length defaults to 20, which is decent; the README suggests aiming at 24+ characters.
    • diceware - memorable but strong, the EFF-style "correct horse battery staple" approach. You must give it a diceware_wordlist_path pointing at a wordlist file (one word per line - the EFF large list works great). Set num_words (default 8) and a separator. If the path is empty or the list has fewer than 1000 words, you get an error string telling you so, which is the node being responsibly strict.

    Both modes support an extra_digits_suffix (0–10) to bolt some digits on the end.

    The outputs are the interesting part

    • passphrase (STRING) - what you feed the cipher nodes.
    • entropy_bits (FLOAT) - the computed strength: length × log2(alphabet) for random chars, words × log2(vocab) for diceware. 80+ bits is a comfortable target; 8 diceware words from a 7776-word list lands around 103.
    • recipe (STRING) - a human-readable audit trail of exactly what was generated (mode, length, alphabet size, RNG used). Wire it to a text box if you want to remember how a passphrase was made.

    One flag to know about: deterministic_seed defaults to -1, meaning the node uses Python's cryptographically secure secrets module. Set it to 0 or higher and it switches to a seeded random.Random for reproducible dev/testing - and the recipe output warns you about it. Don't use a seeded passphrase for anything real.

    Installing it

    This is part of the ComfyUI EncryptMaster pack, so install the pack once and you get Generate Passphrase plus the eight cipher/stego nodes. Try ComfyUI Manager (search "ComfyUI EncryptMaster"), or:

    cd ComfyUI/custom_nodes
    git clone https://github.com/orion4d/Comfyui_EncryptMaster
    

    Then install the real dependencies (the repo has no requirements.txt, so this is the list that installs):

    pip install cryptography pillow numpy
    

    Restart ComfyUI. No models, no GPU.

    The catch

    It's a thin utility node - there's no real failure mode beyond forgetting the wordlist path in diceware mode. But there's one workflow-level trap worth naming: this node generates a fresh passphrase every time the graph runs. If you let it auto-generate and then try to decrypt with the same node later, you'll get a different passphrase and wonder why nothing opens. Generate once, copy the output into the cipher nodes' masked passphrase fields as a literal, and leave it at that.

    CategoryEncryptMaster

    Inputs (12)

    NameTypeDefaultDescription
    modeCOMBOrandom_chars2 options: random_chars, diceware
    lengthoptINT204–256
    use_lowercaseoptBOOLEANtrue
    use_uppercaseoptBOOLEANtrue
    use_digitsoptBOOLEANtrue
    use_symbolsoptBOOLEANtrue
    exclude_ambiguousoptBOOLEANtrue
    diceware_wordlist_pathoptSTRING
    num_wordsoptINT82–32
    separatoroptSTRING-
    extra_digits_suffixoptINT00–10
    deterministic_seedoptINT-1-1–2147483647

    Outputs (3)

    NameTypeDescription
    passphraseSTRING
    entropy_bitsFLOAT
    recipeSTRING