aes是一種分組加密標準,每個加密塊大小為128位,允許的密鑰長度為128、192和256位。AES作為一種分組加密算法為了適應不同的安全性要求和傳輸需求允許在多種不同的加密模式下工作,包括ECB、CBC、CFB和OFB加密模式。
ECB是最簡單的塊密碼加密模式,加密前根據加密塊大小(如AES為128位)分成若干塊,之后將每塊使用相同的密鑰單獨加密,解密同理。
CBC模式對于每個待加密的密碼塊在加密前會先與前一個密碼塊的密文異或然后再用加密器加密。第一個明文塊與一個叫初始化向量的數據塊異或。
與ECB和CBC模式只能夠加密塊數據不同,CFB能夠將塊密文(Block Cipher)轉換為流密文(Stream Cipher)。
OFB是先用塊加密器生成密鑰流(Keystream),然后再將密鑰流與明文流異或得到密文流,解密是先用塊加密器生成密鑰流,再將密鑰流與密文流異或得到明文,由于異或操作的對稱性所以加密和解密的流程是完全一樣的。
var crypto = require('crypto');
/*加密*/
const cipher = crypto.createCipher('aes-128-ecb', "passWord");var cipherResult = cipher.update("yuanwen", 'utf8', 'hex');cipherResult += cipher.final('hex');//返回hex編碼的字符串
/*解密*/
var decipher = crypto.createDecipher('aes-128-ecb',"password");var decrypted = decipher.update(cipherResult, 'hex', 'utf8');decrypted += decipher.final('utf8');console.log(decrypted);
新聞熱點
疑難解答