Переменные rsaModulus
и rsaPublic
поменялись местами. Исправленный код ниже, кажется, делает то, что нужно.
// requires BigInteger.min.js: https://github.com/peterolson/BigInteger.js/
// Using 256-bit RSA keys for fast demo only
// Keys generated using script found here: // https://en.wikipedia.org/wiki/RSA_(cryptosystem)
var bigInt = require("big-integer");
var rsaPrivateKey = bigInt("24776132865927824498491212731968501748100480067637351152890073639930475656193");
var rsaModulus = bigInt("74211765065553557319818035137797975277750578756934646327508787135523363995803");
var rsaPublicKey = 65537;
// Initial state for the PRNG
// Cannot be 0 or 1
var state = bigInt.randBetween(2, rsaModulus-1);
print("0: " + state.toString());
// Advance the PRNG 5x using the private key
for (var i = 1; i < 6; i++) {
state = state.modPow(rsaPrivateKey, rsaModulus);
print(i + ": " + state.toString());
}
// Reverse the PRNG 5x using the public key
for (var i = 4; i >= 0; i--) {
state = state.modPow(rsaPublicKey, rsaModulus);
print(i + ": " + state.toString());
}
function print(str){
console.log(str);
// document.body.insertAdjacentHTML("beforeend", str + "<br>\r\n");
}
Выводит вывод (в Node.js я не тестировал в браузере):
0: 3089889900716331070935914834855269746958619454008171918802934456826278805869
1: 29294271228731490548225349341396330182559853938616577145390725955076346471738
2: 26514699849481326763107659510545065888424675390354763649355047607623510843283
3: 43142677973722044074820378370391067407717125958268872808246349065241317072133
4: 36861272951268123086050613298534678401193075212756094490295892940224420130435
5: 6529151801265964225108415545430092089926156264721909235696182044061658877417
4: 36861272951268123086050613298534678401193075212756094490295892940224420130435
3: 43142677973722044074820378370391067407717125958268872808246349065241317072133
2: 26514699849481326763107659510545065888424675390354763649355047607623510843283
1: 29294271228731490548225349341396330182559853938616577145390725955076346471738
0: 3089889900716331070935914834855269746958619454008171918802934456826278805869