# crypto हुक: कमज़ोर क्रिप्टोग्राफ़ी पकड़ें

> कमांड लाइन से कोडबेस में कमज़ोर क्रिप्टोग्राफ़िक प्रिमिटिव खोजें, या कोड के किसी एक टुकड़े को स्कोर दें।

कैनोनिकल: https://lagune.ai/hi-IN/docs/hooks/crypto
भाषा: hi-IN
मूल: https://lagune.ai/docs/hooks/crypto
आख़िरी अपडेट: 2026-11-06

`crypto` हुक कॉल की जगह पर ही **कमज़ोर क्रिप्टोग्राफ़िक प्रिमिटिव** पकड़ता है: अप्रचलित सिफ़र, असुरक्षित मोड या टूटा हुआ डाइजेस्ट। यह **भाषा को पहचानता है** और हर फ़ाइल को उसकी अपनी भाषा के नियमों से पढ़ता है, ताकि Rust फ़ाइल में Python का कोई कंस्ट्रक्ट कभी न पकड़ा जाए। यह [`crypto` विशेषज्ञता](https://lagune.ai/hi-IN/docs/catalog) के पीछे का नियतात्मक इंजन है, जिसे आप खुद **scan** या **check** मोड में चला सकते हैं।

## चलाएँ

**कोडबेस स्कैन करें**

```bash
npx lagune read crypto                # scans the whole project
npx lagune read crypto --dir src      # scans a directory
npx lagune read crypto --file hash.ts # scans a single file
```

**कोड का टुकड़ा जाँचें**

```bash
npx lagune read crypto --lang javascript --pattern 'createCipher("aes-256-cbc", k)' # => weak
npx lagune read crypto --lang python --pattern 'hashlib.md5(data)'                  # => review
npx lagune read crypto --lang go --pattern 'sha256.Sum256(data)'                    # => safe
```

स्कैन ज़्यादा से ज़्यादा दो सेक्शन छापता है। **Weak cryptography found** निष्कर्षों का सेट है (DES/3DES/RC4/Blowfish/RC2, ECB मोड): इनमें से हर एक टूटा हुआ सिफ़र प्रिमिटिव है, इसलिए हुक नॉन-ज़ीरो एग्ज़िट कोड देता है। **Cryptography to review manually** ऐसे सुरागों का सेट है जिन पर हुक अकेले फ़ैसला नहीं कर सकता: MD5/SHA-1 डाइजेस्ट (सुरक्षा के काम के लिए टूटा हुआ, पर साधारण चेकसम के रूप में जायज़, इसलिए फ़ैसला इस्तेमाल के इरादे पर निर्भर है), सुरक्षा वाले संदर्भ में नॉन-क्रिप्टोग्राफ़िक RNG, या ऐसी तुलना जो टाइमिंग के लिहाज़ से असुरक्षित हो। कुछ न मिलने पर यह `no weak cryptography found` छापता है।

## फ़ैसला कैसे पढ़ें

| फ़ैसला    | मतलब                                                                                                                    |
| --------- | ----------------------------------------------------------------------------------------------------------------------- |
| `weak`    | कोड का टुकड़ा टूटा हुआ सिफ़र प्रिमिटिव इस्तेमाल करता है (DES/3DES, RC4, Blowfish, RC2, या ECB मोड)।                     |
| `review`  | ऐसा प्रिमिटिव जिसका फ़ैसला इरादे पर निर्भर है: MD5/SHA-1 डाइजेस्ट, या सुरक्षा वाले संदर्भ में नॉन-क्रिप्टोग्राफ़िक RNG। |
| `safe`    | कोड का टुकड़ा क्रिप्टो इस्तेमाल करता है, और कोई कमज़ोर प्रिमिटिव नहीं मिला।                                             |
| `invalid` | कोड के टुकड़े में फ़ैसले के लिए कोई पहचानने लायक क्रिप्टोग्राफ़िक कंस्ट्रक्ट नहीं है।                                   |

### CLI विकल्प

| विकल्प      | वैल्यू        | विवरण                                                                                                       |
| ----------- | ------------- | ----------------------------------------------------------------------------------------------------------- |
| `--pattern` | कोड का टुकड़ा | कोड का एक टुकड़ा जाँचें। कई जाँचने के लिए इसे दोहराएँ, हर लाइन में एक फ़ैसला।                               |
| `--lang`    | एक भाषा       | `--pattern` के साथ ज़रूरी: javascript, python, go, java, kotlin, php, ruby, rust, csharp, c, cpp में से एक। |
| `--dir`     | एक डायरेक्टरी | स्कैन को एक डायरेक्टरी तक सीमित करें। इसे दोहराया जा सकता है और `--file` के साथ जोड़ा जा सकता है।           |
| `--file`    | एक फ़ाइल      | स्कैन को एक फ़ाइल तक सीमित करें। इसे दोहराया जा सकता है और `--dir` के साथ जोड़ा जा सकता है।                 |

कोई विकल्प न देने पर यह पूरा प्रोजेक्ट स्कैन करता है। `--pattern` के साथ `--lang` चाहिए, और इसे `--dir` या `--file` के साथ नहीं जोड़ा जा सकता।

### चुनें कि यह क्या स्कैन करे

यह उन चीज़ों को छोड़ देता है जिन्हें **Git** अनदेखा करता है। और ज़्यादा छोड़ने के लिए, या **Git** की अनदेखी चीज़ों को भी स्कैन करने के लिए, `crypto` को उसकी अपनी सेटिंग्स दें:

```bash
npx lagune write add --ignore test/fixtures --checker crypto
```

```json
{
  "checkers": {
    "crypto": { "gitignore": false, "ignore": ["test/fixtures"] }
  }
}
```

हर सेटिंग की जानकारी [हुक कॉन्फ़िगर करें](https://lagune.ai/hi-IN/docs/hooks/configure) पेज पर है।

### समर्थित भाषाएँ

स्कैन इन भाषाओं को फ़ाइल एक्सटेंशन से पहचानकर पढ़ता है, और हर भाषा को उसके अपने क्रिप्टोग्राफ़िक API के हिसाब से जाँचता है।

| भाषा                        | कमज़ोर सिफ़र (निष्कर्ष), डाइजेस्ट और RNG (समीक्षा)                                                                     |
| --------------------------- | ---------------------------------------------------------------------------------------------------------------------- |
| **JavaScript / TypeScript** | `createCipher`, `CryptoJS.DES/RC4`, कोट में लिखा `*-ecb`; MD5/SHA-1 वाला `createHash`/`subtle.digest`; `Math.random()` |
| **Python**                  | pycryptodome का `DES/ARC4/Blowfish.new`, `algorithms.TripleDES`, `MODE_ECB`; `hashlib.md5/sha1`; `random.*`            |
| **Go**                      | `des.NewCipher`, `rc4.NewCipher`, `blowfish.NewCipher`, `NewECBEncrypter`; `md5/sha1.Sum`; `math/rand`                 |
| **Java / Kotlin**           | `Cipher.getInstance("DES"/…/ECB")`; `MessageDigest.getInstance("MD5")`, `HmacMD5`; `java.util.Random`                  |
| **PHP**                     | `openssl_encrypt("des-…"/"…-ecb")`, `mcrypt_*`; `md5()`/`sha1()`, `hash("md5", …)`; `rand()`/`mt_rand()`               |
| **Ruby**                    | `OpenSSL::Cipher.new("des-…")`, `:ECB`; `Digest::MD5/SHA1`; `rand()`/`Random`                                          |
| **Rust**                    | `Rc4::`, `Blowfish::`, `des::`, `ecb::`; `Md5::`, `Sha1::`, `Hmac<Md5>`; `SmallRng`/`XorShiftRng`                      |
| **C#**                      | `DES/TripleDES/RC2.Create`, `CipherMode.ECB`; `MD5/SHA1.Create`, `HMACMD5`; `new Random()`                             |
| **C / C++**                 | OpenSSL के `DES_*`/`RC4`/`EVP_des_*`, `EVP_*_ecb`; `MD5()`/`SHA1()`, `EVP_md5`; `rand()`/`random()`                    |

**पूरी कोशिश, पर हर चीज़ नहीं**

यह सोर्स कोड को टेक्स्ट की तरह पढ़ता है, इसलिए रनटाइम पर जोड़ा गया, किसी alias के पीछे छिपा, या ऐसे रूप में लिखा गया प्रिमिटिव जिसे यह नहीं पहचानता, बचकर निकल सकता है। इस टेबल को एक मज़बूत शुरुआती आधार मानें, पूरी सूची नहीं।

**टिप**

हुक न्यूनतम आधार की गारंटी देता है (ये कंस्ट्रक्ट मौजूद हैं): कुंजी प्रबंधन, IV का दोबारा इस्तेमाल और RSA पैडिंग ऐसे मामले हैं जिनमें विवेक चाहिए, और उन्हें अब भी [`crypto` विशेषज्ञता](https://lagune.ai/hi-IN/docs/catalog) कवर करती है।

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

### कोडबेस में कमज़ोर क्रिप्टोग्राफ़ी कैसे स्कैन करूँ?

crypto हुक को बिना किसी फ़्लैग के चलाएँ। टूटे हुए सिफ़र और ECB मोड निष्कर्ष हैं, जिन पर हुक नॉन-ज़ीरो एग्ज़िट कोड देता है। MD5/SHA-1 डाइजेस्ट समीक्षा के लिए एक सुराग है, क्योंकि वह सुरक्षा के काम के लिए टूटा हुआ है, पर साधारण चेकसम के रूप में जायज़ है।

### क्या crypto हुक Math.random() को पकड़ता है?

सिर्फ़ सुरक्षा वाले संदर्भ में, समीक्षा के सुराग के रूप में, कभी अपने-आप बनने वाले निष्कर्ष के रूप में नहीं, क्योंकि जिटर या UI के क्रम के लिए रैंडमनेस का इस्तेमाल जायज़ है।
