Node.js Crypto Module

Node.js இல் கிரிப்டோகிராஃபிக் செயல்பாட்டைக் கற்றுக்கொள்ளுங்கள்

Crypto தொகுதி என்றால் என்ன?

Crypto தொகுதி என்பது Node.js இல் உள்ளமைக்கப்பட்ட தொகுதியாகும், இது கிரிப்டோகிராஃபிக் செயல்பாட்டை வழங்குகிறது:

Hash செயல்பாடுகள்

SHA-256, SHA-512, முதலியன

HMAC

Hash-அடிப்படையிலான செய்தி அங்கீகாரக் குறியீடு

சமச்சீர் குறியாக்கம்

AES, DES, முதலியன

அசமச்சீர் குறியாக்கம்

RSA, ECDSA, முதலியன

டிஜிட்டல் கையொப்பங்கள்

சரிபார்ப்பு மற்றும் உறுதிப்படுத்தல்

பாதுகாப்பான சீரற்ற எண் உருவாக்கம்

பாதுகாப்பான சீரற்ற தரவு

Crypto தொகுதி உணர்திறன் தகவல்களைப் பாதுகாப்பாகக் கையாள வேண்டிய பயன்பாடுகளுக்கு அத்தியாவசியமானது.

Crypto தொகுதி OpenSSL நூலகத்தை மூடுகிறது, நன்கு நிறுவப்பட்ட மற்றும் சோதிக்கப்பட்ட கிரிப்டோகிராஃபிக் வழிமுறைகளுக்கு அணுகலை வழங்குகிறது.

இந்த தொகுதி பொதுவாக உணர்திறன் தரவைக் கையாள பயன்படுத்தப்படுகிறது, இது போன்றவை:

Crypto உடன் தொடங்குதல்

ஒரு சரத்தை hash செய்ய Crypto தொகுதியைப் பயன்படுத்துவதற்கான விரைவான எடுத்துக்காட்டு இங்கே:

அடிப்படை Hashing எடுத்துக்காட்டு

const crypto = require('crypto');

// Create a SHA-256 hash of a string
const hash = crypto.createHash('sha256')
  .update('Hello, Node.js!')
  .digest('hex');
console.log('SHA-256 Hash:', hash);

Crypto தொகுதியை நிறுவுதல்

Crypto தொகுதி Node.js இல் இயல்பாகச் சேர்க்கப்பட்டுள்ளது.

உங்கள் ஸ்கிரிப்டில் அதைத் தேவைப்படுத்தி அதைப் பயன்படுத்தலாம்:

const crypto = require('crypto');

Hash செயல்பாடுகள்

Hashing என்பது தரவின் ஒரு-வழி மாற்றமாகும், இது நிலையான நீளத்தின் எழுத்துகளின் சரமாக மாற்றப்படுகிறது.

Hash செயல்பாடுகள் பல முக்கியமான பண்புகளைக் கொண்டுள்ளன:

தீர்மானிக்கும்: ஒரே உள்ளீடு எப்போதும் ஒரே வெளியீட்டை உருவாக்கும்
நிலையான நீளம்: உள்ளீட்டு அளவைப் பொருட்படுத்தாமல் வெளியீடு எப்போதும் ஒரே அளவில் இருக்கும்
ஒரு-வழி: செயல்முறையை மாற்றியமைப்பது மிகவும் கடினம்
அவலான்ச் விளைவு: உள்ளீட்டில் சிறிய மாற்றங்கள் வெளியீட்டில் குறிப்பிடத்தக்க மாற்றங்களை உருவாக்கும்

பொதுவான பயன்பாட்டு நிகழ்வுகள்:

Hash உருவாக்குதல்

const crypto = require('crypto');

// Create a hash object
const hash = crypto.createHash('sha256');

// Update the hash with data
hash.update('Hello, World!');

// Get the digest in hexadecimal format
const digest = hash.digest('hex');
console.log(digest);

இந்த எடுத்துக்காட்டில்:

பொதுவான Hash வழிமுறைகள்

const crypto = require('crypto');
const data = 'Hello, World!';

// MD5 (not recommended for security-critical applications)
const md5 = crypto.createHash('md5').update(data).digest('hex');
console.log('MD5:', md5);

// SHA-1 (not recommended for security-critical applications)
const sha1 = crypto.createHash('sha1').update(data).digest('hex');
console.log('SHA-1:', sha1);

// SHA-256
const sha256 = crypto.createHash('sha256').update(data).digest('hex');
console.log('SHA-256:', sha256);

// SHA-512
const sha512 = crypto.createHash('sha512').update(data).digest('hex');
console.log('SHA-512:', sha512);

⚠️ எச்சரிக்கை:

MD5 மற்றும் SHA-1 கிரிப்டோகிராஃபிகலாக பலவீனமாகக் கருதப்படுகின்றன மற்றும் பாதுகாப்பு-முக்கியமான பயன்பாடுகளுக்குப் பயன்படுத்தப்படக்கூடாது.

அதற்கு பதிலாக SHA-256, SHA-384, அல்லது SHA-512 ஐப் பயன்படுத்தவும்.

கடவுச்சொல் பாதுகாப்பு

கடவுச்சொற்களைக் கையாளும் போது, பிரூட்-ஃபோர்ஸ் தாக்குதல்களைத் தடுக்க கணக்கீட்டு ரீதியாக விலை உயர்ந்ததாக வடிவமைக்கப்பட்ட சிறப்பு கடவுச்சொல் hashing செயல்பாடுகளைப் பயன்படுத்துவது முக்கியமானது.

எளிய hashes போதாது ஏன்:

🔒 முக்கியமான குறிப்பு:

கடவுச்சொற்களை எப்போதும் plain text இல் அல்லது MD5 அல்லது SHA-1 போன்ற எளிய hashes உடன் சேமிக்காதீர்கள்.

இவை rainbow tables அல்லது brute-force தாக்குதல்களைப் பயன்படுத்தி எளிதாக உடைக்கப்படும்.

கடவுச்சொல் பாதுகாப்பிற்கான முக்கிய கருத்துக்கள்

Salting: hashing க்கு முன்பு ஒவ்வொரு கடவுச்சொல்லுக்கும் ஒரு தனித்துவமான சீரற்ற மதிப்பைச் சேர்க்கவும்
Key Stretching: பிரூட்-ஃபோர்ஸ் தாக்குதல்களைத் தடுக்க வேண்டுமென்றே hashing செயல்முறையை மெதுவாக்கவும்
Work Factor: hashing செயல்முறை எவ்வளவு கணக்கீட்டு ரீதியாக தீவிரமானது என்பதைக் கட்டுப்படுத்தவும்

Salt என்றால் என்ன?

ஒரு salt என்பது ஒவ்வொரு பயனருக்கும் தனித்துவமான ஒரு சீரற்ற சரம்.

இது hashing க்கு முன்பு கடவுச்சொல்லுடன் இணைக்கப்படுகிறது, இது இரண்டு பயனர்கள் ஒரே கடவுச்சொல்லைக் கொண்டிருந்தாலும், அவற்றின் hashes வேறுபட்டதாக இருக்கும் என்பதை உறுதி செய்கிறது.

இது ஒரே நேரத்தில் பல கடவுச்சொற்களை உடைக்க முன்கணக்கிடப்பட்ட அட்டவணைகளை (rainbow tables போன்றவை) பயன்படுத்துவதைத் தடுக்கிறது.

const crypto = require('crypto');

// Function to hash a password
function hashPassword(password) {
  // Generate a random salt (16 bytes)
  const salt = crypto.randomBytes(16).toString('hex');

  // Use scrypt for password hashing (recommended)
  const hash = crypto.scryptSync(password, salt, 64).toString('hex');

  // Return both salt and hash for storage
  return { salt, hash };
}

// Function to verify a password
function verifyPassword(password, salt, hash) {
  const hashedPassword = crypto.scryptSync(password, salt, 64).toString('hex');
  return hashedPassword === hash;
}

// Example usage
const password = 'mySecurePassword';

// Hash the password for storage
const { salt, hash } = hashPassword(password);
console.log('Salt:', salt);
console.log('Hash:', hash);

// Verify a login attempt
const isValid = verifyPassword(password, salt, hash);
console.log('Password valid:', isValid); // true

const isInvalid = verifyPassword('wrongPassword', salt, hash);
console.log('Wrong password valid:', isInvalid); // false

💡 குறிப்பு:

உற்பத்தி சூழலில் கடவுச்சொல் hashing க்கு, பாதுகாப்பான கடவுச்சொல் கையாளுதலுக்காக குறிப்பாக வடிவமைக்கப்பட்ட ஒரு அர்ப்பணிக்கப்பட்ட நூலகத்தைப் பயன்படுத்தக் கருதுங்கள், எ.கா., bcrypt அல்லது argon2.

HMAC (Hash-based Message Authentication Code)

HMAC என்பது ஒரு குறிப்பிட்ட வகை செய்தி அங்கீகாரக் குறியீடு (MAC) ஆகும், இது ஒரு கிரிப்டோகிராஃபிக் hash செயல்பாடு மற்றும் ஒரு இரகசிய கிரிப்டோகிராஃபிக் விசையை உள்ளடக்கியது.

இது தரவு ஒருமைப்பு மற்றும் அங்கீகாரம் இரண்டையும் வழங்குகிறது.

HMAC எப்போது பயன்படுத்த வேண்டும்

HMAC பாதுகாப்பு பண்புகள்

செய்தி ஒருமைப்பு: செய்தியில் ஏதேனும் மாற்றம் வேறுபட்ட HMAC ஐ உருவாக்கும்
உண்மைத்தன்மை: இரகசிய விசையைக் கொண்ட தரப்பினர் மட்டுமே செல்லுபடியாகும் HMACகளை உருவாக்க முடியும்
குறியாக்கம் இல்லை: HMAC செய்தியை குறியாக்கம் செய்யாது, அதன் ஒருமைப்பை மட்டுமே சரிபார்க்கிறது
const crypto = require('crypto');

// Secret key
const secretKey = 'mySecretKey';

// Create an HMAC
const hmac = crypto.createHmac('sha256', secretKey);

// Update with data
hmac.update('Hello, World!');

// Get the digest
const hmacDigest = hmac.digest('hex');
console.log('HMAC:', hmacDigest);

செய்தி சரிபார்ப்பிற்கான HMAC

const crypto = require('crypto');

// Function to create an HMAC for a message
function createSignature(message, key) {
  const hmac = crypto.createHmac('sha256', key);
  hmac.update(message);
  return hmac.digest('hex');
}

// Function to verify a message's signature
function verifySignature(message, signature, key) {
  const expectedSignature = createSignature(message, key);
  return crypto.timingSafeEqual(
    Buffer.from(signature, 'hex'),
    Buffer.from(expectedSignature, 'hex')
  );
}

// Example usage
const secretKey = 'verySecretKey';
const message = 'Important message to verify';

// Sender creates a signature
const signature = createSignature(message, secretKey);
console.log('Message:', message);
console.log('Signature:', signature);

// Receiver verifies the signature
try {
  const isValid = verifySignature(message, signature, secretKey);
  console.log('Signature valid:', isValid); // true

  // Try with a tampered message
  const isInvalid = verifySignature('Tampered message', signature, secretKey);
  console.log('Tampered message valid:', isInvalid); // false
} catch (error) {
  console.error('Verification error:', error.message);
}

💡 குறிப்பு:

கால முறிவு தாக்குதல்களைத் தடுக்க கிரிப்டோகிராஃபிக் ஒப்பீடுகளுக்கு எப்போதும் timingSafeEqual() ஐப் பயன்படுத்தவும்.

சமச்சீர் குறியாக்கம்

சமச்சீர் குறியாக்கம் குறியாக்கம் மற்றும் குறிவிலக்கம் இரண்டிற்கும் ஒரே விசையைப் பயன்படுத்துகிறது.

இது பொதுவாக அசமச்சீர் குறியாக்கத்தை விட வேகமானது மற்றும் இதற்கு ஏற்றது:

பொதுவான சமச்சீர் வழிமுறைகள்

வழிமுறை விசை அளவு தொகுதி அளவு குறிப்புகள்
AES-256 256 பிட்கள் 128 பிட்கள் தற்போதைய தரநிலை, பரவலாகப் பயன்படுத்தப்படுகிறது
ChaCha20 256 பிட்கள் 512 பிட்கள் மென்பொருளில் வேகமானது, TLS 1.3 இல் பயன்படுத்தப்படுகிறது
3DES 168 பிட்கள் 64 பிட்கள் பாரம்பரியம், புதிய அமைப்புகளுக்கு பரிந்துரைக்கப்படவில்லை
Blowfish 32-448 பிட்கள் 64 பிட்கள் பாரம்பரியம், Twofish அல்லது AES ஐப் பயன்படுத்தவும்

💡 குறிப்பு:

அவை இரண்டையும் வழங்கும் போது எப்போதும் அங்கீகரிக்கப்பட்ட குறியாக்க முறைகளைப் பயன்படுத்தவும், எ.கா., AES-GCM அல்லது AES-CCM.

AES (Advanced Encryption Standard)

const crypto = require('crypto');

// Function to encrypt data
function encrypt(text, key) {
  // Generate a random initialization vector
  const iv = crypto.randomBytes(16);

  // Create cipher with AES-256-CBC
  const cipher = crypto.createCipheriv('aes-256-cbc', key, iv);

  // Encrypt the data
  let encrypted = cipher.update(text, 'utf8', 'hex');
  encrypted += cipher.final('hex');

  // Return both the encrypted data and the IV
  return {
    iv: iv.toString('hex'),
    encryptedData: encrypted
  };
}

// Function to decrypt data
function decrypt(encryptedData, iv, key) {
  // Create decipher
  const decipher = crypto.createDecipheriv(
    'aes-256-cbc',
    key,
    Buffer.from(iv, 'hex')
  );

  // Decrypt the data
  let decrypted = decipher.update(encryptedData, 'hex', 'utf8');
  decrypted += decipher.final('utf8');

  return decrypted;
}

// Example usage
// Note: In a real application, use a properly generated and securely stored key
const key = crypto.scryptSync('secretPassword', 'salt', 32); // 32 bytes = 256 bits
const message = 'This is a secret message';

// Encrypt
const { iv, encryptedData } = encrypt(message, key);
console.log('Original:', message);
console.log('Encrypted:', encryptedData);
console.log('IV:', iv);

// Decrypt
const decrypted = decrypt(encryptedData, iv, key);
console.log('Decrypted:', decrypted);

⚠️ எச்சரிக்கை:

ஒரே விசையுடன் ஒரே initialization vector (IV) ஐ மீண்டும் பயன்படுத்த வேண்டாம்.

ஒவ்வொரு குறியாக்க செயல்பாட்டிற்கும் ஒரு புதிய சீரற்ற IV ஐ உருவாக்கவும்.

பிற சமச்சீர் வழிமுறைகள்

Crypto தொகுதி பல்வேறு சமச்சீர் குறியாக்க வழிமுறைகளை ஆதரிக்கிறது.

கிடைக்கக்கூடிய cipher வழிமுறைகளை இதன் மூலம் பார்க்கலாம்:

const crypto = require('crypto');

// List available cipher algorithms
console.log(crypto.getCiphers());

அசமச்சீர் குறியாக்கம்

அசமச்சீர் குறியாக்கம் (பொது-விசை கிரிப்டோகிராஃபி) கணித ரீதியாக தொடர்புடைய விசைகளின் ஒரு ஜோடியைப் பயன்படுத்துகிறது:

பொது விசை

பொதுவில் பகிரப்படலாம், குறியாக்கத்திற்குப் பயன்படுத்தப்படுகிறது

தனிப்பட்ட விசை

இரகசியமாக வைக்கப்பட வேண்டும், குறிவிலக்கத்திற்குப் பயன்படுத்தப்படுகிறது

பொதுவான பயன்பாட்டு நிகழ்வுகள்

பொதுவான அசமச்சீர் வழிமுறைகள்

வழிமுறை விசை அளவு பாதுகாப்பு நிலை குறிப்புகள்
RSA 2048+ பிட்கள் உயர் பரவலாகப் பயன்படுத்தப்படுகிறது, நல்ல இணக்கத்தன்மை
ECDSA 256-521 பிட்கள் உயர் TLS 1.3, Bitcoin இல் பயன்படுத்தப்படுகிறது
Ed25519 256 பிட்கள் மிக உயர் நவீன, திறமையான, SSH இல் பயன்படுத்தப்படுகிறது

செயல்திறன் குறிப்பு:

அசமச்சீர் குறியாக்கம் சமச்சீர் குறியாக்கத்தை விட மிகவும் மெதுவானது.

பெரிய அளவிலான தரவை குறியாக்க செய்ய, ஒரு கலப்பு அணுகுமுறையைப் பயன்படுத்தவும்:

  • ஒரு சீரற்ற சமச்சீர் விசையை உருவாக்கவும்
  • சமச்சீர் விசையுடன் உங்கள் தரவை குறியாக்கம் செய்யவும்
  • பெறுநரின் பொது விசையுடன் சமச்சீர் விசையை குறியாக்கம் செய்யவும்
  • குறியாக்கம் செய்யப்பட்ட தரவு மற்றும் குறியாக்கம் செய்யப்பட்ட விசை இரண்டையும் அனுப்பவும்

RSA (Rivest-Shamir-Adleman)

const crypto = require('crypto');

// Generate RSA key pair
function generateKeyPair() {
  return crypto.generateKeyPairSync('rsa', {
    modulusLength: 2048, // Key size in bits
    publicKeyEncoding: {
      type: 'spki',
      format: 'pem'
    },
    privateKeyEncoding: {
      type: 'pkcs8',
      format: 'pem'
    }
  });
}

// Encrypt with public key
function encryptWithPublicKey(text, publicKey) {
  const buffer = Buffer.from(text, 'utf8');
  const encrypted = crypto.publicEncrypt(
    {
      key: publicKey,
      padding: crypto.constants.RSA_PKCS1_OAEP_PADDING
    },
    buffer
  );
  return encrypted.toString('base64');
}

// Decrypt with private key
function decryptWithPrivateKey(encryptedText, privateKey) {
  const buffer = Buffer.from(encryptedText, 'base64');
  const decrypted = crypto.privateDecrypt(
    {
      key: privateKey,
      padding: crypto.constants.RSA_PKCS1_OAEP_PADDING
    },
    buffer
  );
  return decrypted.toString('utf8');
}

// Generate keys
const { publicKey, privateKey } = generateKeyPair();
console.log('Public Key:', publicKey.substring(0, 50) + '...');
console.log('Private Key:', privateKey.substring(0, 50) + '...');

// Example usage
const message = 'This message is encrypted with RSA';
const encrypted = encryptWithPublicKey(message, publicKey);
console.log('Encrypted:', encrypted.substring(0, 50) + '...');

const decrypted = decryptWithPrivateKey(encrypted, privateKey);
console.log('Decrypted:', decrypted);

💡 குறிப்பு:

RSA பொதுவாக செயல்திறன் கட்டுப்பாடுகள் காரணமாக சிறிய அளவிலான தரவை (குறியாக்க விசைகள் போன்றவை) குறியாக்க செய்ய பயன்படுத்தப்படுகிறது.

பெரிய தரவுக்கு, ஒரு கலப்பு அணுகுமுறையைப் பயன்படுத்தவும்: ஒரு சமச்சீர் வழிமுறையுடன் (AES போன்ற) தரவை குறியாக்கம் செய்யவும் மற்றும் சமச்சீர் விசையை RSA உடன் குறியாக்கம் செய்யவும்.

டிஜிட்டல் கையொப்பங்கள்

டிஜிட்டல் கையொப்பங்கள் செய்திகள், மென்பொருள் அல்லது டிஜிட்டல் ஆவணங்களின் உண்மைத்தன்மை மற்றும் ஒருமைப்பை சரிபார்க்க ஒரு வழியை வழங்குகின்றன.

const crypto = require('crypto');

// Generate RSA key pair
const { publicKey, privateKey } = crypto.generateKeyPairSync('rsa', {
  modulusLength: 2048,
  publicKeyEncoding: {
    type: 'spki',
    format: 'pem'
  },
  privateKeyEncoding: {
    type: 'pkcs8',
    format: 'pem'
  }
});

// Function to sign a message
function signMessage(message, privateKey) {
  const signer = crypto.createSign('sha256');
  signer.update(message);
  return signer.sign(privateKey, 'base64');
}

// Function to verify a signature
function verifySignature(message, signature, publicKey) {
  const verifier = crypto.createVerify('sha256');
  verifier.update(message);
  return verifier.verify(publicKey, signature, 'base64');
}

// Example usage
const message = 'This message needs to be signed';
const signature = signMessage(message, privateKey);
console.log('Message:', message);
console.log('Signature:', signature.substring(0, 50) + '...');

// Verify the signature
const isValid = verifySignature(message, signature, publicKey);
console.log('Signature valid:', isValid); // true

// Verify with a modified message
const isInvalid = verifySignature('Modified message', signature, publicKey);
console.log('Modified message valid:', isInvalid); // false

சீரற்ற தரவு உருவாக்கம்

பாதுகாப்பான சீரற்ற தரவை உருவாக்குவது பல கிரிப்டோகிராஃபிக் செயல்பாடுகளுக்கு முக்கியமானது, விசைகள், உப்புகள் மற்றும் துவக்க திசையன்களை உருவாக்குவது போன்றவை.

const crypto = require('crypto');

// Generate random bytes
const randomBytes = crypto.randomBytes(16);
console.log('Random bytes:', randomBytes.toString('hex'));

// Generate a random string (Base64)
const randomString = crypto.randomBytes(32).toString('base64');
console.log('Random string:', randomString);

// Generate a random number between 1 and 100
function secureRandomNumber(min, max) {
  // Ensure we have enough randomness
  const range = max - min + 1;
  const bytesNeeded = Math.ceil(Math.log2(range) / 8);
  const maxValue = 256 ** bytesNeeded;

  // Generate random bytes and convert to a number
  const randomBytes = crypto.randomBytes(bytesNeeded);
  const randomValue = randomBytes.reduce((acc, byte, i) => {
    return acc + byte * (256 ** i);
  }, 0);

  // Scale to our range and shift by min
  return min + Math.floor((randomValue * range) / maxValue);
}

// Example: Generate 5 random numbers
for (let i = 0; i < 5; i++) {
  console.log(`Random number ${i+1}:`, secureRandomNumber(1, 100));
}

பாதுகாப்பு சிறந்த நடைமுறைகள்

Crypto தொகுதியைப் பயன்படுத்தும் போது, இந்த சிறந்த நடைமுறைகளை மனதில் கொள்ளவும்:

நவீன வழிமுறைகளைப் பயன்படுத்தவும்: MD5, SHA-1, மற்றும் பிற காலாவதியான வழிமுறைகளைத் தவிர்க்கவும்
பாதுகாப்பான விசை மேலாண்மை: விசைகளைப் பாதுகாப்பாக சேமிக்கவும், அவற்றை தவறாமல் சுழற்றவும், அவற்றை எப்போதும் hardcode செய்யாதீர்கள்
சீரற்ற IVகளைப் பயன்படுத்தவும்: ஒவ்வொரு குறியாக்க செயல்பாட்டிற்கும் ஒரு புதிய சீரற்ற IV ஐ உருவாக்கவும்
அங்கீகாரத்தைச் சேர்க்கவும்: சாத்தியமானால் GCM போன்ற அங்கீகரிக்கப்பட்ட குறியாக்க முறைகளைப் பயன்படுத்தவும்
நிலையான-நேர ஒப்பீடுகள்: பாதுகாப்பு-முக்கியமான மதிப்புகளை ஒப்பிடுவதற்கு எப்போதும் crypto.timingSafeEqual() ஐப் பயன்படுத்தவும்
விசை வழித்தோன்றல்: கடவுச்சொல்-அடிப்படையிலான விசைகளுக்கு scrypt, bcrypt, அல்லது PBKDF2 போன்ற பொருத்தமான விசை வழித்தோன்றல் செயல்பாடுகளைப் பயன்படுத்தவும்
புதுப்பிக்கப்பட்டதை வைத்திருங்கள்: பாதுகாப்பு திருத்தங்கள் மற்றும் புதிய வழிமுறைகளுக்கான ஆதரவைப் பெற Node.js ஐப் புதுப்பித்துக் கொள்ளுங்கள்
தரநிலைகளைப் பின்பற்றவும்: நிறுவப்பட்ட கிரிப்டோகிராஃபிக் தரநிலைகள் மற்றும் நெறிமுறைகளைக் கடைப்பிடிக்கவும்

⚠️ எச்சரிக்கை:

கிரிப்டோகிராஃபி சிக்கலானது, மற்றும் தவறுகள் தீவிரமான பாதுகாப்பு பாதிப்புகளுக்கு வழிவகுக்கும்.

முக்கியமான பாதுகாப்பு அம்சங்களைச் செயல்படுத்தும் போது, ஒரு பாதுகாப்பு நிபுணரைக் கலந்தாலோசிக்கவும் அல்லது குறிப்பிட்ட கிரிப்டோகிராஃபிக் பணிகளுக்காக வடிவமைக்கப்பட்ட நன்கு நிறுவப்பட்ட நூலகங்களைப் பயன்படுத்தக் கருதுங்கள்.

சுருக்கம்

Node.js Crypto தொகுதி பரந்த அளவிலான கிரிப்டோகிராஃபிக் செயல்பாட்டை வழங்குகிறது:

Hash செயல்பாடுகள்

தரவு ஒருமைப்பு மற்றும் fingerprinting

HMAC

அங்கீகாரம் மற்றும் ஒருமைப்பு சோதனைகள்

சமச்சீர் குறியாக்கம்

பகிரப்பட்ட விசைகளுடன் தரவைப் பாதுகாத்தல்

அசமச்சீர் குறியாக்கம்

பாதுகாப்பான தகவல்தொடர்பு மற்றும் டிஜிட்டல் கையொப்பங்கள்

சீரற்ற தரவு உருவாக்கம்

கிரிப்டோகிராஃபிக் செயல்பாடுகள்

டிஜிட்டல் கையொப்பங்கள்

உண்மைத்தன்மை சரிபார்ப்பு

இந்த கிரிப்டோகிராஃபிக் கருத்துக்களைப் புரிந்துகொண்டு சரியாகச் செயல்படுத்துவதன் மூலம், உணர்திறன் தரவு மற்றும் தகவல்தொடர்புகளைப் பாதுகாக்கும் பாதுகாப்பான பயன்பாடுகளை உருவாக்கலாம்.

பயிற்சி

Node.js க்கு கிரிப்டோகிராஃபிக் செயல்பாட்டை வழங்கும் தொகுதியின் பெயரைத் தேர்ந்தெடுக்கவும்.

Buffer தொகுதி
✗ தவறு! Buffer தொகுதி பைனரி தரவைக் கையாள பயன்படுகிறது, கிரிப்டோகிராஃபிக் செயல்பாடு அல்ல
Stream தொகுதி
✗ தவறு! Stream தொகுதி தரவு ஓட்டத்தைக் கையாள பயன்படுகிறது, கிரிப்டோகிராஃபிக் செயல்பாடு அல்ல
Crypto தொகுதி
✓ சரி! Crypto தொகுதி Node.js க்கு கிரிப்டோகிராஃபிக் செயல்பாட்டை வழங்கும் சரியான தொகுதியாகும்
HTTP தொகுதி
✗ தவறு! HTTP தொகுதி வலை கோரிக்கைகளைக் கையாள பயன்படுகிறது, கிரிப்டோகிராஃபிக் செயல்பாடு அல்ல