
rscrypto v0.9.0
Rust क्रिप्टोग्राफी शून्य आवश्यक डिप्स के साथ: हैश, चेकसम, MACs, KDFs, पासवर्ड हैशिंग, AEADs, हस्ताक्षर, RSA, कुंजी विनिमय, ML-KEM, और ML-DSA। SIMD और ASM बैकएंड के साथ पोर्टेबल Rust संदर्भ।
rscrypto
rscrypto क्रिप्टोग्राफिक प्रिमिटिव्स, हैशेस, पासवर्ड हैशिंग और चेकसम्स की एक Rust लाइब्रेरी है।
एक फ़ीचर मॉडल इन सभी को नियंत्रित करता है।
पोर्टेबल Rust संदर्भ कार्यान्वयन है।
SIMD और असेंबली बैकएंड्स समर्थित टारगेट्स पर इसे तेज़ बनाते हैं।
प्रोडक्शन बिल्ड्स C, FFI, OpenSSL या सिस्टम लाइब्रेरीज़ पर निर्भर नहीं करते।
rscrypto केवल प्रिमिटिव्स प्रदान करता है।
यह TLS स्टैक, PKI टूलकिट, की स्टोर या प्रोटोकॉल कार्यान्वयन नहीं है।
इंस्टॉल
rscrypto को Rust 1.100 चाहिए।
जब तक Rust 1.100 स्थिर नहीं हो जाता, 1.100 बीटा या नया नाइटली उपयोग करें।
त्वरित POWER, IBM Z और RISC-V बिल्ड्स के लिए नाइटली कंपाइलर चाहिए;
portable-only बिल्ड्स घोषित MSRV का समर्थन करते हैं।
टूलचेन देखें।
केवल SHA-2 के साथ न्यूनतम no_std बिल्ड:
[dependencies]
rscrypto = { version = "0.11", default-features = false, features = ["sha2"] }
ऑपरेटिंग-सिस्टम रैंडमनेस के साथ सभी प्रिमिटिव्स:
[dependencies]
rscrypto = { version = "0.11", features = ["full", "getrandom"] }
डिफ़ॉल्ट फ़ीचर std है।
इसे हटाने के लिए default-features = false सेट करें।
getrandom केवल उन API के लिए सक्षम करें जो ऑपरेटिंग सिस्टम से साल्ट, कीज़, नॉन्सेस
या RSA की-जनरेशन एन्ट्रॉपी प्राप्त करते हैं।
फ़ीचर गाइड बताती है कि फ़ीचर्स कैसे चुनें।
Cargo.toml सटीक फ़ीचर ग्राफ़ परिभाषित करता है।
त्वरित शुरुआत
use rscrypto::Sha256;
let one_shot = Sha256::digest(b"hello world");
let mut hasher = Sha256::new();
hasher.update(b"hello ");
hasher.update(b"world");
assert_eq!(hasher.finalize(), one_shot);
हैश प्रकार वन-शॉट और स्ट्रीमिंग उपयोग का समर्थन करते हैं।
examples/README.md में AEAD, सिग्नेचर्स, RSA, P-256 और P-384 ECDH,
X25519, ML-KEM, पासवर्ड हैशिंग और बैकएंड इंट्रोस्पेक्शन के लिए चलाने योग्य उदाहरण हैं।
प्रिमिटिव्स और फ़ीचर्स
| परिवार | प्रिमिटिव्स | फ़ीचर |
|---|---|---|
| चेकसम्स | CRC-16, CRC-24, CRC-32, CRC-32C, CRC-64/XZ, CRC-64/NVMe | checksums या एक लीफ़ फ़ीचर |
| क्रिप्टोग्राफिक हैशेस | SHA-2, SHA-3, SHAKE, cSHAKE, BLAKE2, BLAKE3, Ascon-Hash/XOF/CXOF | crypto-hashes या एक लीफ़ फ़ीचर |
| फ़ास्ट हैशेस | XXH3-64/128, RapidHash V3-64 | fast-hashes या एक लीफ़ फ़ीचर |
| MACs और KDFs | HMAC-SHA-2/SHA-3, KMAC128/256, Poly1305, HKDF-SHA-2, PBKDF2-HMAC-SHA-2 | macs, kdfs, या एक लीफ़ फ़ीचर |
| पासवर्ड हैशिंग | Argon2d/i/id, scrypt, बाउंडेड PHC पासवर्ड रिकॉर्ड्स | password-hashing या एक लीफ़ फ़ीचर |
| सिग्नेचर्स और RSA | ECDSA P-256/P-384, Ed25519, ML-DSA-44/65/87, SLH-DSA (सभी 12 FIPS 205 सेट्स, pure और HashSLH-DSA), RSA साइनिंग, वेरिफ़िकेशन, एन्क्रिप्शन और की जनरेशन | signatures या एक लीफ़ फ़ीचर |
| की एक्सचेंज और KEMs | P-256 ECDH, P-384 ECDH, X25519, ML-KEM-512/768/1024 | key-exchange या एक लीफ़ फ़ीचर |
| AEADs | AES-GCM, AES-GCM-SIV, AES-SIV-CMAC, ChaCha20-Poly1305, XChaCha20-Poly1305, AEGIS-256, Ascon-AEAD128 | aead या एक लीफ़ फ़ीचर |
सिग्नेचर और KEM कीज़ ECDSA, Ed25519, RSA, ML-DSA, ML-KEM और SLH-DSA के लिए मानक DER (PKCS #8 और SubjectPublicKeyInfo) आयात और निर्यात करती हैं।
WebSocket accept digest केवल प्रोटोकॉल संगतता के लिए मौजूद है।
इसके लिए websocket-sha1 फ़ीचर चाहिए।
full सहित कोई भी अम्ब्रेला फ़ीचर इसे सक्षम नहीं करता।
सटीक प्रकारों और मेथड्स के लिए docs.rs देखें। API संगतता नोट्स आउटपुट प्रकारों, कलेक्शन सीड्स और बनाए रखे गए मेथड नामों की व्याख्या करते हैं। क्रिप्टोग्राफिक रेज़िलिएंस गाइड सुरक्षा धारणाओं, माइग्रेशन सीमाओं और मज़बूत क्रिप्टोग्राफ़ी चुनते समय समीक्षा किए जाने वाले प्रमाणों की व्याख्या करती है।
प्लेटफ़ॉर्म और डिस्पैच
पोर्टेबल Rust कार्यान्वयन सही आउटपुट को बाइट-दर-बाइट परिभाषित करता है।
प्रत्येक त्वरित बैकएंड को समान आउटपुट देना चाहिए।
कंपाइल समय पर, टारगेट तय करता है कि कौन से बैकएंड उपलब्ध हैं।
std के साथ, rscrypto रन टाइम पर CPU फ़ीचर्स का भी पता लगाता है और एक बैकएंड चुनता है।
यदि कोई त्वरित बैकएंड उपलब्ध नहीं है, तो पोर्टेबल कार्यान्वयन चलता है।
प्लेटफ़ॉर्म गाइड समर्थित टारगेट्स की सूची देती है।
यह डिस्पैच, no_std समर्थन और portable-only की सीमाओं की भी व्याख्या करती है।
आश्वासन
सुरक्षा दावा तभी तक मौजूद रहता है जब तक उसका प्रमाण पास होता है। गुम या पुराना प्रमाण दावे को हटा देता है; यह कभी किसी गेट को कमज़ोर नहीं करता।
- शुद्धता: NIST, RFC, अपस्ट्रीम और Wycheproof वेक्टर्स, स्वतंत्र कार्यान्वयन, प्रॉपर्टी टेस्ट्स, नेगेटिव टेस्ट्स और Miri।
- फ़ज़िंग: फ़ज़ टारगेट्स प्रोडक्शन कोड को प्रिमिटिव्स, पार्सर्स, स्टेट मशीनों और ट्रेट सीमाओं पर चलाते हैं। न्यूनतम किए गए इनपुट्स टेस्ट्स के रूप में रीप्ले होते हैं। एक अलग लेन उन्हें सैनिटाइज़र्स के साथ चलाती है।
- बैकएंड्स: डिफ़रेंशियल टेस्ट्स प्रत्येक त्वरित बैकएंड की तुलना पोर्टेबल Rust से करते हैं। वे लंबाई, अलाइनमेंट, टेल्स, स्टेट ट्रांज़िशन, डिस्पैच और नेटिव टारगेट्स पर फ़ॉलबैक को कवर करते हैं।
- कॉन्स्टेंट टाइम:
ct.tomlपरीक्षण के अधीन सटीक ऑपरेशनों की सूची देता है। प्रमाण ऑप्टिमाइज़्ड लिंक्ड बाइनरीज़ के निरीक्षण, फ़िक्स्ड-शेप कर्नेल्स के लिए BINSEC प्रमाणों और एंड-टू-एंड ऑपरेशनों के लिए DudeCT टाइमिंग टेस्ट्स को जोड़ता है। - सीक्रेट्स: सीक्रेट्स रखने वाले प्रकार अपनी सामग्री को
Debugआउटपुट में छिपाते हैं और ड्रॉप पर अपने इनिशियलाइज़्ड स्टोरेज को साफ़ करते हैं। कॉपी नियम प्रकार के अनुसार भिन्न होते हैं; उदाहरण के लिए, कीड BLAKE2 और BLAKE3 स्टेटCloneका समर्थन करती है। सीक्रेट ओनरशिप इन्वेंटरी प्रत्येक प्रकार की सूची देती है। - विफलताएँ: वेरिफ़िकेशन विफलताएँ यह नहीं बतातीं कि वे क्यों विफल हुईं। विफल AEAD ओपन अनऑथेंटिकेटेड प्लेनटेक्स्ट को साफ़ कर देता है।
कॉन्स्टेंट-टाइम दावा केवल उस टारगेट, फ़ीचर्स, कंपाइलर, प्रोफ़ाइल और ऑपरेशन पर लागू होता है जिसे उसका प्रमाण कवर करता है। ब्रांचलेस दिखने वाला सोर्स कोड प्रमाण नहीं है।
विवरण के लिए, टेस्ट प्रमाण, कॉन्स्टेंट-टाइम मॉडल, सीक्रेट लाइफ़साइकल और थ्रेट मॉडल देखें।
rscrypto का तीसरे पक्ष का सुरक्षा ऑडिट नहीं हुआ है।
प्रोजेक्ट अभी इसके लिए भुगतान नहीं कर सकता, और स्वचालित प्रमाण इसका विकल्प नहीं है।
rscrypto ऑडिटेड, FIPS 140-3 मान्य, औपचारिक रूप से सत्यापित
या पूरे क्रेट के रूप में कॉन्स्टेंट टाइम होने का दावा नहीं करता।
संदिग्ध भेद्यता की रिपोर्ट GitHub Private Vulnerability Reporting के माध्यम से करें।
SECURITY.md प्रक्रिया का पालन करें।
सार्वजनिक इश्यू न खोलें।
प्रदर्शन
बेंच रन #37092266645 ने 2026-10-03 को आठ प्लेटफ़ॉर्म्स पर
v0.10.0 सोर्स को मापा।
प्रत्येक प्लेटफ़ॉर्म पर हैशेस, चेकसम्स, MACs, XOFs और scrypt की 346 समान-से-समान तुलनाएँ हैं।
प्रत्येक तुलना सबसे तेज़ बाहरी क्रेट के मीडियन समय को rscrypto के मीडियन समय से विभाजित करती है।
1.00x से ऊपर का अनुपात का अर्थ है कि rscrypto तेज़ है।