将DES解密用Python实现

news2024/12/26 22:57:57

将此段代码用python实现

var CryptoJS = require("crypto-js");
var ciphertext = "1MpdxK203+ZrnyxuJRrYatKSBxHUIi1TSdQF2BQKXOG54plwfaB2GA==";
var key = CryptoJS.enc.Utf8.parse("11");
var parsedCiphertext = CryptoJS.enc.Base64.parse(ciphertext);
var decrypted = CryptoJS.DES.decrypt(
    {
      ciphertext: parsedCiphertext
    },
    key,
    {
      mode: CryptoJS.mode.ECB,
      padding: CryptoJS.pad.Pkcs7
    }
  );
var plaintext = decrypted.toString(CryptoJS.enc.Utf8);
console.log(plaintext)
def encrypt(key, text, mode):
    '''
    DES加密
    :param key: 密钥
    :param text: 待加密文本
    :param mode: 模式
    :return:
    '''
    key = key
    text = text.encode('utf-8')
    pad_text = pad(text, DES.block_size, style='pkcs7')
    cipher = DES.new(key, mode)
    enc_data = cipher.encrypt(pad_text)
    return base64.b64encode(enc_data).decode('utf-8')


def decrypt(key, text, mode):
    '''
    DES解密
    :param key: 密钥
    :param text: 待解密文本
    :param mode: 模式
    :return:
    '''
    new_key = key
    new_text = base64.b64decode(text)  # base64解码
    cipher = DES.new(new_key, mode)
    dec_data = cipher.decrypt(new_text)
    return dec_data[:-dec_data[-1]].decode('utf-8') # 去除末尾填充的字符


if __name__ == "__main__":
    # 1MpdxK203+ZrnyxuJRrYatKSBxHUIi1TSdQF2BQKXOG54plwfaB2GA==
    key = b'11'
    key = key.ljust(8, b"\x00")
    print(key)
    pwd = '0587c1d12f7904ceed8613d8038b211c'
    enc_pwd = encrypt(key, pwd, DES.MODE_ECB)
    print(enc_pwd)
    dec_data = decrypt(key, enc_pwd, DES.MODE_ECB)
    print(dec_data)

注意: CryptoJS.enc.Utf8.parse(“11”); 如果不满8字节 DES.new(new_key, mode) 会报出异常,踩了很大的坑。
key = b’11’
key = key.ljust(8, b"\x00") 使用空字节补全

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/713467.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

6月VR大数据:Quest 2下跌2个百分点,SteamVR统计加入大朋E4

Hello大家好,每月一期的VR内容/硬件大数据统计又和大家见面了。 想了解VR软硬件行情么?关注这里就对了。我们会统计Steam平台的用户及内容等数据,每月初准时为你推送,不要错过喔! 本数据报告包含:Steam VR硬…

计算机找不到msvcr120.dll无法安装启动,三招修复方法

在安装运行软件的时候,计算机提示“找不到msvcr120.dll”,“msvcr120.dll缺失”无法启动运行是什么原因呢?msvcr120.dll是一个Windows系统的动态链接库,它是Microsoft Visual C Redistributable for Visual Studio 2013的一部分。…

Rosetta从头蛋白抗体设计、结构优化及在药物研发中的应用专题

第一天 时间:AM9:00~9:50 内容:一.从蛋白质折叠到蛋白质设计 教学目标:了解本方向内容、理论基础、研究意义。主要知识点 主要知识点:1蛋白质折叠与结构预测简介 1.1主链二面角与二级结构 1.2侧链堆积与三级结构 2蛋白质设计简介 2.1蛋白质设计的分类及应用 时间:AM…

DataGrip编写SQL语句操作Spark(Spark ThriftServer)

文章目录 1.Spark ThriftServer2.启动 Spark ThriftServer3.Beeline方式连接4.DataGrip方式连接5. 代码方式6. SparkSQL运行方式7.参考文章 1.Spark ThriftServer Spark ThriftServer 相当于一个持续性的Spark on Hive集成模式,可以启动并监听在10000端口&#xff…

盘口策略 | 交易中最重要的是什么?

量化策略开发,高质量社群,交易思路分享等相关内容 『正文』 ˇ 交易中最重要的是什么? 当然是Timing啊~~~ “时机是这个世界上最难得到,又最容易失去的东西”夫难得而易失者,时也;时至而不旋踵者,机也,故圣人常顺时…

浅谈Java8中map的新方法

Map在java8中新增了两个replace的方法 1.replace(k,v) 在指定的键已经存在并且有与之相关的映射值时才会将指定的键映射到指定的值(新值) 在指定的键不存在时,方法会return回来一个null javadoc的注释解释了该默认值方法的实现的等价Java…

Web安全-Godzilla(哥斯拉)Webshell管理工具使用

为方便您的阅读,可点击下方蓝色字体,进行跳转↓↓↓ 01 工具下载地址02 运行环境03 工具介绍04 使用案例 01 工具下载地址 https://github.com/BeichenDream/Godzilla点击页面右侧"releases",进入工具的版本下载页面。 在个人终端…

安装配置云计算模板机

安装虚拟机模板机 一、在VMware上安装Centos虚拟机二、修改虚拟机的ip、网关、DNS三、更换yum源3.1 更换本地yum源3.2 更换国内互联网Yum源 四、 安装net-tools和bash-completion五、 关闭防火墙和SELinux 学习云计算后续需要多个虚拟机,作为云计算集群的节点&#…

数据结构--初识栈和队列

1.栈 1.1栈的概念及结构 栈:一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈顶,另一端称为栈底。栈中的数据元素遵守后进先出LIFO(Last In First Out)的原则。 压…

神级 IDEA 插件!效率提升 50 倍!

安装好Intellij idea之后,进行如下的初始化操作,工作效率提升50倍。 一. 安装插件 1. Codota 代码智能提示插件 只要打出首字母就能联想出一整条语句,这也太智能了,还显示了每条语句使用频率。原因是它学习了我的项目代码&#…

4.从CPU缓存结构到原子操作

一、CPU缓存结构 1.1 CPU的多级缓存 因为CPU的计算速度非常快,但内存的访问速度相对较慢。因此,如果CPU每次都要从内存读取数据,会造成大量的等待时间,降低整体性能。 通过引入多级缓存,可以在CPU和内存之间建立数据…

html5学习精选5篇案例

html5学习心得1 一:了解HTML5前端开发技术 HTML 指的是超文本标记语言 (Hyper Text Markup Language),标记语言是一套标记标签 (markup tag),HTML 使用标记标签来描述网页。HTML5区别于HTML的标准,基于全新的规则手册&#xff0…

stm32mp157aaa裸机开发学习之led灯亮灭

asm-led.S .text .global _start _start: /**********LED1点灯**********//**********RCC章节初始化**********/ RCC_INIT:通过RCC_MP_AHB4ENSETR寄存器使能GPIOE组控制器 0x50000A28[4] 1ldr r0,0x50000A28 LED1 GPIOE10 LED3 GPIOE8ldr r1,[r0]orr r1,r1,#(0x1 << 4…

vite4+vue3:从0到1搭建vben后台管理系统(四)-封装dayjs的日历组件

前言 在后台管理系统中,封装vue的日历组件是很常见的一个功能,有时候antdvue里面的组件跟我们业务需求差异比较大时,去改antdui的官方组件比较麻烦,这个时候,我们就得自己去封装这样一个日历组件,效果如下图所示: 两种实现方式之vue2.x的实现 <template><div&…

用简单易懂的方式手写一个单例模式,看了不会来打我

文章目录 一、如何手写一个单例模式1.1 什么是单例模式1.2 单例模式的适用场景1.3 单例模式的设计原理1.4 单例模式的实现方案1.5 代码测试 一、如何手写一个单例模式 1.1 什么是单例模式 单例模式是一种常用的软件设计模式&#xff0c;它的核心是只包含一个实例的特殊类。单…

每日一道算法题--进制转换

进制转换 题目来源解题思路代码 题目来源 题目链接: 进制转换 解题思路 首先&#xff0c;从标准输入读取两个整数 M 和 N&#xff0c;分别表示待转换的十进制数和目标进制。如果输入的十进制数 M 等于 0&#xff0c;直接输出 0 并返回。判断输入的十进制数是否为负数&#xf…

网络商城源码如何选择?

电商行业的不断发展&#xff0c;越来越多的企业和商家希望建设自己的网络商城系统&#xff0c;为消费者提供更加便捷的购物体验。 但是&#xff0c;想要实现这一目标&#xff0c;选择一款优秀的网络商城系统源码至关重要。那么&#xff0c;在如此众多的商城系统源码中&#xff…

局域网内,将笔记本作为台式机的扩展屏

目录 1、驱动端下载&#xff1a; 2、笔记本下载 显示端&#xff1a; 3、连接状态&#xff1a; 4、笔记本扩展屏&#xff1a; 如果&#xff0c;都支持无线显示器的话&#xff0c;可以用window内置的winp实现&#xff0c;可惜我的台式机不支持&#xff0c;所以采用了软件的方…

结构体和数据结构--向函数传递结构体

将结构体传给函数的方式有以下三种&#xff1a; 目录 一、用结构体的单个成员作为函数参数&#xff0c;向函数传递结构体的单个成员 二、用结构体变量作函数实参&#xff0c;向函数传递结构体得完整结构 三、用结构体指针或结构体数组作函数参数&#xff0c;向函数传递结构体…

亿发软件:智能制造时代,企业为什么选择量身定制信息化软件系统

在快节奏的市场环境中&#xff0c;每个企业都寻求建立自己的管理模式&#xff0c;这往往成为竞争优势。然而&#xff0c;标准化软件产品的使用有时会扼杀企业管理的个性化&#xff0c;而僵化的制度则阻碍管理升级。此外&#xff0c;单个的部门级软件会造成信息孤岛&#xff0c;…