diff --git a/img/123.png b/img/123.png new file mode 100644 index 0000000..0c2eb7e Binary files /dev/null and b/img/123.png differ diff --git a/夜幕-第13课练习题解密AES 并不是每次都奏效/aes_test.js b/夜幕-第13课练习题解密AES 并不是每次都奏效/aes_test.js index 142ce3a..2949e78 100644 --- a/夜幕-第13课练习题解密AES 并不是每次都奏效/aes_test.js +++ b/夜幕-第13课练习题解密AES 并不是每次都奏效/aes_test.js @@ -1,18 +1,13 @@ const CryptoJS = require("crypto-js"); -encrypted = 'jdGUW9raTa4ekejTjLxrcu3q9Ir30gz8VJeCwifzyc5JP8m2vtBqW0HzNzJ9lCLd'; -secret = { - "words": [ - 895574833, - 878916963, - 875573601, - 943076149 - ], - "sigBytes": 16 -}; +let value = '{"o00o0o00o0o0o0":"eval0514undefined"}'; //待加密的字符串 +let secret_value = "8f03e080ec3f9a5d"; //密匙 16位 -// 解密,传入密文,密钥盒向量设置加密与填充模式 -let decrypted = CryptoJS.AES.decrypt(encrypted, secret, { +// 密匙和向量处理 +let secret = CryptoJS.enc.Utf8.parse(secret_value); + +// 加密 +let encrypted = CryptoJS.AES.encrypt(value, secret, { // mode 支持 CBC, CFB,CTB,ECB,OFB,OFB, 默认CBC mode: CryptoJS.mode.ECB, @@ -20,8 +15,7 @@ let decrypted = CryptoJS.AES.decrypt(encrypted, secret, { padding: CryptoJS.pad.Pkcs7 }); -// 将解密结果转换为utf8字符串 -decrypted = CryptoJS.enc.Utf8.stringify(decrypted); +// 将加密结果转换为字符串 +encrypted = encrypted.toString(); -console.log(encrypted); -console.log(decrypted); \ No newline at end of file +console.log(encrypted); \ No newline at end of file diff --git a/夜幕-第13课练习题解密AES 并不是每次都奏效/readme1.md b/夜幕-第13课练习题解密AES 并不是每次都奏效/readme1.md index eab413b..885cae1 100644 --- a/夜幕-第13课练习题解密AES 并不是每次都奏效/readme1.md +++ b/夜幕-第13课练习题解密AES 并不是每次都奏效/readme1.md @@ -2,7 +2,7 @@ 请问: -请给出你模拟的加密内容 text (此值为固定字符串) +如果加密密钥 key 为 8f03e080ec3f9a5d,那么加密后的密文 arg 是多少? # 复习AES对称加密 @@ -94,3 +94,49 @@ ![debugger](../img/122.png) +我们来看代码 + + o0oo0o00 = o00o0o00.o00o0o00o0o0.o00o0o00orypt(_$vD[_$jG()](_$jj() + "ify")({ + o00o0o00o0o0o0: _$jG() + "0514" + _$he() + }), o00o0o00o0o0o00, { + mode: o00o0o00.mode.o00o0o00o0o0o, + padding: o00o0o00.pad.o00o0o00o0o0o0 + }).toString(); + +value 是 + + _$vD[_$jG()](_$jj() + "ify")({ + o00o0o00o0o0o0: _$jG() + "0514" + _$he() + }) + +![debugger](../img/123.png) + +结果是 '{"o00o0o00o0o0o0":"eval0514undefined"}' + +代码模拟 + + const CryptoJS = require("crypto-js"); + + let value = '{"o00o0o00o0o0o0":"eval0514undefined"}'; //待加密的字符串 + let secret_value = "8f03e080ec3f9a5d"; //密匙 16位 + + // 密匙和向量处理 + let secret = CryptoJS.enc.Utf8.parse(secret_value); + + // 加密 + let encrypted = CryptoJS.AES.encrypt(value, secret, { + // mode 支持 CBC, CFB,CTB,ECB,OFB,OFB, 默认CBC + mode: CryptoJS.mode.ECB, + + // NoPadding, zeropadding 默认Pkcs7 即 pkcs5 + padding: CryptoJS.pad.Pkcs7 + }); + + // 将加密结果转换为字符串 + encrypted = encrypted.toString(); + + console.log(encrypted); + +结果 + + B2v6O5Kjg1DAYXSd09PlD/7+5ExifLq3L5a/wucoXOZnUpp/kMmSranYt17DAqjI \ No newline at end of file