Есть ли схема для хранения этого объекта с typeof, Integer {value: 340895965n} в мангусте с node.js

Я новичок в nodejs. Некоторое время я работал с модулем paillier-js, который возвращает объект typeof() такого рода: Integer { value: 340895965n }. Есть ли схема, которая может позволить соответствующее хранение этого объекта с помощью мангуста. Я попытался передать объект непосредственно в mongodb, и это успешно, но когда я просматриваю его с помощью компаса MongoDB, у меня ничего не получается { }

const paillier = require('paillier-js');
const bigInt = require('big-integer');


const { publicKey, privateKey } = paillier.generateRandomKeys(16);


//Set the values for the public key for the encryption
publicKey.n.value =  55687n
publicKey._n2.value = 3101041969n;
publicKey.g.value = 1696460192n;

//Set the values for the privateKey for the decryption
privateKey.lambda.value =  27608n;
privateKey.mu.value = 11489n;
privateKey._p.value = 239n;
privateKey._q.value = 233n;
privateKey.publicKey = publicKey


let num1 = 101;
let num2 = 104;
let num3 = 1;

let bn1 = bigInt(num1).mod(publicKey.n);

while (bn1.lt(0)) bn1 = bn1.add(publicKey.n); 
let bn2 = bigInt(num2).mod(publicKey.n);
while (bn2.lt(0)) bn2 = bn2.add(publicKey.n); 
let bn3 = bigInt(num3).mod(publicKey.n);
while (bn3.lt(0)) bn3 = bn3.add(publicKey.n);


let c1 = publicKey.encrypt(bn1);
console.log("C1: "+ c1);
console.log(c1, "is of type ", typeof(c1))

//c1 = c1.value


let c2 = publicKey.encrypt(bn2);
console.log("C2: ",c2);
//c2 = c2.value

let c3 = publicKey.encrypt(bn3);
console.log("C3: "+c3);
//c3 = c3.value

console.log(typeof(c1))

let encryptedSum = publicKey.addition(c1, c2, c3);
let decryptedSum = privateKey.decrypt(encryptedSum);

console.log('Decrypted addition:', decryptedSum.toString());

2 ответа

Решение

Не знаком с MongoDB, но вы можете использовать toString() на BigInt, преобразовав его в строку перед сохранением в MongoDB, а затем, конечно, при чтении из MongoDB вам нужно будет повторно применить BigInt. Т.е.,

x = 14142352423459034590345934959032n;

// convert x to string...
xs = x.toString();

// convert string to BigInt
bix = BigInt(xs);

Надеюсь это поможет...

Вот что я сделал. я использовалtoString()в классе Object, который я сохранил в mongodb. Затем, когда я его получил, я используюBigInt() в строке, а затем я создаю прототип объекта класса, а затем устанавливаю его значение в BigInt()ценность. Это сработало...

//c1 is the class object
rc1 = c1.toString() 


// then rc1 is stored as String in mongodb

rc1 = BigInt(rc1)   //rc1 is retrieved from db and converted to BigInt

oc1 = Object.create(c2)  //An Object prototype was created  from c2 (an object of the class)
oc1.value = rc1;  //value of the Object prototype was then set to the result of BigInt()
Другие вопросы по тегам