字串CryptoJS前臺加密,pycrypto後臺解密(備份一下)
阿新 • • 發佈:2019-01-31
最近我想做一個前臺加密,後臺解密的功能,網上找了好久都不怎麼好用。本人也不瞭解加密演算法,只有自己摸索。
寫完記錄一下
——————————————————————
程式碼只是個例子,沒有前後臺互動
我用的是pycrypto需要安裝,我用的是pycrypto-2.6.1.tar.gz,
安裝pycrypto-2.6.1.tar.gz需要pyasn1-0.3.7.tar.gz
python 程式碼
from Crypto.Cipher import AES def cryptoDe(pwd): print "#######################" print pwd BS = AES.block_size pad = lambda s: s + (BS - len(s) % BS) * chr(BS - len(s) % BS) unpad = lambda s : s[0:-ord(s[-1])] mode = AES.MODE_CBC cipher = AES.new('1234567890000000',mode,'1234567890000000') decrypted = unpad(cipher.decrypt(pwd.decode('hex'))) print decrypted print "#######################" return decrypted
前臺程式碼
我用的是CryptoJS v3.1.2外掛
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <script src="lib/CryptoJS v3.1.2/rollups/aes.js"></script> </head> <body> <script> //aes加密 function encrypt(word) { var key = CryptoJS.enc.Utf8.parse("1234567890000000"); //16位 var iv = CryptoJS.enc.Utf8.parse("1234567890000000"); var encrypted = ''; if (typeof(word) == 'string') { var srcs = CryptoJS.enc.Utf8.parse(word); encrypted = CryptoJS.AES.encrypt(srcs, key, { iv: iv, mode: CryptoJS.mode.CBC, padding: CryptoJS.pad.Pkcs7 }); } else if (typeof(word) == 'object') { //物件格式的轉成json字串 data = JSON.stringify(word); var srcs = CryptoJS.enc.Utf8.parse(data); encrypted = CryptoJS.AES.encrypt(srcs, key, { iv: iv, mode: CryptoJS.mode.CBC, padding: CryptoJS.pad.Pkcs7 }) } return encrypted.ciphertext.toString(); } // aes解密 function decrypt(word) { var key = CryptoJS.enc.Utf8.parse("1234567890000000"); var iv = CryptoJS.enc.Utf8.parse("1234567890000000"); var encryptedHexStr = CryptoJS.enc.Hex.parse(word); var srcs = CryptoJS.enc.Base64.stringify(encryptedHexStr); var decrypt = CryptoJS.AES.decrypt(srcs, key, { iv: iv, mode: CryptoJS.mode.CBC, padding: CryptoJS.pad.Pkcs7 }); var decryptedStr = decrypt.toString(CryptoJS.enc.Utf8); return decryptedStr.toString(); } </script> <script> var str = "222"; var encrypted = encrypt(str); var decrypt = decrypt(encrypted.toString()); document.writeln("aes cbc 加密 解密"); document.writeln("<br/>"); document.writeln("待加密:" + str); document.writeln("<br/>"); document.writeln("加密的密文:".concat(encrypted)); document.writeln("<br/>"); document.writeln("解密密文的結果:" + decrypt); </script> </body> </html>