{"openapi":"3.1.0","info":{"title":"Security Math","version":"1.0.0","description":"Password entropy, crack-time ranges, NIST key sizes, collision odds, Bloom filter sizing, checksums and Shamir threshold maths. One call, one computed answer, no accounts or API keys. Machine-payable over x402.","x-guidance":"Security Math: Password entropy, crack-time ranges, NIST key sizes, collision odds, Bloom filter sizing, checksums and Shamir threshold maths. Use /password-entropy for the entropy of a password policy or passphrase scheme from its length and alphabet (never the password itself), /crack-time for time to search a space at a guess rate, /key-size-equivalence for NIST comparable key sizes and hash strengths, /birthday-collision for collision odds of hashes and random IDs, /bloom-filter for Bloom filter sizing, /checksum for CRC32, Adler-32, FNV and MurmurHash3 of text or hex bytes, /encoded-length for base64, base32, base58 or hex output sizes, and /shamir-threshold for share-count and reliability maths. Each paid GET returns a computed verdict with the reasons, the source and what was NOT checked. A verdict of UNVERIFIED means a lookup failed: treat it as unknown. No account or key: pay per call in USDC over x402."},"servers":[{"url":"https://security-math.x402tookit.com"}],"paths":{"/birthday-collision":{"get":{"operationId":"birthday_collision","summary":"Birthday-problem collision odds for random IDs or hash outputs, or the count of items that reaches a target probability.","description":"Birthday-problem collision odds for random IDs or hash outputs, or the count of items that reaches a target probability.","tags":["birthday-problem","collision","uuid","hash"],"parameters":[{"name":"bits","in":"query","required":false,"description":"Size of the ID or hash space in bits (e.g. 32, 64, 122 for UUIDv4, 128, 256); or use alphabetSize and idLength","schema":{"type":"number"}},{"name":"alphabetSize","in":"query","required":false,"description":"Alphabet size of a random string ID (e.g. 62 for base62, 10 for digits); with idLength","schema":{"type":"integer"}},{"name":"idLength","in":"query","required":false,"description":"Length of the random string ID, with alphabetSize","schema":{"type":"integer"}},{"name":"space","in":"query","required":false,"description":"Or the number of possibilities directly (e.g. 365 for days in a year)","schema":{"type":"number"}},{"name":"items","in":"query","required":false,"description":"Number of items generated: returns the collision probability","schema":{"type":"number"}},{"name":"probability","in":"query","required":false,"description":"Target collision probability, 0 to 1 exclusive: returns the number of items needed","schema":{"type":"number"}}],"responses":{"200":{"description":"The answer.","content":{"application/json":{"schema":{"type":"object","properties":{"verdict":{"type":["null","string"]},"summary":{"type":["null","string"]},"reasons":{"type":["array","null"],"items":{"type":"string"}},"space":{"type":["null","string"]},"spaceBits":{"type":["null","number"]},"targetProbability":{"type":["null","number"]},"itemsNeeded":{"type":["null","number"]},"itemsNeededMethod":{"type":["null","string"]},"degraded":{"type":["boolean","null"]},"notChecked":{"type":["array","null"],"items":{"type":"string"}},"source":{"type":["null","string"]},"asOf":{"type":["null","string"]},"disclaimer":{"type":["null","string"]}}},"example":{"verdict":"COUNTED","summary":"0.5 collision probability is reached at 77,164 items.","reasons":["The collision count grows with the SQUARE ROOT of the space: halving the bits does not halve the safe count, it takes its square root.","Assumes every item is drawn uniformly and independently at random."],"space":"32 bits","spaceBits":32,"targetProbability":0.5,"itemsNeeded":77164,"itemsNeededMethod":"exact search","degraded":false,"notChecked":["non-uniform generators (a flawed or low-entropy random source collides far sooner)","targeted (second-preimage) attacks, which need about the whole space rather than its square root","…2 more"],"source":"computed locally (birthday problem)","asOf":"2026-10-11T14:38:12.485Z","disclaimer":"Screening signal computed from the named public source. Not financial, legal or investment advice; provided as is. Verify at the source before acting."}}}},"400":{"description":"A parameter was missing or out of range."},"402":{"description":"Payment Required"},"502":{"description":"The upstream source failed or timed out."}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.0200"},"protocols":[{"x402":{"network":"eip155:8453","scheme":"exact","currency":"USDC","endpoint":"https://security-math.x402tookit.com/birthday-collision"}},{"x402":{"network":"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp","scheme":"exact","currency":"USDC","endpoint":"https://security-math.x402tookit.com/birthday-collision"}},{"x402":{"network":"eip155:137","scheme":"exact","currency":"USDC","endpoint":"https://security-math.x402tookit.com/birthday-collision"}},{"x402":{"network":"eip155:42161","scheme":"exact","currency":"USDC","endpoint":"https://security-math.x402tookit.com/birthday-collision"}}]}}},"/bloom-filter":{"get":{"operationId":"bloom_filter","summary":"Bloom filter sizing: bits, bytes and hash count for n items at a false-positive rate, or the rate for a given size.","description":"Bloom filter sizing: bits, bytes and hash count for n items at a false-positive rate, or the rate for a given size.","tags":["bloom-filter","probabilistic","data-structures","false-positive"],"parameters":[{"name":"n","in":"query","required":true,"description":"Number of items to store, 1 to 1e12","schema":{"type":"number"}},{"name":"p","in":"query","required":false,"description":"Target false-positive probability, e.g. 0.01 (give p or mBits)","schema":{"type":"number"}},{"name":"mBits","in":"query","required":false,"description":"Or the filter size in bits to evaluate","schema":{"type":"number"}},{"name":"k","in":"query","required":false,"description":"Hash function count to evaluate (default: the optimum)","schema":{"type":"integer"}}],"responses":{"200":{"description":"The answer.","content":{"application/json":{"schema":{"type":"object","properties":{"verdict":{"type":["null","string"]},"summary":{"type":["null","string"]},"reasons":{"type":["array","null"],"items":{"type":"string"}},"items":{"type":["null","number"]},"targetFalsePositiveRate":{"type":["null","number"]},"mBits":{"type":["null","number"]},"mBytes":{"type":["null","number"]},"human":{"type":["null","string"]},"bitsPerItem":{"type":["null","number"]},"optimalK":{"type":["null","number"]},"kUsed":{"type":["null","number"]},"falsePositiveRate":{"type":["null","number"]},"fillRatio":{"type":["null","number"]},"degraded":{"type":["boolean","null"]},"notChecked":{"type":["array","null"],"items":{"type":"string"}},"source":{"type":["null","string"]},"asOf":{"type":["null","string"]},"disclaimer":{"type":["null","string"]}}},"example":{"verdict":"SIZED","summary":"For 1,000,000 items at 0.01: 9,585,059 bits (1.14 MiB), 7 hash functions, false-positive rate 1.004e-2, 9.59 bits per item.","reasons":["m = -n ln p / (ln 2)^2 and optimal k = (m/n) ln 2; the false-positive rate is (1 - e^(-kn/m))^k.","A Bloom filter never gives a false negative; it gives false positives at about the stated rate once it holds n items."],"items":1000000,"targetFalsePositiveRate":0.01,"mBits":9585059,"mBytes":1198133,"human":"1.14 MiB","bitsPerItem":9.585,"optimalK":7,"kUsed":7,"falsePositiveRate":0.010039214559253868,"fillRatio":0.518237,"degraded":false,"notChecked":["real hash functions: the formula assumes k independent uniform hashes (double hashing gets very close)","counting, scalable or cuckoo variants","…1 more"],"source":"computed locally (Bloom 1970 formulas)","asOf":"2026-10-11T14:38:12.749Z","disclaimer":"Screening signal computed from the named public source. Not financial, legal or investment advice; provided as is. Verify at the source before acting."}}}},"400":{"description":"A parameter was missing or out of range."},"402":{"description":"Payment Required"},"502":{"description":"The upstream source failed or timed out."}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.0200"},"protocols":[{"x402":{"network":"eip155:8453","scheme":"exact","currency":"USDC","endpoint":"https://security-math.x402tookit.com/bloom-filter"}},{"x402":{"network":"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp","scheme":"exact","currency":"USDC","endpoint":"https://security-math.x402tookit.com/bloom-filter"}},{"x402":{"network":"eip155:137","scheme":"exact","currency":"USDC","endpoint":"https://security-math.x402tookit.com/bloom-filter"}},{"x402":{"network":"eip155:42161","scheme":"exact","currency":"USDC","endpoint":"https://security-math.x402tookit.com/bloom-filter"}}]}}},"/checksum":{"get":{"operationId":"checksum","summary":"CRC-32, CRC-32C, Adler-32, FNV-1/1a (32 and 64 bit) and MurmurHash3 x86_32 of text or hex bytes. Not cryptographic.","description":"CRC-32, CRC-32C, Adler-32, FNV-1/1a (32 and 64 bit) and MurmurHash3 x86_32 of text or hex bytes. Not cryptographic.","tags":["checksum","crc32","fnv","murmurhash","adler32"],"parameters":[{"name":"data","in":"query","required":true,"description":"Text (UTF-8) or, with inputType=hex, bytes written as hex (up to 4000 characters)","schema":{"type":"string"}},{"name":"algorithm","in":"query","required":false,"description":"One of crc32, crc32c, adler32, fnv1-32, fnv1a-32, fnv1-64, fnv1a-64, murmur3-32 or all (default)","schema":{"type":"string"}},{"name":"inputType","in":"query","required":false,"description":"text (default) or hex","schema":{"type":"string"}},{"name":"seed","in":"query","required":false,"description":"MurmurHash3 seed, 0 to 4294967295 (default 0)","schema":{"type":"number"}}],"responses":{"200":{"description":"The answer.","content":{"application/json":{"schema":{"type":"object","properties":{"verdict":{"type":["null","string"]},"summary":{"type":["null","string"]},"reasons":{"type":["array","null"],"items":{"type":"string"}},"byteLength":{"type":["null","number"]},"hexInput":{"type":["null","string"]},"results":{"type":["null","object"],"properties":{"crc32":{"type":["null","object"],"properties":{"hex":{"type":["null","string"]},"decimal":{"type":["null","string"]}}},"crc32c":{"type":["null","object"],"properties":{"hex":{"type":["null","string"]},"decimal":{"type":["null","string"]}}},"adler32":{"type":["null","object"],"properties":{"hex":{"type":["null","string"]},"decimal":{"type":["null","string"]}}},"fnv1-32":{"type":["null","object"],"properties":{"hex":{"type":["null","string"]},"decimal":{"type":["null","string"]}}},"fnv1a-32":{"type":["null","object"],"properties":{"hex":{"type":["null","string"]},"decimal":{"type":["null","string"]}}},"fnv1-64":{"type":["null","object"],"properties":{"hex":{"type":["null","string"]},"decimal":{"type":["null","string"]}}},"fnv1a-64":{"type":["null","object"],"properties":{"hex":{"type":["null","string"]},"decimal":{"type":["null","string"]}}},"murmur3-32":{"type":["null","object"],"properties":{"hex":{"type":["null","string"]},"decimal":{"type":["null","string"]}}}}},"secure":{"type":["boolean","null"]},"degraded":{"type":["boolean","null"]},"notChecked":{"type":["array","null"],"items":{"type":"string"}},"source":{"type":["null","string"]},"asOf":{"type":["null","string"]},"disclaimer":{"type":["null","string"]}}},"example":{"verdict":"COMPUTED","summary":"9 bytes: crc32 cbf43926, adler32 091e01de, fnv1a-32 bb86b11c, murmur3-32 b4fef382.","reasons":["Non-cryptographic checksums and hashes: they catch accidental corruption and spread keys across buckets, but anyone can forge a matching value.","Hex output is big-endian (most significant byte first); CRC-32 matches zlib and PNG, CRC-32C matches iSCSI and ext4.","…1 more"],"byteLength":9,"hexInput":"313233343536373839","results":{"crc32":{"hex":"cbf43926","decimal":"3421780262"},"crc32c":{"hex":"e3069283","decimal":"3808858755"},"adler32":{"hex":"091e01de","decimal":"152961502"},"fnv1-32":{"hex":"24148816","decimal":"605325334"},"fnv1a-32":{"hex":"bb86b11c","decimal":"3146166556"},"fnv1-64":{"hex":"a72ffc362bf916d6","decimal":"12047124837835544278"},"fnv1a-64":{"hex":"06d5573923c6cdfc","decimal":"492395637191921148"},"murmur3-32":{"hex":"b4fef382","decimal":"3036607362"}},"secure":false,"degraded":false,"notChecked":["security: none of these resists deliberate collisions; never use them to verify authenticity or store passwords (use SHA-256 or better for integrity against attackers)","other variants of the same names (CRC-16, CRC-64, Murmur2, MurmurHash3 x64_128, xxHash)","…1 more"],"source":"computed locally (published algorithms)","asOf":"2026-10-11T14:38:13.010Z","disclaimer":"Screening signal computed from the named public source. Not financial, legal or investment advice; provided as is. Verify at the source before acting."}}}},"400":{"description":"A parameter was missing or out of range."},"402":{"description":"Payment Required"},"502":{"description":"The upstream source failed or timed out."}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.0200"},"protocols":[{"x402":{"network":"eip155:8453","scheme":"exact","currency":"USDC","endpoint":"https://security-math.x402tookit.com/checksum"}},{"x402":{"network":"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp","scheme":"exact","currency":"USDC","endpoint":"https://security-math.x402tookit.com/checksum"}},{"x402":{"network":"eip155:137","scheme":"exact","currency":"USDC","endpoint":"https://security-math.x402tookit.com/checksum"}},{"x402":{"network":"eip155:42161","scheme":"exact","currency":"USDC","endpoint":"https://security-math.x402tookit.com/checksum"}}]}}},"/crack-time":{"get":{"operationId":"crack_time","summary":"Time to brute-force a space of N bits (or N guesses) at a guesses-per-second rate: average, worst case, and presets.","description":"Time to brute-force a space of N bits (or N guesses) at a guesses-per-second rate: average, worst case, and presets.","tags":["brute-force","crack-time","entropy","keyspace"],"parameters":[{"name":"bits","in":"query","required":true,"description":"Size of the search space in bits of entropy, 1 to 4096 (e.g. 56 for DES, 128 for AES-128)","schema":{"type":"number"}},{"name":"guessesPerSecond","in":"query","required":false,"description":"Attacker speed, 1 to 1e30 guesses per second (default: show all presets)","schema":{"type":"number"}}],"responses":{"200":{"description":"The answer.","content":{"application/json":{"schema":{"type":"object","properties":{"verdict":{"type":["null","string"]},"summary":{"type":["null","string"]},"reasons":{"type":["array","null"],"items":{"type":"string"}},"bits":{"type":["null","number"]},"log10Guesses":{"type":["null","number"]},"guessesPerSecond":{"type":["null","number"]},"averageTime":{"type":["null","string"]},"worstCaseTime":{"type":["null","string"]},"averageSeconds":{"type":["null","number"]},"worstCaseSeconds":{"type":["null","number"]},"presets":{"type":["array","null"],"items":{"type":"object","properties":{"attacker":{"type":["null","string"]},"guessesPerSecond":{"type":["null","number"]},"assumption":{"type":["null","string"]},"averageTime":{"type":["null","string"]},"worstCaseTime":{"type":["null","string"]}}}},"groverEquivalentBits":{"type":["null","number"]},"degraded":{"type":["boolean","null"]},"notChecked":{"type":["array","null"],"items":{"type":"string"}},"source":{"type":["null","string"]},"asOf":{"type":["null","string"]},"disclaimer":{"type":["null","string"]}}},"example":{"verdict":"FEASIBLE","summary":"2^56 guesses at 1.00e+12/s: average 10.0 hours, worst case 20.0 hours.","reasons":["Average = half the space (an unknown target is found on average halfway through); worst case = the whole space.","A quantum computer running Grover's algorithm would, in theory, search in about 2^28 steps: it halves the exponent for symmetric keys and hashes."],"bits":56,"log10Guesses":16.86,"guessesPerSecond":1000000000000,"averageTime":"10.0 hours","worstCaseTime":"20.0 hours","averageSeconds":36028.79701896392,"worstCaseSeconds":72057.59403792785,"presets":[{"attacker":"online-throttled","guessesPerSecond":1,"assumption":"online login with lockouts or rate limiting (about 1 guess per second)","averageTime":"1.14e+9 years","worstCaseTime":"2.28e+9 years"},{"attacker":"online-unthrottled","guessesPerSecond":1000,"assumption":"online login with no rate limiting (about 1,000 guesses per second)","averageTime":"1.14e+6 years","worstCaseTime":"2.28e+6 years"}],"groverEquivalentBits":28,"degraded":false,"notChecked":["shortcuts that beat brute force (weak randomness, side channels, structural attacks, quantum algorithms)","real attacker hardware or cost","…1 more"],"source":"computed locally","asOf":"2026-10-11T14:38:13.269Z","disclaimer":"Screening signal computed from the named public source. Not financial, legal or investment advice; provided as is. Verify at the source before acting."}}}},"400":{"description":"A parameter was missing or out of range."},"402":{"description":"Payment Required"},"502":{"description":"The upstream source failed or timed out."}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.0200"},"protocols":[{"x402":{"network":"eip155:8453","scheme":"exact","currency":"USDC","endpoint":"https://security-math.x402tookit.com/crack-time"}},{"x402":{"network":"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp","scheme":"exact","currency":"USDC","endpoint":"https://security-math.x402tookit.com/crack-time"}},{"x402":{"network":"eip155:137","scheme":"exact","currency":"USDC","endpoint":"https://security-math.x402tookit.com/crack-time"}},{"x402":{"network":"eip155:42161","scheme":"exact","currency":"USDC","endpoint":"https://security-math.x402tookit.com/crack-time"}}]}}},"/encoded-length":{"get":{"operationId":"encoded_length","summary":"Encoded length of N bytes in hex, base64, base32, base58, base85, decimal or any base-N alphabet, and bytes per N characters.","description":"Encoded length of N bytes in hex, base64, base32, base58, base85, decimal or any base-N alphabet, and bytes per N characters.","tags":["base64","base58","encoding","length"],"parameters":[{"name":"bytes","in":"query","required":true,"description":"Number of bytes to encode, 0 to 1e12 (a UUID is 16, a SHA-256 digest is 32)","schema":{"type":"number"}},{"name":"alphabetSize","in":"query","required":false,"description":"Optional custom alphabet size N (2 to 256): adds the length in base-N","schema":{"type":"integer"}}],"responses":{"200":{"description":"The answer.","content":{"application/json":{"schema":{"type":"object","properties":{"verdict":{"type":["null","string"]},"summary":{"type":["null","string"]},"reasons":{"type":["array","null"],"items":{"type":"string"}},"bytes":{"type":["null","number"]},"bits":{"type":["null","number"]},"characters":{"type":["null","object"],"properties":{"binary":{"type":["null","number"]},"octal":{"type":["null","number"]},"decimal":{"type":["null","number"]},"hex":{"type":["null","number"]},"base32Padded":{"type":["null","number"]},"base32Unpadded":{"type":["null","number"]},"base58MaxForNonZeroLeadingByte":{"type":["null","number"]},"base64Padded":{"type":["null","number"]},"base64Unpadded":{"type":["null","number"]},"base85Ascii85":{"type":["null","number"]}}},"overheadPercentBase64":{"type":["null","number"]},"overheadPercentHex":{"type":["null","number"]},"bytesPer100Characters":{"type":["null","object"],"properties":{"hex":{"type":["null","number"]},"base32":{"type":["null","number"]},"base58":{"type":["null","number"]},"base64":{"type":["null","number"]},"base85":{"type":["null","number"]}}},"degraded":{"type":["boolean","null"]},"notChecked":{"type":["array","null"],"items":{"type":"string"}},"source":{"type":["null","string"]},"asOf":{"type":["null","string"]},"disclaimer":{"type":["null","string"]}}},"example":{"verdict":"COMPUTED","summary":"32 bytes: 64 hex characters, 44 base64 (43 unpadded), 56 base32, up to 44 base58.","reasons":["Length = ceil(8 x bytes / log2(alphabet size)); padded base64 and base32 round up to groups of 4 and 8 characters.","Base85 here is Ascii85: 4 bytes become 5 characters, a final partial group of r bytes becomes r+1."],"bytes":32,"bits":256,"characters":{"binary":256,"octal":86,"decimal":78,"hex":64,"base32Padded":56,"base32Unpadded":52,"base58MaxForNonZeroLeadingByte":44,"base64Padded":44,"base64Unpadded":43,"base85Ascii85":40},"overheadPercentBase64":37.5,"overheadPercentHex":100,"bytesPer100Characters":{"hex":50,"base32":62,"base58":73,"base64":75,"base85":80},"degraded":false,"notChecked":["base58 of data with leading zero bytes (each adds one '1' character) and its exact length, which depends on the value","line wrapping (MIME base64 adds a CRLF every 76 characters)","…1 more"],"source":"computed locally","asOf":"2026-10-11T14:38:13.528Z","disclaimer":"Screening signal computed from the named public source. Not financial, legal or investment advice; provided as is. Verify at the source before acting."}}}},"400":{"description":"A parameter was missing or out of range."},"402":{"description":"Payment Required"},"502":{"description":"The upstream source failed or timed out."}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.0200"},"protocols":[{"x402":{"network":"eip155:8453","scheme":"exact","currency":"USDC","endpoint":"https://security-math.x402tookit.com/encoded-length"}},{"x402":{"network":"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp","scheme":"exact","currency":"USDC","endpoint":"https://security-math.x402tookit.com/encoded-length"}},{"x402":{"network":"eip155:137","scheme":"exact","currency":"USDC","endpoint":"https://security-math.x402tookit.com/encoded-length"}},{"x402":{"network":"eip155:42161","scheme":"exact","currency":"USDC","endpoint":"https://security-math.x402tookit.com/encoded-length"}}]}}},"/key-size-equivalence":{"get":{"operationId":"key_size_equivalence","summary":"NIST SP 800-57 comparable strengths: RSA, DH, DSA, ECC and AES key sizes to security bits, hash strengths, 2030 status.","description":"NIST SP 800-57 comparable strengths: RSA, DH, DSA, ECC and AES key sizes to security bits, hash strengths, 2030 status.","tags":["nist","key-size","rsa","aes","ecc"],"parameters":[{"name":"algorithm","in":"query","required":true,"description":"One of rsa, dh, dsa, ecc, aes, tdea, hash, strength: rsa, dh, dsa (size = modulus bits), ecc (size = key bits), aes (128/192/256), tdea (2 or 3 keys), hash (size = name such as sha-256), strength (size = 80/112/128/192/256)","schema":{"type":"string"}},{"name":"size","in":"query","required":true,"description":"Key size in bits, hash name, or target security strength, per algorithm","schema":{"type":"string"}}],"responses":{"200":{"description":"The answer.","content":{"application/json":{"schema":{"type":"object","properties":{"verdict":{"type":["null","string"]},"summary":{"type":["null","string"]},"reasons":{"type":["array","null"],"items":{"type":"string"}},"algorithm":{"type":["null","string"]},"size":{"type":["null","number"]},"securityStrengthBits":{"type":["null","number"]},"status":{"type":["null","string"]},"sameStrengthAs":{"type":["null","object"],"properties":{"securityStrengthBits":{"type":["null","number"]},"symmetric":{"type":["null","string"]},"ffcDsaDh":{"type":["null","string"]},"ifcRsaModulusBits":{"type":["null","number"]},"eccKeyBits":{"type":["null","string"]}}},"table":{"type":["array","null"],"items":{"type":"object","properties":{"securityStrengthBits":{"type":["null","number"]},"symmetric":{"type":["null","string"]},"ffcDsaDh":{"type":["null","string"]},"ifcRsaModulusBits":{"type":["null","number"]},"eccKeyBits":{"type":["null","string"]}}}},"degraded":{"type":["boolean","null"]},"notChecked":{"type":["array","null"],"items":{"type":"string"}},"source":{"type":["null","string"]},"asOf":{"type":["null","string"]},"disclaimer":{"type":["null","string"]}}},"example":{"verdict":"ADEQUATE","summary":"RSA 2048 bits gives about 112 bits of security strength; acceptable for applying protection through 2030; disallowed from 2031 (legacy use to process).","reasons":["Comparable strength means the effort to break it is about 2^strength operations, per NIST's estimates.","Public-key sizes between rows take the strength of the row they have reached (a conservative reading).","…1 more"],"algorithm":"rsa","size":2048,"securityStrengthBits":112,"status":"acceptable for applying protection through 2030; disallowed from 2031 (legacy use to process)","sameStrengthAs":{"securityStrengthBits":112,"symmetric":"3TDEA","ffcDsaDh":"L=2048, N=224","ifcRsaModulusBits":2048,"eccKeyBits":"224-255"},"table":[{"securityStrengthBits":80,"symmetric":"2TDEA","ffcDsaDh":"L=1024, N=160","ifcRsaModulusBits":1024,"eccKeyBits":"160-223"},{"securityStrengthBits":112,"symmetric":"3TDEA","ffcDsaDh":"L=2048, N=224","ifcRsaModulusBits":2048,"eccKeyBits":"224-255"}],"degraded":false,"notChecked":["the effect of quantum computers (Shor's algorithm breaks RSA, DH, DSA and ECC outright; Grover roughly halves symmetric and hash strength)","protocol-specific requirements (TLS, FIPS 140 validation, SP 800-131A transitions beyond Table 4)","…2 more"],"source":"NIST SP 800-57 Part 1 Rev. 5 (2020), Tables 2, 3 and 4","asOf":"2026-10-11T14:38:13.789Z","disclaimer":"Screening signal computed from the named public source. Not financial, legal or investment advice; provided as is. Verify at the source before acting."}}}},"400":{"description":"A parameter was missing or out of range."},"402":{"description":"Payment Required"},"502":{"description":"The upstream source failed or timed out."}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.0200"},"protocols":[{"x402":{"network":"eip155:8453","scheme":"exact","currency":"USDC","endpoint":"https://security-math.x402tookit.com/key-size-equivalence"}},{"x402":{"network":"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp","scheme":"exact","currency":"USDC","endpoint":"https://security-math.x402tookit.com/key-size-equivalence"}},{"x402":{"network":"eip155:137","scheme":"exact","currency":"USDC","endpoint":"https://security-math.x402tookit.com/key-size-equivalence"}},{"x402":{"network":"eip155:42161","scheme":"exact","currency":"USDC","endpoint":"https://security-math.x402tookit.com/key-size-equivalence"}}]}}},"/password-entropy":{"get":{"operationId":"password_entropy","summary":"Entropy bits for a random password policy, PIN or diceware passphrase from length and alphabet, with crack-time ranges.","description":"Entropy bits for a random password policy, PIN or diceware passphrase from length and alphabet, with crack-time ranges.","tags":["password","entropy","passphrase","crack-time"],"parameters":[{"name":"length","in":"query","required":true,"description":"Number of random characters (or words when words=true), 1 to 1000","schema":{"type":"integer"}},{"name":"lower","in":"query","required":false,"description":"true if a-z are used (default true)","schema":{"type":"string"}},{"name":"upper","in":"query","required":false,"description":"true if A-Z are used (default false)","schema":{"type":"string"}},{"name":"digits","in":"query","required":false,"description":"true if 0-9 are used (default false)","schema":{"type":"string"}},{"name":"symbols","in":"query","required":false,"description":"true if the 32 ASCII punctuation symbols are used (default false)","schema":{"type":"string"}},{"name":"poolSize","in":"query","required":false,"description":"Override: exact alphabet size, or word-list size when words=true (diceware = 7776)","schema":{"type":"integer"}},{"name":"words","in":"query","required":false,"description":"true for a passphrase of random words drawn from poolSize words","schema":{"type":"string"}}],"responses":{"200":{"description":"The answer.","content":{"application/json":{"schema":{"type":"object","properties":{"verdict":{"type":["null","string"]},"summary":{"type":["null","string"]},"reasons":{"type":["array","null"],"items":{"type":"string"}},"length":{"type":["null","number"]},"alphabetOrListSize":{"type":["null","number"]},"unit":{"type":["null","string"]},"bitsPerUnit":{"type":["null","number"]},"entropyBits":{"type":["null","number"]},"log10Guesses":{"type":["null","number"]},"rating":{"type":["null","string"]},"crackTimes":{"type":["array","null"],"items":{"type":"object","properties":{"attacker":{"type":["null","string"]},"assumption":{"type":["null","string"]},"guessesPerSecond":{"type":["null","number"]},"averageTime":{"type":["null","string"]},"worstCaseTime":{"type":["null","string"]}}}},"characterClassSizes":{"type":["null","object"],"properties":{"lower":{"type":["null","number"]},"upper":{"type":["null","number"]},"digits":{"type":["null","number"]},"symbols":{"type":["null","number"]}}},"degraded":{"type":["boolean","null"]},"notChecked":{"type":["array","null"],"items":{"type":"string"}},"source":{"type":["null","string"]},"asOf":{"type":["null","string"]},"disclaimer":{"type":["null","string"]}}},"example":{"verdict":"MODERATE","summary":"4 random words from a list of 7776: 51.7 bits of entropy (reasonable for low-value online accounts only).","reasons":["Entropy = length x log2(alphabet size), valid ONLY if every choice is uniformly random (dice, a password manager); human-chosen passwords are much weaker.","Crack times assume the attacker must search on average half the space; the attacker speeds are illustrative orders of magnitude, not benchmarks.","…1 more"],"length":4,"alphabetOrListSize":7776,"unit":"words","bitsPerUnit":12.925,"entropyBits":51.7,"log10Guesses":15.56,"rating":"reasonable for low-value online accounts only","crackTimes":[{"attacker":"online-throttled","assumption":"online login with lockouts or rate limiting (about 1 guess per second)","guessesPerSecond":1,"averageTime":"5.79e+7 years","worstCaseTime":"1.16e+8 years"},{"attacker":"online-unthrottled","assumption":"online login with no rate limiting (about 1,000 guesses per second)","guessesPerSecond":1000,"averageTime":"57928 years","worstCaseTime":"115857 years"}],"characterClassSizes":{"lower":26,"upper":26,"digits":10,"symbols":32},"degraded":false,"notChecked":["real passwords: NEVER send one here; this takes only a length and alphabet size","human-chosen passwords, which have far less entropy than uniformly random ones (dictionary words, patterns, reuse, breaches)","…2 more"],"source":"computed locally (information theory)","asOf":"2026-10-11T14:38:14.054Z","disclaimer":"Screening signal computed from the named public source. Not financial, legal or investment advice; provided as is. Verify at the source before acting."}}}},"400":{"description":"A parameter was missing or out of range."},"402":{"description":"Payment Required"},"502":{"description":"The upstream source failed or timed out."}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.0200"},"protocols":[{"x402":{"network":"eip155:8453","scheme":"exact","currency":"USDC","endpoint":"https://security-math.x402tookit.com/password-entropy"}},{"x402":{"network":"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp","scheme":"exact","currency":"USDC","endpoint":"https://security-math.x402tookit.com/password-entropy"}},{"x402":{"network":"eip155:137","scheme":"exact","currency":"USDC","endpoint":"https://security-math.x402tookit.com/password-entropy"}},{"x402":{"network":"eip155:42161","scheme":"exact","currency":"USDC","endpoint":"https://security-math.x402tookit.com/password-entropy"}}]}}},"/shamir-threshold":{"get":{"operationId":"shamir_threshold","summary":"Shamir t-of-n secret sharing maths: qualifying subsets, loss tolerance, recovery and compromise odds. Counts only, no secrets.","description":"Shamir t-of-n secret sharing maths: qualifying subsets, loss tolerance, recovery and compromise odds. Counts only, no secrets.","tags":["shamir","secret-sharing","threshold","reliability"],"parameters":[{"name":"n","in":"query","required":true,"description":"Total shares created, 2 to 255","schema":{"type":"integer"}},{"name":"t","in":"query","required":true,"description":"Threshold: shares needed to reconstruct, 2 to n","schema":{"type":"integer"}},{"name":"shareSurvival","in":"query","required":false,"description":"Probability each share is still available when needed, 0 to 1 (default 0.9)","schema":{"type":"number"}},{"name":"shareCompromise","in":"query","required":false,"description":"Probability each share is independently stolen or leaked, 0 to 1 (default 0.01)","schema":{"type":"number"}}],"responses":{"200":{"description":"The answer.","content":{"application/json":{"schema":{"type":"object","properties":{"verdict":{"type":["null","string"]},"summary":{"type":["null","string"]},"reasons":{"type":["array","null"],"items":{"type":"string"}},"n":{"type":["null","number"]},"t":{"type":["null","number"]},"sharesYouCanLose":{"type":["null","number"]},"sharesThatRevealNothing":{"type":["null","number"]},"minimalQualifyingSets":{"type":["null","string"]},"allQualifyingSets":{"type":["null","string"]},"allSubsets":{"type":["null","string"]},"storageMultiple":{"type":["null","number"]},"perShareSize":{"type":["null","string"]},"probabilityRecoverable":{"type":["null","number"]},"perShareSurvival":{"type":["null","number"]},"probabilityBreached":{"type":["null","number"]},"perShareCompromise":{"type":["null","number"]},"sharesThatMustSurviveAtLeast":{"type":["null","number"]},"sharesThatMustBeStolenAtLeast":{"type":["null","number"]},"lossesThatBreakRecovery":{"type":["null","number"]},"degraded":{"type":["boolean","null"]},"notChecked":{"type":["array","null"],"items":{"type":"string"}},"source":{"type":["null","string"]},"asOf":{"type":["null","string"]},"disclaimer":{"type":["null","string"]}}},"example":{"verdict":"BALANCED","summary":"3-of-5: any 3 shares recover the secret, 2 can be lost, 2 reveal nothing; recovery probability 0.991440 at 0.9 per-share survival, breach probability 9.85e-6 at 0.01 per-share compromise.","reasons":["A (t, n) threshold scheme is information-theoretically secure: t-1 shares give no information about the secret.","Choosing t is a trade: higher t resists theft, lower t resists loss.","…1 more"],"n":5,"t":3,"sharesYouCanLose":2,"sharesThatRevealNothing":2,"minimalQualifyingSets":"10","allQualifyingSets":"16","allSubsets":"31","storageMultiple":5,"perShareSize":"same size as the secret (plus a 1-byte index in common implementations)","probabilityRecoverable":0.99144,"perShareSurvival":0.9,"probabilityBreached":0.000009850600000000004,"perShareCompromise":0.01,"sharesThatMustSurviveAtLeast":3,"sharesThatMustBeStolenAtLeast":3,"lossesThatBreakRecovery":3,"degraded":false,"notChecked":["the secret itself: this endpoint takes only counts and must never be sent a secret, a share or a key","implementation security (a bad random number generator, side channels, unauthenticated shares) which breaks the information-theoretic guarantee","…2 more"],"source":"computed locally (Shamir 1979 threshold scheme, counting only)","asOf":"2026-10-11T14:38:14.320Z","disclaimer":"Screening signal computed from the named public source. Not financial, legal or investment advice; provided as is. Verify at the source before acting."}}}},"400":{"description":"A parameter was missing or out of range."},"402":{"description":"Payment Required"},"502":{"description":"The upstream source failed or timed out."}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.0200"},"protocols":[{"x402":{"network":"eip155:8453","scheme":"exact","currency":"USDC","endpoint":"https://security-math.x402tookit.com/shamir-threshold"}},{"x402":{"network":"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp","scheme":"exact","currency":"USDC","endpoint":"https://security-math.x402tookit.com/shamir-threshold"}},{"x402":{"network":"eip155:137","scheme":"exact","currency":"USDC","endpoint":"https://security-math.x402tookit.com/shamir-threshold"}},{"x402":{"network":"eip155:42161","scheme":"exact","currency":"USDC","endpoint":"https://security-math.x402tookit.com/shamir-threshold"}}]}}}}}