dmc1989
@dmc1989

Почему не расшифровывается RSA?

Пытаюсь разобратся с шифрованием. Вроде все работает, но только если не переводить числа в ASCII, но как только число больше 9 то получаю неверный результат.
const p = 3, q = 11; // simple numbers
const n = p * q; // simple numbers summ
const e = Math.floor(Math.random() * EilerFunc(p, q) + 1); // public key
const d = Math.round(EilerFunc(p, q) / e);
const message = "3125";

function EilerFunc(p, q) {
  return ((p - 1) * (q - 1));
}

function makeASCII(str) {
  return str.split('').map(char => char.charCodeAt()).join(' ');
}

function encrypt(str) {
  return str.split(' ').map(char => Math.floor(Math.pow(parseInt(char), e) % n)).join(' ');
}

function decrypt(str) {
  return str.split(' ').map(char => {
    let asciiSymbol = (Math.pow(parseInt(char), d) % n);
    
    return parseInt(String.fromCharCode(asciiSymbol));
  }).join(' ');
}


const asciiMessage = makeASCII(message);
const protected = encrypt(asciiMessage);
const decoded = decrypt(protected);

write("message:", message);
write("asciiMessage:", asciiMessage);
write("encrypt:", protected);
write("decrypt:", decoded);

function write() {
  document.querySelector('.content').innerHTML += [...arguments].join(' ') + '</br>';
}
  • Вопрос задан
  • 216 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы