ObjectCipher
Obxecto de algoritmo de cifrado simétrico
O obxecto cifrado pertencecryptomódulo, crear:
1var c = new crypto.Cipher(crypto.AES, crypto.ECB, ...);
O seguinte toma AES como exemplo para demostrar como usar obxectos Cipher para cifrar e descifrar:
En primeiro lugar, necesitamos obter un obxecto Cipher cifrado simétricamente, como o algoritmo de cifrado AES:
1
2
3const crypto = require('crypto');
const key = crypto.randomBytes(16); // generate a 16-byte random key
const cipher = new crypto.Cipher(crypto.AES, crypto.ECB, key);
No código anterior, xeramos randomBytes
un número aleatorio de 16 bytes como clave AES a través do método. A continuación, creamos un obxecto Cipher do algoritmo AES, utilizando o modo de traballo de cifrado de bloques ECB e utilizando o número aleatorio xerado como clave.
A continuación, encrypt
ciframos o texto plano usando o método do obxecto Cipher:
1
2
3const plaintext = 'Hello, world!';
const encrypted = cipher.encrypt(plaintext);
console.log(encrypted); // output encrypted data
No código anterior, usamos encrypt
o método para cifrar a cadea Hello, world!
e producir o resultado cifrado.
En canto ao código anterior, cómpre prestar atención aos seguintes puntos:
- Antes de realizar o cifrado, cómpre crear un obxecto Cipher cifrado simétricamente e establecer parámetros como o algoritmo de cifrado, o contrasinal e o modo de traballo de cifrado de bloques.
- Despois de chamar ao método de cifrado, podemos obter os datos cifrados, que normalmente é aBufferobxecto. Nótese que a saída son datos binarios, que deben imprimirse no método correspondente, como usar
Hex
etc. para a conversión.
Se queremos descifrar os datos, tamén necesitamos un obxecto Cipher, que tamén está baseado no algoritmo AES e utiliza a mesma clave e modo de traballo de cifrado de bloques:
1
2
3const decipher = new crypto.Cipher(crypto.AES, crypto.ECB, key);
const decrypted = decipher.decrypt(encrypted);
console.log(decrypted.toString()); // output decrypted data
Aquí, creamos un novo obxecto Cipher, usamos o mesmo modo de traballo de clave e contrasinal e usamos decrypt
o método para descifrar os datos cifrados. O resultado do descifrado é aBufferO obxecto debe converterse nunha cadea para que se saia correctamente.
relación de herdanza
Construtor
Cipher
Construtor de cifrado, só usado para a inicialización de ARC4
1
2new Cipher(Integer provider,
Buffer key);
Parámetros de chamada:
- provider: Número enteiro, especifique o algoritmo de cifrado
- key:Buffer, especifique o contrasinal de cifrado e descifrado
Construtor de cifrado
1
2
3new Cipher(Integer provider,
Integer mode,
Buffer key);
Parámetros de chamada:
- provider: Número enteiro, especifique o algoritmo de cifrado
- mode: Enteiro, especifica o modo de traballo do cifrado de bloques
- key:Buffer, especifique o contrasinal de cifrado e descifrado
Construtor de cifrado
1
2
3
4new Cipher(Integer provider,
Integer mode,
Buffer key,
Buffer iv);
Parámetros de chamada:
- provider: Número enteiro, especifique o algoritmo de cifrado
- mode: Enteiro, especifica o modo de traballo do cifrado de bloques
- key:Buffer, especifique o contrasinal de cifrado e descifrado
- iv:Buffer, especifique o vector inicial
propiedades dos membros
name
String, devolve o nome do algoritmo actual
1readonly String Cipher.name;
keySize
Enteiro, devolve a lonxitude do contrasinal do algoritmo actual en bits
1readonly Integer Cipher.keySize;
ivSize
Enteiro, devolve a lonxitude do vector inicial do algoritmo actual, en bytes
1readonly Integer Cipher.ivSize;
blockSize
Enteiro, devolve a lonxitude actual do bloque de datos do algoritmo en bytes
1readonly Integer Cipher.blockSize;
función de membro
paddingMode
Usa o modo de recheo
1Cipher.paddingMode(Integer mode);
Parámetros de chamada:
- mode: Enteiro, especifica o modo de recheo, o valor predeterminado é PADDING_PKCS7
encrypt
Cifra datos usando o algoritmo de cifrado actual
1Buffer Cipher.encrypt(Buffer data) async;
Parámetros de chamada:
- data:Buffer, especifique os datos que se van cifrar
Resultados de devolución:
- Buffer, devolve os datos cifrados
decrypt
Descifrar datos usando o algoritmo de cifrado actual
1Buffer Cipher.decrypt(Buffer data) async;
Parámetros de chamada:
- data:Buffer, especifique os datos a descifrar
Resultados de devolución:
- Buffer, devolve os datos descifrados
toString
Devolve a representación en cadea do obxecto. Polo xeral, devólvese "[Obxecto nativo]". O obxecto pódese volver implementar segundo as súas propias características.
1String Cipher.toString();
Resultados de devolución:
- String, devolve a representación en cadea do obxecto
toJSON
Devolve unha representación en formato JSON do obxecto, devolvendo xeralmente unha colección de propiedades lexibles definidas polo obxecto.
1Value Cipher.toJSON(String key = "");
Parámetros de chamada:
- key: Cadena, non usada
Resultados de devolución:
- Value, devolve un valor que contén JSON serializable