python模拟CryptoJS.AES.decrypt解密

article/2025/9/21 4:38:59

python模拟CryptoJS.AES.decrypt

  • 思路:
  • 准备工作:
  • 需求

思路:

从CryptoJS源码中抠出python模拟报错的代码

准备工作:

1.安装execjs库

pip install execjs

2.安装nodejs
百度一下一大堆

3.使用npm安装crypto-js库

4.讲crypto-js库放入安装的node_modules文件夹下

需求

已知加密后文本和密钥反推出原始文本

text = 'A3ReBKoR6IDZSR4Jdxq72fXPsnWTZMhOr5sXl/lJ8/3GWFmsy2fTHG/0+Uz8fZmopZ0Ru0cskOWNX8hWlUy19scqauL28x3daP9IQn2ZPKUP4L6w1bWnAKuJH2eyp9eq1OhQXiRFSH4T62nWr/XhuP34vgZrv6rQppWFzEWFUaZ9E6YgR72lf9SawzUSwsZ6eOMpZSccxe2MnJPX+hfjYgN5vx637IRFkJKj55AC0Xm2g1IMU+kCWWDpHuaUeeKxhrmmzFmAselK6RszyJOaB3BxvQe1GfIer/HJZZIGgoB24zgH5K6+B2UIuNjFHQWiT2L9EKMnz8HUIYDg76H1QeAqEihFjL+SjXUb1w33PxZIf7wM2ZOtzYrA54qSsLT5iciumUD9mWVZdN+FKlx0i3Tu1gqUAyOdZXw9aHO2rRQ1ALLamncDBMaBKKsvF+MShQcIIu+VFrBQpgtNSkTisoa5psxZgLHpSukbM8iTmgdwcb0HtRnyHq/xyWWSBoKAYHZFruMM7Ty1wIZEt0YMY09i/RCjJ8/B1CGA4O+h9UHgKhIoRYy/ko11G9cN9z8Ww7LMTn9GVIMxFBIDy2xNq7mdCm3EIrsAgqDzuBSLUaWuFSKcUo82/ypSjoMRXG9kRvjPI5DHCu3T8zwvG0D5jVdmAsdAafTANG7SZKrZbbYizQBf+90cXpYESW87n4rLAcENrJ+rQ5Lpiizt3mnxRPslX37uGL7b+wNbnmdST6gBM6iNz5+MGbCmuAPxjg6lMNGp7QXZ3hArw4fmtCifTxBcVD5wC99wMuw5eyRWVyhyEGTocvJVeq3CRTLTaJ5V/MRNEPXGqOTER8Nm+JTMwtH8Vzamif3LRnZHtT86+08='
key = 'd719303e82ed09cdb24b717b1375f986'

使用ECB模式无须偏移量

python代码

import execjs
from Crypto.Cipher import AES
from binascii import b2a_hex, a2b_hex
import os
from urllib import parseos.environ["NODE_PATH"] = "D:/New Folder/node_modules"
# print(execjs.get().name)js = open('min3.js', 'r', encoding='utf-8').read()text = 'A3ReBKoR6IDZSR4Jdxq72fXPsnWTZMhOr5sXl/lJ8/3GWFmsy2fTHG/0+Uz8fZmopZ0Ru0cskOWNX8hWlUy19scqauL28x3daP9IQn2ZPKUP4L6w1bWnAKuJH2eyp9eq1OhQXiRFSH4T62nWr/XhuP34vgZrv6rQppWFzEWFUaZ9E6YgR72lf9SawzUSwsZ6eOMpZSccxe2MnJPX+hfjYgN5vx637IRFkJKj55AC0Xm2g1IMU+kCWWDpHuaUeeKxhrmmzFmAselK6RszyJOaB3BxvQe1GfIer/HJZZIGgoB24zgH5K6+B2UIuNjFHQWiT2L9EKMnz8HUIYDg76H1QeAqEihFjL+SjXUb1w33PxZIf7wM2ZOtzYrA54qSsLT5iciumUD9mWVZdN+FKlx0i3Tu1gqUAyOdZXw9aHO2rRQ1ALLamncDBMaBKKsvF+MShQcIIu+VFrBQpgtNSkTisoa5psxZgLHpSukbM8iTmgdwcb0HtRnyHq/xyWWSBoKAYHZFruMM7Ty1wIZEt0YMY09i/RCjJ8/B1CGA4O+h9UHgKhIoRYy/ko11G9cN9z8Ww7LMTn9GVIMxFBIDy2xNq7mdCm3EIrsAgqDzuBSLUaWuFSKcUo82/ypSjoMRXG9kRvjPI5DHCu3T8zwvG0D5jVdmAsdAafTANG7SZKrZbbYizQBf+90cXpYESW87n4rLAcENrJ+rQ5Lpiizt3mnxRPslX37uGL7b+wNbnmdST6gBM6iNz5+MGbCmuAPxjg6lMNGp7QXZ3hArw4fmtCifTxBcVD5wC99wMuw5eyRWVyhyEGTocvJVeq3CRTLTaJ5V/MRNEPXGqOTER8Nm+JTMwtH8Vzamif3LRnZHtT86+08='
key = 'd719303e82ed09cdb24b717b1375f986'
ctx = execjs.compile(js)
s = ctx.call('getAesEncrypt',text,key)
print(s)
print((parse.unquote(s)))

js代码 = min3.js

var CryptoJS = require("crypto-js");function stringify1(t) {for (var r = t.words, e = t.sigBytes, i = [], n = 0; n < e; n++) {var o = r[n >>> 2] >>> 24 - n % 4 * 8 & 255;i.push(String.fromCharCode(o))}return escape(i.join(""))}
// function stringify(t) {
//                 try {
//                     return decodeURIComponent(escape(stringify1(t)))
//                 } catch (t) {
//                     throw new Error("Malformed UTF-8 data")
//                 }}
function getAesEncrypt(t,key) {//加密var r = CryptoJS.enc.Hex.parse(key);var p = CryptoJS.AES.decrypt(t, r, {mode: CryptoJS.mode.ECB,padding: CryptoJS.pad.Pkcs7});// return decodeURIComponent(escape(stringify1(p)))return stringify1(p)// return p.sigBytes// return CryptoJS.enc.Utf8.stringify(p);
}

最终得到结果

在这里插入图片描述


http://chatgpt.dhexx.cn/article/WbFxn3qB.shtml

相关文章

攻防世界_Crypto_Decrypt-the-Message

攻防世界刷题记录Crypto篇 文章目录 攻防世界刷题记录Crypto篇前言一、原题内容二、解题步骤1.了解poem code加密原理2.借助Python解密脚本解密 三、自己的一点解题方法和疑惑 前言 这应该是我在攻防世界网站遇到的第一道三分题&#xff0c;可以看到原题是出自2014年的一个比赛…

Encrypt/Decrypt Strings(加密/解密字符串)

2019独角兽企业重金招聘Python工程师标准>>> /*** Usage:* <pre>* String crypto SimpleCrypto.encrypt(masterpassword, cleartext)* ...* String cleartext SimpleCrypto.decrypt(masterpassword, crypto)* </pre>* author ferenc.hechler*/ public…

SECCON-CTF-2014-Decrypt-It-easy

题目 给了三个文件ecrypt1.bin,readme.txt,rnd 其中readme.txt: $ ./rnd crypt1.png ecrypt1.bin Solve 看到前面有一个$,猜测可能和linux系统有关&#xff0c;这一条信息有点像使用./目录下的rnd对crypt1.png进行某种操作&#xff0c;输出为ecrypt1.bin. file一下 file /…

JAVA使用mysql加密解密函数(AES_ENCRYPT/AES_DECRYPT)

前言 最近大学做JavaWeb课设时发现&#xff0c;很多同学的有关于账号密码都是明文储存在mysql数据库中&#xff0c;其实这样做在实际应用中是非常不安全的&#xff0c;其实mysql最近本身就提供了非常好的两个函数来供我们去加密解密我们要存入的数据&#xff0c;下面我们就来介…

Encrypt 和 Decrypt 加密--解密

[例句]In order to encrypt and decrypt, you need an encryption algorithm and a key. 为了进行加密和解密&#xff0c;您需要加密算法和密钥。 数据加密 数据加密利用密码技术对信息进行加密&#xff0c;实现信息的隐蔽&#xff0c;从而起到保护信息安全的作用。它通过加密…

CSS选择器分类大全

选择器(选择符)就是根据不同需求把不同的标签选出来这就是选择器的作用。 简单来说&#xff0c;就是选择标签用的。 分类&#xff1a;基础选择器、复合选择器 目录 一、基础选择器 二、复合选择器 三、CSS3选择器补充&#xff1a; &#xff08;一&#xff09;层级选择器&am…

CSS选择器常见用法总结

文章目录 一、选择器的基本概念二、基础选择器1.标签选择器2. 类选择器3. id选择器4. 通配符选择器基础选择器总结 三、复合选择器1. 后代选择器2. 子代选择器3. 并集选择器4. 伪类选择器4.1 链接伪类选择器4.2 force 伪类选择器 复合选择器总结 一、选择器的基本概念 功能&am…

css深度选择器deep

1.为什么要有deep 1.当我们给组件设置scoped的时候&#xff0c;此时我们组件的css样式只会对自己的内容生效&#xff0c;不会对子组件里面的内容生效。 <style lang"scss" scoped> .login-page {min-height: 100vh;background: url(/assets/login-bg.svg) no-r…

CSS学习笔记之选择器(一)

目录 CSS选择器 标签选择器 id选择器 class选择器 后代选择器 群组选择器 * CSS 规则由两个主要的部分构成&#xff1a;选择器&#xff0c;以及一条或多条声明: 选择器通常是您需要改变样式的 HTML 元素。 每条声明由一个属性和一个值组成。 属性&#xff08;property&…

属性选择器

1、属性选择器的写法&#xff1a; 标签名[属性] { 声明即样式 } 运行结果&#xff1a; 如上图&#xff0c;只要有 type 属性的 input 标签样式都会发生变化 当然&#xff0c;也可以给属性加上属性值来限制条件 运行结果&#xff1a; input[type"text"] ---- 只有 t…

选择器类型

2.1 id选择器 用法 : 给html标签添加id属性和属性值,然后用css选取,并进行一系列操作 example: html:<div id"我是id选择器"></div> css选取: 用 #id里面的内容,此时是 #我是id选择器 进行操作: #我是id选择器{ width:100px; height:100px; } id…

vue时间选择器

1、年-月-日 时:分 效果展示&#xff1a; 打开选择器&#xff1a; <div class"label">记录日期:</div> <nut-cell :showIcon"true" :isLink"true" click.native"switchPicker"><span slot"title"&…

CSS —— 选择器(带你深入了解如何使用选择器)

一、基础选择器 基础选择器&#xff1a;标签&#xff08;元素&#xff09;选择器&#xff0c;类选择器&#xff0c;id 选择器&#xff0c;通配符选择器。 标签选择器&#xff1a;html 代码中的标签&#xff0c;如 <html>、<body>、<h1>、<p>、<im…

选 择 器

目录 1、三种基本选择器&#xff08;重要&#xff09; &#xff08;1&#xff09;基本选择器 &#xff08;2&#xff09;类选择器 class &#xff08;3&#xff09;id选择器 2、层次选择器 &#xff08;1&#xff09;后代选择器 &#xff08;2&#xff09;子选择器 &am…

AD域基础

文章目录 AD域基础1.什么是AD域2.AD域和工作组的区别2.1 工作组特点及优缺点2.2 AD域特点及优缺点 3.为什么要做AD域管理4.AD域可以做什么 AD域基础 1.什么是AD域 active directory 活动目录&#xff0c;指一组服务器和工作站的集合&#xff0c;域中的目录是始终呈激活可用&a…

创建AD域

创建AD域&#xff08;skills.cn&#xff09;&#xff1a; &#xff08;1&#xff09;安装首台域控制器 &#xff08;2&#xff09;安装第二台域控制器 &#xff08;3&#xff09;将member server加入到skills.cn域 &#xff08;4&#xff09;将client加入到skills.cn域 建域的必…

AD域详细介绍和部署

文章目录 网络基础域一、概述二、部署域模式1. 部署活动目录&#xff08;AD&#xff09;2. 客户机加入域3. 组织单位&#xff08;OU&#xff09;4. 组策略4.1 概述4.2 创建GPO4.3 组策略应用顺序4.4 编辑测试组策略4.5 阻止继承4.6 强制组策略4.7 计算机&用户脚本4.8 计算机…

AD域允许普通用户打开需要管理员权限的软件

问题场景描述 公司的所有电脑都加了域&#xff0c;防止有些不安分的员工擅自下载及安装一些其他软件&#xff0c;导致电脑变卡或者中毒等&#xff0c;所以加了域后&#xff0c;安装任何软件都由IT来安装&#xff0c;但是这里涉及到一个问题&#xff0c;安装的时候需要管理员密…

AD域组策略管理

一、Active Directory组策略管理 ADManager Plus是一个基于web的Active Directory管理和报表工具&#xff0c;只需点击几下即可帮助为多个域管理组策略对象(GPO)。它还提供预制的组策略(GPO)报表&#xff0c;可快速提取GPO相关信息。 使用ADManager Plus轻松管理Windows Acti…

AD域:添加辅域控制器(辅域服务器)

前言&#xff1a; 如下我创建了一个AD域&#xff0c;现在只有一个主域控制器&#xff0c;也就是创建AD域的第一台服务器默认为主域控制器。为防止主域服务器出现故障影响整个域的运作&#xff0c;故现在要为该域添加一个辅域服务器&#xff0c;用来做备用域服务器。 域&#…