JavaScript:实现RSA密码算法
RSA密码算法是一种非对称加密算法,它需要两个密钥:公钥和私钥。公钥可以自由分发,而私钥必须被妥善保管。下面是一个简单的RSA密码算法的JavaScript实现:
// 生成一个随机的质数p
function generatePrime(pLength) {
let p = Math.floor(Math.pow(2, pLength / 2) * Math.random()) + 1;
while (!isPrime(p)) {
p = Math.floor(Math.pow(2, pLength / 2) * Math.random()) + 1;
}
return p;
}
// 判断一个数是否为质数
function isPrime(n) {
if (n <= 1) return false;
for (let i = 2; i <= Math.sqrt(n); i++) {
if (n % i === 0) return false;
}
return true;
}
// 生成一个随机的质数q
function generatePrime(qLength) {
let q = Math.floor(Math.pow(2, qLength / 2) * Math.random()) + 1;
while (!isPrime(q)) {
q = Math.floor(Math.pow(2, qLength / 2) * Math.random()) + 1;
}
return q;
}
// 计算欧拉函数phi(n)
function eulerTotient(n) {
let result = n;
for (let i =