{"id":22358,"library":"shamir-mnemonic","title":"Shamir Mnemonic","description":"Implementation of SLIP-39 Shamir Secret Sharing mnemonics for splitting and recovering BIP-39 seed phrases. Current version 0.3.0, requires Python >=3.6, <4.0. Low release cadence.","status":"active","version":"0.3.0","language":"python","source_language":"en","source_url":"https://github.com/trezor/shamir-mnemonic","tags":["shamir","secret-sharing","slip-39","mnemonic","cryptography"],"install":[{"cmd":"pip install shamir-mnemonic","lang":"bash","label":"Install from PyPI"}],"dependencies":[],"imports":[{"note":"Function is plural 'generate_mnemonics' (returns list), not singular.","wrong":"from shamir_mnemonic import generate_mnemonic","symbol":"generate_mnemonics","correct":"from shamir_mnemonic import generate_mnemonics"},{"note":"Function is 'combine_mnemonics', not 'combine'.","wrong":"from shamir_mnemonic import combine","symbol":"combine_mnemonics","correct":"from shamir_mnemonic import combine_mnemonics"},{"note":"Exception raised for invalid mnemonics.","wrong":"","symbol":"MnemonicError","correct":"from shamir_mnemonic import MnemonicError"}],"quickstart":{"code":"from shamir_mnemonic import generate_mnemonics, combine_mnemonics\n\n# Split a BIP-39 seed phrase into 3 shares, requiring 2 to recover\nmnemonics = generate_mnemonics(\n    group_threshold=1,\n    groups=[(2, 3)],\n    passphrase='',\n    entropy=b'\\x00' * 16  # replace with actual 128-bit entropy\n)\nprint(mnemonics)  # list of 3 mnemonic strings\n\n# Recover from 2 shares\nrecovered = combine_mnemonics(mnemonics[:2])\nprint(recovered)  # dict with 'group', 'passphrase', 'entropy', 'share'","lang":"python","description":"Basic split and combine using SLIP-39 with 1 group, 2-of-3 threshold."},"warnings":[{"fix":"Always store and reuse the same passphrase or use empty string.","message":"The `passphrase` parameter is part of the secret and must be the same for splitting and combining. It is not a password but an additional entropy.","severity":"gotcha","affected_versions":"all"},{"fix":"Ensure entropy length is one of the valid lengths.","message":"The `entropy` must be exactly 128, 256, or 512 bits (16, 32, or 64 bytes).","severity":"gotcha","affected_versions":"all"},{"fix":"Use mnemonics[0] if you need one, or iterate.","message":"`generate_mnemonics` returns a list of mnemonics, not a single mnemonic. Ensure you handle the list correctly.","severity":"gotcha","affected_versions":"all"},{"fix":"Do not mix with BIP-39 mnemonic functions.","message":"The library uses SLIP-39, not the older BIP-39 style mnemonic format. Shares look different (they include a prefix like 'acid...').","severity":"gotcha","affected_versions":"all"}],"env_vars":null,"search_vec":"'-39':6,16,34 '0.3.0':21 '3.6':24 '4.0':25 'bip':15 'cadenc':28 'cryptographi':36 'current':19 'implement':3 'low':26 'mnemon':2,10,35 'phrase':18 'python':23 'recov':14 'releas':27 'requir':22 'secret':8,31 'secret-shar':30 'seed':17 'shamir':1,7,29 'share':9,32 'slip':5,33 'split':12 'version':20","created_at":"2026-04-27T17:04:44.753957+00:00","updated_at":"2026-04-27T17:04:44.753957+00:00","problems":[{"fix":"Verify each share against the official SLIP-39 wordlist or regenerate shares.","cause":"A mnemonic share contains an invalid word not in the SLIP-39 wordlist.","error":"shamir_mnemonic.mnemonic.MnemonicWordError: Invalid mnemonic word"},{"fix":"Ensure each mnemonic is exactly 33 words (standard) or 20 words (for shorter secrets).","cause":"The mnemonic string length does not match expected format (33 or 20 words).","error":"shamir_mnemonic.mnemonic.MnemonicError: Invalid mnemonic length"},{"fix":"Double-check the mnemonic and re-enter it correctly.","cause":"A mnemonic has an invalid checksum, often due to typo or truncation.","error":"shamir_mnemonic.mnemonic.MnemonicError: Invalid checksum"}],"ecosystem":"pypi","meta_description":null,"install_score":null,"quickstart_score":null,"quickstart_tag":null,"pypi_latest":"0.3.0","cli_name":"","cli_version":null,"type":"library","homepage":null,"github":null,"docs":null,"changelog":null,"pypi":"https://pypi.org/project/shamir-mnemonic/","npm":null,"openapi_spec":null,"status_page":null,"smithery":null,"categories":["auth-security","serialization"],"base_url":null,"auth_type":null,"provenance":{"verified_status":"passing","verified_at":"2026-06-28","last_verified":"2026-06-28","next_check":"2026-07-29","install_tag":null}}