需要帮助:如何用IV来解密AES 256 CBC
伙计们 首先,对不起这个问题, 但我花了5个多小时 和我的大脑被烧伤。
你看,在节点 我使用此函数加密: {\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你来干什么? 第IV-LENGTH号=16; Const SECRET = '12345678901234567890123456789012'; /// 32个字符
函数加密( 文本) { 让 iv = crypto.randomBytes(IV LENGTH) ; 让密码=密码.createCiperiv('aes-256-cbc',新缓冲器(SECRET),IV); 让加密=密码.update(文本);
已加密 = Buffer.concat([已加密,密码.final ()]);
返回 iv.toString('hex') +':' + 加密.toString('hex'); {\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你觉得呢?
因此,例如,如果我这样称呼这个功能:`加密('noel')',我得到:39f491a6ee47 bec56e237f9f54b30658:e478300762f3a8b980fa94ecda0dd1a8
然后,“解密”功能确实:
{\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你来干什么?
第IV-LENGTH号=16;
Const SECRET = '12345678901234567890123456789012'; /// 32个字符
函数解密( 文本) {
让文本部分=文本.split (':');
iv = 新缓冲(文本部分[0], “hex” );
允许加密 Text = 新缓冲器( text Parts [1], “ hex” );
(a) 让解密=加密.createDecipheriv('aes-256-cbc',新缓冲器(键),iv);
让解密=破译.update(加密文本);
已解密=Buffer.concat([已解密,已解密.final ()]);
返回已解密的.toString ();
{\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你觉得呢?因此,如你所见,解密函数用:'来分割字符串。 0'元素为IV',1'元素为加密文本。
现在,由于我的前端是移动App,我必须重写"解密"的功能(因为"crypto"不存在). 我有这个,但根本没用 你能帮帮我吗? 我错过了什么? {\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你来干什么? Const SECRET = '12345678901234567890123456789012'; /// 32个字符 函数解密( 文本) { const text Parts = text.split (':'); const iv = 文本部分[0]; cont 加密Text = 文本部分 [1];
const results = 密码. AES.decrypt (英语: crypto.enc.Hex.parse(加密文本), 密码.enc.Hex.parse(SECRET), { 四:密码.enc.Hex.parse(四), 模式:加密.mode.CBC {\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你觉得呢? .toString (); (中文(简体) ).
a. 控制台.log( “ 结果”, 结果);
返回结果; {\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你觉得呢?
内容来源: brix/crypto-js