
Perl क्रिप्टोग्राफिक टूलकिट जो बंडल LibTomCrypt लाइब्रेरी के माध्यम से सममित सिफर, AEAD मोड, हैश फ़ंक्शन, MAC, सार्वजनिक-कुंजी क्रिप्टोग्राफी, कुंजी व्युत्पत्ति और सुरक्षित यादृच्छिक जनरेशन प्रदान करता है।
CryptX - क्रिप्टोग्राफ़िक टूलकिट
CryptX वितरण का प्रवेश बिंदु है। सामान्य कोड में, नीचे सूचीबद्ध ठोस मॉड्यूलों में से एक को लोड करें।
## one-shot hashing
use Crypt::Digest qw(digest_data_hex);
my $sha256 = digest_data_hex('SHA256', 'hello world');
## classic AES-CBC encryption with padding
use Crypt::Mode::CBC;
my $cbc = Crypt::Mode::CBC->new('AES');
my $iv = random_bytes(16); # 16-byte AES block-size IV
my $cbc_ciphertext = $cbc->encrypt('hello world', $key, $iv);
## authenticated encryption (AEAD) with AES
use Crypt::AuthEnc::GCM qw(gcm_encrypt_authenticate);
my $key = random_bytes(32); # 32-byte AES-256 key
my $nonce = random_bytes(12); # 12-byte unique nonce
my ($ciphertext, $tag) = gcm_encrypt_authenticate('AES', $key, $nonce, 'header', 'hello world');
## message authentication
use Crypt::Mac::HMAC qw(hmac_hex);
my $mac = hmac_hex('SHA256', $key, 'hello world');
## secure random data + UUID helpers
use Crypt::PRNG qw(random_bytes random_string);
use Crypt::Misc qw(random_v4uuid random_v7uuid);
my $salt = random_bytes(16);
my $token = random_string(24);
my $uuid4 = random_v4uuid();
my $uuid7 = random_v7uuid();
## classic password-based key derivation
use Crypt::KeyDerivation qw(pbkdf2);
my $dk = pbkdf2('password', $salt, 100_000, 'SHA256', 32);
## bare stream cipher (authenticate separately)
use Crypt::Stream::ChaCha;
my $stream = Crypt::Stream::ChaCha->new($key, $nonce);
my $stream_ciphertext = $stream->crypt('hello world');
## modern signatures
use Crypt::PK::Ed25519;
my $signer = Crypt::PK::Ed25519->new->generate_key;
my $sig = $signer->sign_message('hello world');
my $ok = $signer->verify_message($sig, 'hello world');
## key agreement
use Crypt::PK::X25519;
my $alice = Crypt::PK::X25519->new->generate_key;
my $bob = Crypt::PK::X25519->new->generate_key;
my $shared_secret = $alice->shared_secret($bob);
बंडल की गई LibTomCrypt लाइब्रेरी पर निर्मित Perl क्रिप्टोग्राफ़िक मॉड्यूल। वितरण में Math::BigInt::LTM भी शामिल है, जो Math::BigInt बैकएंड है जो बंडल की गई LibTomMath लाइब्रेरी पर निर्मित है और LibTomCrypt द्वारा आंतरिक रूप से उपयोग किया जाता है।
यह मॉड्यूल मुख्य रूप से शीर्ष-स्तरीय वितरण/दस्तावेज़ीकरण पृष्ठ के रूप में कार्य करता है। वास्तविक कार्य के लिए, नीचे सूचीबद्ध ठोस मॉड्यूलों में से एक का उपयोग करें।
नए डिज़ाइनों के लिए, नंगे सिफर मोड की तुलना में प्रमाणित एन्क्रिप्शन (AEAD) को प्राथमिकता दें:
random_bytes, random_bytes_hex, random_bytes_b64, random_bytes_b64u,
random_string, और random_string_from अधिकांश उपयोग मामलों को कवर करते हैं। OO API
और एल्गोरिदम-विशिष्ट रैपर (Crypt::PRNG::ChaCha20, Crypt::PRNG::Fortuna, आदि)
मुख्य रूप से डिटर्मिनिस्टिक स्ट्रीम या किसी विशिष्ट PRNG के साथ इंटरऑपरेबिलिटी के लिए हैं।random_v4uuid का उपयोग करें। जब आप लगभग समय-क्रमित पहचानकर्ता चाहते हैं जो मिलीसेकंड ग्रैन्युलैरिटी पर निर्माण समय के अनुसार क्रमबद्ध होते हैं तो random_v7uuid का उपयोग करें। UUID पहचानकर्ता हैं, गुप्त यादृच्छिक बाइट्स के विकल्प नहीं।स्ट्रीम सिफर डेटा को ब्लॉक पैडिंग के बिना बाइट-दर-बाइट एन्क्रिप्ट करते हैं। अधिकांश अनुप्रयोगों के लिए AEAD मोड (ऊपर देखें) को प्राथमिकता दें, जो एन्क्रिप्शन को प्रमाणीकरण के साथ जोड़ता है। नंगे स्ट्रीम सिफर का उपयोग केवल तभी करें जब आप प्रमाणीकरण को अलग से संभालते हैं।
इनका उपयोग केवल तब करें जब प्रमाणीकरण अलग से संभाला जाता है या आवश्यक नहीं है: