首页 > 编程语言 >Day03 3.3 使用Python还原算法

Day03 3.3 使用Python还原算法

时间:2023-06-17 18:37:16浏览次数:57  
标签:加密 Day03 DES rsa Python plaintext 3.3 key print

Day03 3.3 使用Python还原算法

  • 加密分类
    • 1、单向加密 :
      • MD5、sha系列不可逆
    • 2、对称加密:
      • AES、DES
    • 3、非对称加密:
      • RSA、DSA
    • 4、补充算法:
      • base64

【一】md5

import hashlib
m = hashlib.md5()
m.update('helloworld'.encode("utf8"))
print(m.hexdigest())

【二】sha

import hashlib
sha1 = hashlib.sha1()
data = 'helloword'
sha1.update(data.encode('utf-8'))
sha1_data = sha1.hexdigest()
print(sha1_data)

【三】DES加密

# pip3 install pycryptodomex -i https://pypi.douban.com/simple
# DES是一个分组加密算法,典型的DES以64位为分组对数据加密,加密和解密用的是同一个算法。它的密钥长度是56位(因为每个第8 位都用作奇偶校验),密钥可以是任意的56位的数,而且可以任意时候改变。

from Cryptodome.Cipher import DES
key = b'88888888'
data = "hello world"
count = 8 - (len(data) % 8)
plaintext = data + count * "="
des = DES.new(key, DES.MODE_ECB)
ciphertext = des.encrypt(plaintext.encode())
print(ciphertext)

plaintext = des.decrypt(ciphertext)
plaintext = plaintext[:(len(plaintext)-count)]
print(plaintext)

【四】非对称加密算法-RSA

# 安装模块
pip3 install rsa -i https://pypi.douban.com/simple

import rsa
# 返回 公钥加密、私钥解密
public_key, private_key = rsa.newkeys(1024)
print(public_key)
print(private_key)

# plaintext = b"hello world"
# ciphertext = rsa.encrypt(plaintext, public_key)
# print('公钥加密后:',ciphertext)
# plaintext = rsa.decrypt(ciphertext, private_key)
# print('私钥解密:',plaintext)

### 使用私钥签名
plaintext = b"hello world"
sign_message = rsa.sign(plaintext, private_key, "MD5")
print('私钥签名后:',sign_message)

## 验证私钥签名
plaintext = b"hello world"
# method = rsa.verify(b"hello world", sign_message, public_key)
method = rsa.verify(b"hello world1", sign_message, public_key) # 报错Verification failed
print(method)

【五】base64

import base64

# 编码
res=base64.b64encode(b'hello world')
print(res)

# 解码
res=base64.b64decode('aGVsbG8gd29ybGQ=')
print(res)

标签:加密,Day03,DES,rsa,Python,plaintext,3.3,key,print
From: https://www.cnblogs.com/dream-ze/p/17488021.html

相关文章

  • Day03 3.2 HOOK
    Day033.2HOOK【一】hook框架fridaHook框架是一种技术,用于在运行时拦截和修改应用程序的行为。通过Hook,你可以劫持应用程序的方法调用、修改参数、篡改返回值等,以达到对应用程序的修改、增强或调试的目的常见的有:XposedFramework:Xposed是一个功能强大的开源H......
  • python: encode and decode
    importbinasciigeovin=b"geovindu"adu=base64.b64encode(geovin)#加密码print(adu)edu=base64.b64decode(adu)#解密print(edu)s=["医疗",400,1]column=('InsuranceName','InsuranceCost'......
  • PySide6(Qt for Python) QTableWidget表头边框线问题
    这个问题是在Windows10平台下特有问题。网络上有很多QtC++的解决方案。但是没有特定的PySide6的解决方案(以下是参考的QtC++的解决方案)。链接:https://blog.csdn.net/qq_22642239/article/details/122863344问题描述C++的解决方案是设置纵横表头的样式表:horizontalHeader,v......
  • Python中eval 与 exec 函数的区别
    eval和exec都是Python内置函数,并且都能把字符串当作代码执行,那区别是什么呢?eval函数只能计算单个表达式的值,而exec函数可以动态运行代码段;exec函数能直接执行文件中的Python代码,eval函数不能实现这个功能;eval函数可以有返回值,而exec函数返回值永远为None;举......
  • Day03
    1.需要注意的点从JavaSE7即JDK7开始,switch支持字符串String类型了,同时case的标签必须为字符串常量或者字面量。在编译时,字符串实际上是利用hashCode来实现比较的从JavaSE5即JDK5开始,新增用于数组和集合的增强型for循环方法中可变参数的本质就是数组递归时,只适合小基数。......
  • Python潮流周刊#7:我讨厌用 asyncio
    你好,我是猫哥。这里记录每周值得分享的Python及通用技术内容,部分为英文,已在小标题注明。(标题取自其中一则分享,不代表全部内容都是该主题,特此声明。)首发于我的博客:https://pythoncat.top/posts/2023-06-17-weekly7......
  • Python如何爬取京东mac电脑的数据?全球HTTP代理应用
    618要来了,不买点啥总觉得少了点什么,正好我用了5 6 年的电脑想换,这可不就来活了嘛!我们用Python也能简单获取某东上的mac电脑价格。不整虚的,直接就是一个冲,来看代码:importrequestsfrombs4importBeautifulSoupdefget_jd_laptops():url="https://search.jd.com/Search......
  • python之shutil模块
    shutil可以简单的理解为sh+util,是对os模块的补充,主要针对文件的拷贝、删除、移动、压缩和解压缩等操作。1复制复制文件:importshutil#从src文件路径复制数据到dst,复制成功后返回dst完整路径,src、dst是文件路径不能是文件目录。如果当前的dst已存在的话就会被覆盖掉shuti......
  • Python 字符编码转换(转载)
    Python字符编码转换1.在python2默认编码是ASCII,python3里默认是unicode2.unicode分为utf-32(占4个字节),utf-16(占两个字节),utf-8(占1-4个字节),soutf-16就是现在最常用的unicode版本,不过在文件里存的还是utf-8,因为utf8省空间3.在py3中encode,在转码的同时......
  • Python3网络爬虫开发实战阅读笔记
    基本库的使用网络请求库urllib(HTTP/1.1)Python自带请求库,繁琐基础使用:略requests(HTTP/1.1)Python常用第三方请求库,便捷基础使用:略httpx(HTTP/2.0)Python第三方库,支持HTTP/2.0,支持异步请求,支持Python的async请求模式pipinstall'httpx[http2]'基础使用:与requests相似,默认......