Get your own Node server
const crypto = require('crypto');

console.log('Different ways to create DiffieHellman instances:\n');

// Method 1: Generate a new DH group with specified prime length
const dh1 = crypto.createDiffieHellman(2048);
console.log('1. Generated prime length:', dh1.getPrime().length * 8, 'bits');

// Method 2: Create a DH group using a predefined prime
// Using a small prime for demonstration (in production, use much larger primes)
const prime = Buffer.from('f5e108', 'hex');
const dh2 = crypto.createDiffieHellman(prime);
console.log('2. Created with predefined prime length:', dh2.getPrime().length * 4, 'bits');

// Method 3: Create a DH group using a predefined prime and generator
const generator = Buffer.from('02', 'hex'); // Often 2, 5, or other small values
const dh3 = crypto.createDiffieHellman(prime, generator);
console.log('3. Created with prime and generator');

// Method 4: Using predefined groups with getDiffieHellman()
const predefinedGroupName = 'modp14'; // RFC 3526 2048-bit MODP Group
const dh4 = crypto.getDiffieHellman(predefinedGroupName);
console.log(`4. Created with predefined group '${predefinedGroupName}':`, dh4.getPrime().length * 8, 'bits');

// Show all supported group names
console.log('\nSupported predefined groups:', crypto.getDiffieHellmanGroups());

              
Different ways to create DiffieHellman instances:

1. Generated prime length: 2048 bits
2. Created with predefined prime length: 24 bits
3. Created with prime and generator
4. Created with predefined group 'modp14': 2048 bits

Supported predefined groups: [
  'modp1',  'modp2',  'modp5',
  'modp14', 'modp15', 'modp16',
  'modp17', 'modp18'
]