test-numbers-generator
Version:
Generate and validate European test phone numbers (mobile and landline) in safe, non-existent ranges.
34 lines (33 loc) • 1.43 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.generateDeterministicPassword = generateDeterministicPassword;
const crypto_1 = __importDefault(require("crypto"));
/**
* Example usage:
*
* import { generateDeterministicPassword } from './passwordGenerator';
*
* const password = generateDeterministicPassword('verzorger1kind', 'myAppSecret');
* console.log(password); // Always the same for same secret+appSecret
*/
/**
* Generates a deterministic password based on a user secret and an app secret (pepper).
* The same combination will always produce the same password.
* @param userSecret - A user-provided secret string
* @param appSecret - An application-wide secret (pepper, should be kept private)
* @returns Deterministic password string (12 chars)
*/
function generateDeterministicPassword(userSecret, appSecret) {
const length = 12;
// Combine user secret and app secret
const input = `${userSecret}:${appSecret}`;
// Create a SHA-256 hash
const hash = crypto_1.default.createHash('sha256').update(input).digest('base64');
// Remove non-alphanumeric characters for password safety
const safe = hash.replace(/[^a-zA-Z0-9]/g, '');
// Return the requested length
return safe.slice(0, length);
}