首页 > 编程问答 >python 无法解密重音字符(如 è),我该怎么办?

python 无法解密重音字符(如 è),我该怎么办?

时间:2024-08-08 15:18:20浏览次数:9  
标签:python cryptography pycryptodome

我正在解决这个 ctf,您必须使用 PyCryptodome 模块通过 DES 加密消息。消息是“Launghezza di questa frase non è divisibile per 8”(意大利语)。我无法将此消息转换为字节,因为重音字符不包含在 utf-8 中(我认为这就是解释)。有人可以帮我加密消息吗?

from Crypto.Util.Padding import pad
from Crypto.Cipher import DES

Cipher = 'DES'
Mode_of_operation = 'CBC'
plaintext = b'La lunghezza di questa frase non è divisibile per 8'
padding_scheme = 'x923'
print(plaintext)

key = bytes.fromhex('fc479b5296ec6938')
cipher = DES.new(key, DES.MODE_CBC)
enc_message =  cipher.encrypt(pad(plaintext, 8,padding_scheme))
print(cipher.iv.hex())
print(enc_message.hex())

我尝试将重音字符转换为“\xe8”,但 ctf 平台声明它不正确。


问题不在于 UTF-8 不支持重音字符(它支持),而在于你没有将字符串编码为 UTF-8 字节。

修改你的代码如下:

from Crypto.Util.Padding import pad
from Crypto.Cipher import DES

Cipher = 'DES'
Mode_of_operation = 'CBC'
plaintext = 'La lunghezza di questa frase non è divisibile per 8'
# 将字符串编码为 UTF-8 字节
plaintext = plaintext.encode('utf-8')  
padding_scheme = 'x923'
print(plaintext)

key = bytes.fromhex('fc479b5296ec6938')
cipher = DES.new(key, DES.MODE_CBC)
enc_message =  cipher.encrypt(pad(plaintext, 8,padding_scheme))
print(cipher.iv.hex())
print(enc_message.hex())

通过调用 plaintext.encode('utf-8') ,你将字符串转换为正确的字节表示,使加密正常工作。

标签:python,cryptography,pycryptodome
From: 78846948

相关文章

  • Python笔记
    Python1变量1、什么是变量变量是关联一个对象的标识符变量可以绑定一个对象,并可以通过变量名使用这个对象2、变量的命名方法:以字母或下划线开头,后面跟字母、下划线或者数字3、python中的关键字不能用作变量名4、变量无类型,对象有类型5、在交互模式下查看当前作用域内的......
  • 如何在python中使用jdbc jar文件连接informix数据库
    有什么想法如何使用jdbcjar文件连接到informix数据库吗?在python我尝试了jaydebeapi,当我执行时:conn=jaydebeapi.connect('com.informix.jdbc.IfxDriver',myurl,['user','pass'],jdbc_driver_path)...然后从表中选择数据的其余代码当我执行myscript.py它只......
  • Python爬虫实战:实时微信推送奥运奖牌榜信息
    最近奥运会正在巴黎如火如荼地进行。为了能第一时间获得我国运动健儿的获奖情况,我给大家分享一个python爬虫项目——实时微信推送奥运奖牌榜信息。爬虫每隔5分钟抓取一次奥林匹克官网奖牌榜数据,对比上次抓取的数据,如果奖牌数量或者排名有变化,就将新的获奖信息推送到......
  • 基于Python实现可视化分析中国500强排行榜数据的设计与实现
    基于Python实现可视化分析中国500强排行榜数据的设计与实现“DesignandImplementationofVisualAnalysisforChina’sTop500CompaniesRankingDatausingPython”完整下载链接:基于Python实现可视化分析中国500强排行榜数据的设计与实现文章目录基于Python......
  • python使用selenium和PyPDF2保存多个html页面为pdf
    检索资料时看到比较完备的资料,想着要把所有页面保存下来。正好使用下requests和BeautifulSoup库获取和解析所有的静态页,把静态页保存为单个pdf文件,然后再把所有的pdf文件合并起来生成1个PDF文档。本来想使用python子进程调用wkhtmltopdf工具把静态页生成为单个pdf,然而如此一来pdf......
  • Python编码规范常用技巧
    Python编码规范常用技巧开场白:Python编码规范的艺术从一团乱麻到井然有序:我的Python代码进化史PEP8:Python编码规范的圣经为什么遵循编码规范如此重要命名约定:给你的代码起个好名字变量名:不只是标识符那么简单函数命名:让意图一目了然类与方法:面向对象的命名艺术代码结......
  • Python实现游戏中的音效制作与环境声音设计
    Python实现游戏中的音效制作与环境声音设计开场白:让声音活起来——游戏音频的魅力为什么游戏中的声音如此重要?个人体验分享:那些让人难忘的游戏音效Python在音频处理中的应用概览基础篇:Python环境搭建与音频库介绍快速入门:安装Python及必备音频处理库库推荐:pydub、soundf......
  • python拆分PDF文件
    先占个空,后面在慢慢更新下面这个代码实现讲一个PDF文件拆分成多个文件importPyPDF2defsplit_pdf(input_pdf_path,output_prefix,start_page,end_page):"""分割PDF文件为多个小的PDF文件,每个文件包含原始文档的一部分页面。:paraminput_pdf_path:输入......
  • Python动态执行代码
    在Python中,动态执行代码是一个强大的特性,它允许程序在运行时编译和执行字符串或存储在文件、数据库等中的代码。这种能力使得Python在需要高度灵活性和动态性的应用中特别有用,比如科学计算、数据分析、Web开发以及自动化脚本等。下面,我将详细介绍Python中动态执行代码的几种......
  • 在Python中,模块(Module)和包(Package)
    在Python中,模块(Module)和包(Package)是组织代码、提高代码复用性、促进代码维护的两种重要机制。它们各自扮演着不同的角色,但又紧密相连,共同构成了Python程序架构的基础。以下将详细阐述Python中模块和包的概念及其区别。一、模块(Module)的概念在Python中,模块是一个包含了Pyth......