22 lines
657 B
JavaScript
22 lines
657 B
JavaScript
const crypto = require('crypto');
|
|
|
|
/**
|
|
* Generate a random base32-encoded secret for authentication.
|
|
* @param {number} length - The length of the generated secret.
|
|
* @returns {string} - The base32-encoded secret.
|
|
*/
|
|
function generateRandomSecret(length = 32) {
|
|
const bytes = crypto.randomBytes(length);
|
|
const base32Chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ234567'; // RFC 4648 Base32 alphabet
|
|
let secret = '';
|
|
|
|
for (let i = 0; i < bytes.length; i++) {
|
|
secret += base32Chars[bytes[i] % 32];
|
|
}
|
|
|
|
return secret;
|
|
}
|
|
|
|
const secret = generateRandomSecret();
|
|
console.log('Generated secret:', secret);
|
|
console.log(crypto.randomBytes(32).toString('hex')) |