Tengo un campo en mongo que es de tipo numérico y quiero cifrarlo en un número único para guardarlo y luego descifrarlo al número original sin convertirlo en un valor de cadena.
Puede crear un objeto de búfer, escribir un número de Javascript en el búfer (creando un conjunto binario de bytes) y luego cifrar el contenido del búfer. Luego, guarde los datos binarios encriptados del búfer en su base de datos.
Para descifrar, puede invertir el proceso leyendo el binario de la base de datos en un búfer, descifrar el búfer y luego leer el número de él.
Puede escribir un número de Javascript en un búfer con algo como:
buf.writeDoubleBE(value[, offset])y hay un método complementario para leer un número del búfer.
Por lo tanto, esto no tiene que convertirse en una cadena en ninguna parte, sino que se convierte en un búfer binario.
FYI, aquí hay un artículo sobre el cifrado de cadenas, búferes y transmisiones en nodejs: https://attacomsian.com/blog/nodejs-encrypt-decrypt-data
FYI, MongoDB tiene algunas opciones de cifrado integradas (según el motor de almacenamiento que esté utilizando). Esto es más como un cifrado a nivel de base de datos que protege toda la base de datos en el disco en lugar de cifrar campos individuales. Aquí hay información sobre eso: https://docs.mongodb.com/manual/core/security-encryption-at-rest/#std-label-encrypted-storage-engine .
El documento de MongoDB también tiene información sobre el cifrado del lado del cliente de campos individuales aquí: https://docs.mongodb.com/manual/core/security-client-side-encryption/
y aquí:
https://docs.mongodb.com/manual/core/security-explicit-client-side-encryption/
Y, aparentemente, la versión empresarial de mongodb 4.2 o posterior tiene algún tipo de cifrado automático a nivel de campo.