humanhash.dev

Hex digests के लिए यादगार नाम।

बदलें f3527e4ef32f… को canyon-jam-telescope-creek में। SHA-1, SHA-256, MD5, UUIDs और किसी भी ऐसी चीज़ के लिए एक छोटा, मुफ्त REST API जिसे आप hex में encode कर सकते हैं।

इसे आज़माएँ

किसी भी hex digest पर /api/v1/hash/<hex> पर GET करें। Endpoint खुला, deterministic और CORS-enabled है:

https://humanhash.dev/api/v1/hash/f3527e4ef32f9d8b59ead6b7b70a843c3da1c105

प्रतिक्रिया:

{
  "inputHash": "f3527e4ef32f9d8b59ead6b7b70a843c3da1c105",
  "hash": "canyon-jam-telescope-creek"
}

यह कैसे काम करता है

HumanHash किसी भी hexadecimal string को तीन चरणों में एक छोटे, उच्चारण-योग्य नाम पर मैप करता है:

  1. Parse hex इनपुट को byte array में।
  2. Compress उन bytes को N बराबर segments में (default N = 4) और प्रत्येक segment के bytes का XOR करके एक byte में।
  3. Map प्रत्येक परिणामी byte (0–255) को 256-शब्द सूची की एक entry से, फिर hyphen से जोड़ें।

आउटपुट पूरी तरह deterministic है — एक ही इनपुट हमेशा एक ही नाम देगा — और algorithm stateless है, कोई database या randomness नहीं। 256-शब्द सूची से चार शब्द 256⁴ ≈ 4.3 अरब combinations देते हैं, जो लगभग 32-bit fingerprint के बराबर है: व्यक्तिगत deploys या builds को पहचानने के लिए ठीक है, पर जहाँ collision-resistance मायने रखती है वहाँ अंतर्निहित hash का विकल्प नहीं।

API संदर्भ

GET https://humanhash.dev/api/v1/hash/{hex}

Path पैरामीटर
hex— कोई भी hexadecimal string। लंबाई पर कोई पाबंदी नहीं; लंबे इनपुट mapping से पहले XOR-compress किए जाते हैं।
प्रतिक्रिया
JSON: { "inputHash": string, "hash": string }
शब्द
हमेशा 4 शब्द, hyphen से अलग, एक तय 256-शब्द सूची से।
Auth
कोई नहीं। CORS खुला।
Rate limits
Best-effort, कोई कठोर सीमा नहीं। भारी उपयोग के लिए vendor करें या स्वयं host करें।

कोड उदाहरण

curl

curl https://humanhash.dev/api/v1/hash/f3527e4ef32f9d8b59ead6b7b70a843c3da1c105

JavaScript (fetch)

const hex = "f3527e4ef32f9d8b59ead6b7b70a843c3da1c105";
const res = await fetch(`https://humanhash.dev/api/v1/hash/${hex}`);
const { hash } = await res.json();
console.log(hash); // "canyon-jam-telescope-creek"

Python

import requests

hex_digest = "f3527e4ef32f9d8b59ead6b7b70a843c3da1c105"
r = requests.get(f"https://humanhash.dev/api/v1/hash/{hex_digest}")
print(r.json()["hash"])  # "canyon-jam-telescope-creek"

Go

resp, _ := http.Get("https://humanhash.dev/api/v1/hash/f3527e4ef32f9d8b59ead6b7b70a843c3da1c105")
defer resp.Body.Close()
var out struct{ InputHash, Hash string }
json.NewDecoder(resp.Body).Decode(&out)
fmt.Println(out.Hash) // "canyon-jam-telescope-creek"

UUID

UUIDs भी चलते हैं — पहले hyphens हटा दें:

curl https://humanhash.dev/api/v1/hash/550e8400e29b41d4a716446655440000
# => {"inputHash":"550e8400e29b41d4a716446655440000","hash":"vault-lift-onion-lilac"}

उदाहरण: GitHub Actions

एक सामान्य pattern है github.sha से एक यादगार नाम बनाना और उसे SHA के साथ इस्तेमाल करना — उदाहरण के लिए Docker image को दोनों से tag करना। हम अपने production pipelines में HumanHash का इस्तेमाल ठीक इसी तरह करते हैं:

name: build

on:
  push:
    branches: ["main"]

env:
  IMAGE_NAME: "ghcr.io/your-org/your-app"

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4

      - name: Get human hash
        run: echo "HUMAN_HASH=$(curl -s "https://humanhash.dev/api/v1/hash/${{ github.sha }}" | jq -r '.hash')" >> "$GITHUB_ENV"

      - name: Build Docker image
        run: docker build . --tag ${{ env.IMAGE_NAME }}:${{ github.sha }} --tag ${{ env.IMAGE_NAME }}:${{ env.HUMAN_HASH }}

      - name: Log in to registry
        run: echo "${{ secrets.GITHUB_TOKEN }}" | docker login ghcr.io -u ${{ github.actor }} --password-stdin

      - name: Push image
        run: docker push --all-tags ${{ env.IMAGE_NAME }}

हर push को दो tags मिलते हैं: reproducibility के लिए सटीक SHA, और एक मानवीय नाम जैसे swift-river-mellow-bolt जो chat, dashboards और standups में सच में उपयोगी है। jq binary GitHub-hosted ubuntu-latest runner पर पहले से स्थापित है, इसलिए अतिरिक्त setup की ज़रूरत नहीं।

उपयोग के मामले

अन्य identifier formats से तुलना

Format उदाहरण यादगार Collision space
SHA-1 hex f3527e4ef32f… नहीं 2¹⁶⁰
UUID v4 550e8400-e29b-41d4-a716-… नहीं 2¹²²
Base58 (12 chars) 5KQwrPbwdL5M कुछ हद तक ~70 bits
HumanHash (4 शब्द) canyon-jam-telescope-creek हाँ 2³² ≈ 4.3 अरब
Petname / coolname libraries quiet-blue-finch हाँ बदलता है

HumanHash की विशेषता यह है कि यह किसी मौजूदा identifier का deterministic projection है — यह आपके UUID या hash की जगह नहीं लेता, बल्कि उसे एक पठनीय नाम से जोड़ देता है। दोनों को साथ इस्तेमाल करें।

अक्सर पूछे जाने वाले प्रश्न

HumanHash क्या है? +
HumanHash एक मुफ्त REST API है जो hexadecimal digests — जैसे SHA-1, SHA-256, MD5 या UUIDs — को canyon-jam-telescope-creek जैसे छोटे, यादगार चार-शब्द नामों में बदलता है। समान इनपुट हमेशा समान output देता है, इसलिए जहाँ कहीं भी आप hash paste करते हैं और लोगों को उसे पढ़ना, तुलना करना या ज़ोर से बोलना होता है, वहाँ आप ये शब्द इस्तेमाल कर सकते हैं।
Algorithm कैसे काम करता है? +
Hex इनपुट को bytes में parse किया जाता है, इन bytes को N बराबर segments में बाँटा जाता है (default N = 4), प्रत्येक segment को XOR से एकल byte में संकुचित किया जाता है, और हर परिणामी byte (0–255) एक तय 256-शब्द सूची से एक शब्द चुनता है। Mapping deterministic और stateless है — कोई database lookup नहीं, कोई randomness नहीं।
क्या रूपांतरण उल्टा संभव है? +
नहीं। HumanHash design से एकतरफ़ा और lossy है। चार-शब्द output इनपुट की लंबाई के बावजूद लगभग 32 bits (लगभग 4.3 अरब combinations) दर्शाता है, इसलिए कई अलग hashes एक ही नाम पर टकरा सकते हैं। शब्दों को fingerprint मानें, ऐसा identifier नहीं जिसे decode करके मूल digest पाया जा सके।
क्या यह security tokens या authentication के लिए सुरक्षित है? +
नहीं। केवल ~4.3 अरब संभावित outputs के साथ, HumanHash नामों को brute-force करना तुच्छ है और इन्हें कभी security के लिए design नहीं किया गया। इन्हें असली identifier के साथ मानवीय labels के रूप में इस्तेमाल करें, replacement के रूप में नहीं।
क्या API मुफ्त है? क्या rate limits हैं? +
हाँ, API मुफ्त है और CORS खुला है। फिलहाल कोई कठोर rate limits नहीं हैं, लेकिन कृपया विवेक से उपयोग करें — सेवा as-is, best-effort आधार पर है। यदि बड़ा traffic अपेक्षित है, तो algorithm को अपने code में vendor करें (कुछ दर्जन lines है) या self-host करें।
क्या मैं self-host या algorithm vendor कर सकता हूँ? +
हाँ। मूल humanhash concept Zachary Voase की एक छोटी public-domain Python library है। humanhash.dev के पीछे TypeScript implementation जानबूझकर बहुत छोटा है और आपके project में copy करना आसान है। आपको बस wordlist (256 strings) और एक छोटी compress-and-map function चाहिए।
कितने unique outputs संभव हैं? +
256-शब्द सूची से default चार शब्दों के साथ 256⁴ = 4,294,967,296 संभावित नाम हैं — 32-bit space के बराबर। ज़रूरत हो तो शब्द संख्या बढ़ाएँ।
humanhash.dev कौन चलाता है? +
इसे Pilvia Oy संचालित करता है। हम इसे अपने production tooling के लिए इस्तेमाल करते हैं — build नाम, deploy IDs, आंतरिक logs — इसीलिए यह सार्वजनिक रूप से उपलब्ध है। यह Cloudflare Workers पर चलता है।

256-शब्द शब्दावली

Outputs 256 छोटे, उच्चारण-योग्य अंग्रेज़ी शब्दों की एक तैयार सूची से लिए जाते हैं, जो 32-32 की आठ themed श्रेणियों में बँटे हैं। सूची अस्पष्ट spelling, near-homophones और जोड़ने पर बुरे लगने वाले शब्दों से बचती है।

रंग (32)

aqua, azure, beige, bronze, brown, cherry, coral, cream, cyan, gold, grey, hazel, indigo, ivory, jade, khaki, lemon, lilac, lime, magenta, maroon, mauve, olive, peach, pink, plum, ruby, sage, sand, teal, violet, white

जानवर (32)

alpaca, badger, beaver, bison, cobra, crane, deer, dingo, eagle, falcon, ferret, fox, geese, heron, jaguar, koala, kookaburra, lemur, lynx, moth, otter, panda, pelican, quail, raven, shark, sloth, swan, tiger, trout, vulture, zebra

ग्रह व अंतरिक्ष (32)

asteroid, comet, cosmos, crater, eclipse, galaxy, halo, jupiter, mars, mercury, meteor, nebula, neptune, orbit, planet, quasar, rocket, satellite, saturn, sky, solar, space, star, sun, telescope, terra, titan, universe, uranus, venus, vortex, zenith

प्रकृति व भूगोल (32)

bluff, cairn, canyon, coast, creek, desert, dune, forest, glacier, grove, hill, horizon, island, jungle, knoll, lake, meadow, moss, ocean, peak, puddle, ridge, river, stream, swamp, thistle, trail, valley, volcano, wave, woods, yarrow

खाना व फल (32)

apple, berry, bread, cake, clove, cookie, dough, grape, herb, honey, jam, juice, kiwi, maize, melon, mint, muffin, noodle, oats, onion, pesto, pickle, pie, rind, roast, spice, sugar, toast, vanilla, waffle, yeast, zest

विशेषण (32)

agile, brave, calm, clever, crisp, daring, deep, easy, fierce, flat, giant, great, happy, heavy, high, light, lively, loud, lucky, mellow, quick, quiet, rapid, ready, sharp, silent, smart, smooth, solid, swift, vast, vivid

वस्तुएँ व अवधारणाएँ (32)

anchor, beacon, bolt, bridge, canvas, cipher, clock, coin, crown, diamond, echo, flare, ghost, glyph, hammer, helix, jewel, key, ledger, locket, maze, moment, needle, puzzle, quill, scroll, shield, signal, spirit, token, tower, vault

क्रियाएँ (32)

bounce, capture, dash, drift, enter, escape, fly, glide, grasp, halt, jump, launch, lift, march, move, pedal, plunge, quiver, race, roam, scan, seek, shine, soar, spin, spring, steer, stride, thrust, touch, travel, weave

कोई गारंटी नहीं

यह सेवा जैसी है वैसी प्रदान की जाती है, बिना किसी uptime या availability गारंटी के और बिना इस वादे के कि यह हमेशा रहेगी। हालाँकि, हम इसे अपने production workloads के लिए चलाते हैं, इसलिए निकट भविष्य में यह कहीं नहीं जा रही। यदि आप इस पर निर्भर हैं, तो algorithm को vendor करने पर विचार करें — यह छोटा है।

हमारे बारे में

HumanHash का संचालन Pilvia Oy करता है, एक फिनिश cloud कंपनी। हम इसे आंतरिक रूप से builds, deploys और snapshots लेबल करने के लिए उपयोग करते हैं, और algorithm सामान्य रूप से उपयोगी होने के कारण इसे खोल दिया है।

humanhash concept Zachary Voase की एक छोटी Python library के रूप में शुरू हुआ था। यह implementation Cloudflare Workers पर चलने वाला एक स्वतंत्र TypeScript rewrite है, अपनी curated wordlist के साथ।