AES的python重构解密

目录

目标url:全国建筑市场监管公共服务平台(四库一平台)

解密代码

AES算法流程


目标url全国建筑市场监管公共服务平台(四库一平台)

在相应的代码找到变量

 

解密代码

from Crypto.Cipher import AES
from cryptography.hazmat.primitives.padding import PKCS7
from cryptography.hazmat.primitives.ciphers import algorithms

def pkcs7_unpad(content):
    """
    解密:Pkcs7的填充方式
    """
    if not isinstance(content, bytes):
        content = content.encode()
    pad = PKCS7(algorithms.AES.block_size).unpadder()
    pad_content = pad.update(content) + pad.finalize()
    return pad_content


def aes_encrypt(res, key, iv=''):
    # 转码  utf-8  字节 16进制
    new_key = bytes(key, encoding='utf-8')
    new_iv = bytes(iv, encoding='utf-8')
    # 创建一个AES算法 秘钥  模式 偏移值
    cipher = AES.new(new_key, AES.MODE_CBC, new_iv)
    # 解密
    data = cipher.decrypt(bytes.fromhex(res))
    # Pkcs7的填充方式
    return pkcs7_unpad(data)

res = '95780ba0943730051dccb5fe3918f9fecad83d6404f63e091618bcdedec6eb6dad5e1ea79d7600b68d9d997c76b232dd2c69817bd2f0c74c083b2aa15a5e3b55e9d89658c576a4e296008f5ea47d5f23ee12f7ff203a50a8195cbbfbbe66e03c4cc0582f493ae62f7d23795df6927c39368c9dc73801a076124040885c4624d03bd0a919d822d2f54a034c87b755dddff4b7e7cf6eb40c281338af3fc40edb52087377cef0e5fa219e9eba5d2288e89ceb1bf1d8b40ac96508a45c8ca4f43c402541694d758f148c833f7879052781d62a6a13ddf255fc4a6ecfdec61d3923dfed1ae607e93d3192d44bd791b9b430086cf9be62911cb51ac012909f6e44a7147a070126fe23b6e268af5ad8c5083bb66e45f128cabdcaf9babac00fdf691d5b7258be3e6ffca541391226c9ac621ee01af4d557be29ec4ad981d81826eea2d34e04bc07732b5fcef885eb34afba1ee24f95895cbcbdd27501ca27f6bf5db289d66918513545a1732e2ae65f2b686a2697ea3c908c383bf7704b0ec3af0e0f38d1040fd260de3257a808fa3665682365dfbea95949a7f91e5c31c5a7fdfed690afe0f82b7152a3fafa7233a452539f4b9af27123b6537b480c41781dc953c5c7d6eda158880857ee7541eee5954ebc80675d2e0c85c937c06d674916b093e90b46ac1bc526c3d832155590507db31714be5ec9d5278a7440862ae882fd9fa04d5a3d9353e6491f26e78a2c389a0d64531026230b73780db1611666509211f70c2847276559010494e0584360345aa6bad2d86d520f23755fa937338da84597763f309f519804e5e77b72796c0c27ec469b2b1fb81803dda612fc9cec9885c9b33c22356aa9fc13ac41f8ec967906fe401628630257520136297fb0f5fbc362de10f4ca46287ca6a2292827358b161fa6ddfbcf2a91d192048d875e02dab4b830e51b8fcc40ef5a603a6086dc4c63086ab0e437b89aa15530e598bf897c554621cc72b88b2d2483f6cd4718e561568e540908473e06163f8d1d928dbfbc3409251cdca536a63ad2a6167063d134838cbc4c78b107445708b74e6f5e5e83a897d3d95679eefd839e60ddca1cc64e4b3b2683c016968d6612f35e6fc9e97edba65fbddc4e4604577c8e220a228d8b4b57b4a86941785eff40b5b6b4032d004ad8fa29291567879d8e2341984b14c147f083d95102fa3df070391e22df80ad6773f884e6a92953d10f7cb429eb23cfcde7d23199fda46656bf1a36516148d534bcbe0a3b0153b59ea6bbaf7d0707cf80ad8e59fc1162cf31ca6ef3d05a3213c35c78459d0b2b3e2df6d3c81df054484c94a41a384c0d7cfa176a00a0a07d8fcb93b8df111bd8a1172db844713eee26ac5e7008b9553f6b3cbf96ffa7e6d983b610675c18372ee7b25cf059f7907494bec1d4c9f689aec3e9becc50c80b9f45a90ef3408910a1f7d3bd260ff6f2585e80950ad8c8bfdd70014e5d3849b8c5c3ffa12fa3699c9dfefa3911ed81d5581df8e7b5b04508f666f20fdc031e0ea3f0a1175441582d4e9992f5ae4f783eb42fbfdbee6f710eacd336701fca83c4152ff73f45bdf7d1bcbb0929ccb007ca12c46565cce6f3ea91c10a8ebfa67d878bb8efa56b144de87baf6f0d38268bd555486d60a63ad932f6ecf477ebe95c21cb1cd108201da1596a46223eaa3b0c3562c2737274d20437cdf3a06c64ef784928ca9b9b1e599bfacb3ec24abbfacbb320c57a69103f5c9724dc21b8ef48f68206cb09c574f41133dc3dd26ae65fb3397d84a08ec8bdcb7409beca904861d249a9c5926698235f6dea788c373571247aec7d2d551c833425b6af63869bac429f734af095039d1c858561d23ae23aa0a5cf3c21add9e4f4632d7e0f737213f73eede1796d5cce5ce4dba7d1f208aab283238f730fb6bc24e591bfbc168eacc5da44bfed39927a8aab69cb3a11af77e9aeae52824e63140d5cadb7df6eda4692cbd8dfaca0cd255902d164eb82fdd0bdeac78d3018b2c0eb26136d3a0095e2603e029f8a48fb6547df604c1dce2c4c3e63323efad2146b3f4c60fd5dcddad83d1f664648bd5d6ff0745f2736710e6222e8fee5ff33be42888e11a77e1950425f1f45316d1b30494a0d954cb5b561c3f00bce8ff226efd090a67d0a3a105a3e560ee734190e5857b30d40ccac0b98cdd890c5b84fbdfb047105555f37dd3c9c64892d2ebc5c66025b182db2b72c9125037bf0abb78f3cccabc84f4867a6ee365c02a528e4afcf16d1bdf358aa7d18aac67755ed9525671b768f5fe9ff6db9abdde0008c0b408670c48ba9b2d337bf1aafcdf1ec8dbf6928d446fd38b9faf7f6d980b4335f87d096122ff54c2b7c4054f759c66d67eef9382b75551a6d11b79956a8364e0281dcf315dce78ce8eeda37dbd4ceb22c0baf0c731b2056c98332064bc44bbc39437a0cadd9c8235cbc6312d823e6a62d70ce68467979b051a4b24024f8045cf30a77353c5f91e8ee547cdd1ff457e8f86f985196365690074b7e9ff3eb70fd0e7dcce0d2f1e9e7d03eae62b5727c2620cc571c00f8b6e22b53e0312ee9168301c1c35df14f50524cacf7f1a7731fc0b5a14fb262942c5c767340560325b672fa76203cb341627b2863bd703923e037d0e73dce13abb2f72d90dadf567d8e9246846992facffc75bd475d34a29ac629a79998c13c3166879a7d2519d81b69b9bdc415ab98b7a44f9662d8dda0c6d7a57521ecb14cac75e7b1d699adf44a5dd7ab5127f81b20d697c63cbde5bdd12e95745ce9096abfa58ee8f92920140d92b8673423011e16b426b892751fef48366352f29df16f06776107028080e7aa5912192341b83946b4a3758826797b18e13677c5582ca2d518277675ba67e7818aff42d7917c119a9be43e4654dc03ed785e892f06cf633d55607ed1f53e9e92f4fa3878f90a127f3ee26bfe235aa5b0ae5955d7fb73a9149852865a1f45ae7cd62c9122a65fa6b3a361eb0b686ba09d614c4002f0b14412f4e8175d4d0f42e53a37c5e11a6256dfc00ac99c66af3c69dfdb875806fc8d3c4926441469e2d2306df340b193d2476b51f26a43c7274be095771844521387fbf5075c42515962e7acc397ac4b0195610edbe236d2f54176f3475e5cbef3fad2460f93af9595cd5d9574d6dc09c3a5dec4fb8e28a69a5d05fd2d669364666169b32370d33de8e25b15ebfd224cdf093962f54fdde4c5fd0af8a91ff00809ad71d013238a130ea369d0b270589078eff9d47b6640c13c64c9787c3067cf23270c808d73f2e4bf5e74f1cbf1b0da3582da4fcf5d3d29e4b0760c7eb3deeee50b9bfb4c672c61376faed91c4f5a2748ed33362428518a890a6f5078de34018c92a96462aed99fd7990c5d76e4ba142d206c50794200675b1dd66e92705d7ce16118b8108bf55b43bea0003fd892554839f1e0ca49cb6af18b8502b045b4816b9d79d79798c653ed7b8e8cd7ee8044bb870a6fcd1b77d11882906bc6c897fa9a9edfe6a0eb45a2aaa45ce044859504e3c9907391b0f26c69bdad0c77f85d59f143ad54e8f73d30027e80713f2faef8ea3ade7a42808e1a29cdf0f44dd254304716f5dabafeea3115a6656f7e3a824381bca2debbaad7f0b0cf1dd44f7aa3570c2c999f67977fe9b896727da85d26416ebdbc9aaeb8e6a307f4220c79899524'

key = 'jo8j9wGw%6HbxfFn'
iv = '0123456789ABCDEF'

print(aes_encrypt(res,key,iv).decode())

AES算法流程

下面简单介绍下各个部分的作用与意义:

  • 明文P:

  没有经过加密的数据。

  • 密钥K:

  用来加密明文的密码,在对称加密算法中,加密与解密的密钥是相同的。密钥为接收方与发送方协商产生,但不可以直接在网络上传输,否则会导致密钥泄漏,通常是通过非对称加密算法加密密钥,然后再通过网络传输给对方,或者直接面对面商量密钥。密钥是绝对不可以泄漏的,否则会被攻击者还原密文,窃取机密数据。

  • AES加密函数:

  设AES加密函数为E,则 C = E(K, P),其中P为明文,K为密钥,C为密文。也就是说,把明文P和密钥K作为加密函数的参数输入,则加密函数E会输出密文C。

  • 密文C:

  经加密函数处理后的数据

  • AES解密函数:

  设AES解密函数为D,则 P = D(K, C),其中C为密文,K为密钥,P为明文。也就是说,把密文C和密钥K作为解密函数的参数输入,则解密函数会输出明文P。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

依恋、阳光

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值