常见加密算法的简介和python的实现,使用各种库实现,而不是源码实现

  • 对称加密
    • DES加密
  • 非对称加密
    • RSA加密
  • 消息摘要算法/签名算法
    • MD5
  • 国密算法
    • SM1 对称密码
    • SM4 对称算法
    • SM7 对称算法
    • ZUC祖冲之算法
    • SM2椭圆曲线公钥密码算法
    • SM9 IBC(Identity-Based Cryptography)密码算法
    • SM3杂凑算法

对称加密

加密密钥和解密密钥相同:DES、3DES、AES、RC4、Rabbit

DES加密

  • 使用的库:pyDes、base64
  • 密钥长度只能8位,如果想要更复杂,可以用多个密钥,进行多次加密即可
  • 密钥输入是8字符,64位,但是使用是56位进行加密运算
from pyDes import des, CBC, PAD_PKCS5
import base64class pydes_DES:KEY = 'mHAxsLYz'                             # 秘钥IV = b"\x52\x63\x78\x61\xBC\x48\x6A\x07"     # 自定IV向量def __init__(self,KEY):self.KEY = KEYdef encrypt(self,st):k = des(self.KEY, CBC, self.IV, pad=None, padmode=PAD_PKCS5)en = k.encrypt(st.encode('utf-8'), padmode=PAD_PKCS5)            # 中文字符需要先utf-8编码,英文不用return base64.b64encode(en)def descrypt(self,enst):k = des(self.KEY, CBC, self.IV, pad=None, padmode=PAD_PKCS5)de = k.decrypt(base64.b64decode(enst), padmode=PAD_PKCS5)return de.decode("utf-8")if __name__ == '__main__':txt = "今天真开心"key = '12345678'           # 只能8个字符d1 = pydes_DES(key)ms = d1.encrypt(txt)print(ms)ms2 = d1.descrypt(ms)print(ms2)

非对称加密

加密密钥和解密不同,分给公钥和私钥,公钥公开,私钥保留:RSA、DSA、ECC

RSA加密

  • 使用的包 :rsa
  • 基于的数学困难问题:大质数分解问题
import rsa
class s_RSA:def create_keys(self):  # 生成公钥和私钥(pubkey, privkey) = rsa.newkeys(1024)pub = pubkey.save_pkcs1()pri = privkey.save_pkcs1()self.pub = pub      # 公钥self.pri = pri      # 私钥def encrypt(self,st):  # 用公钥加密pubkey = rsa.PublicKey.load_pkcs1(self.pub)return rsa.encrypt(st.encode('utf8'), pubkey)# 加密后的密文def decrypt(self,text):  # 用私钥解密privkey = rsa.PrivateKey.load_pkcs1(self.pri)return rsa.decrypt(text, privkey).decode() # 注意,这里如果结果是bytes类型,就需要进行decode()转化为strif __name__ == '__main__':txt= "今天真开心"rsa1 = s_RSA()rsa1.create_keys()ms= rsa1.encrypt(txt)ms2= rsa1.decrypt(ms)print("加密前:",txt)print("加密后:",ms)print("加密后",ms2)

消息摘要算法/签名算法

MD5、SHA、HMAC、PBKDF2

MD5

  • 使用的包:hashlib
  • 特点是单向函数,不可逆,不可解密,但是加密内容简单的话,会有彩虹表查找攻击,可以解密
class s_MD5:def encode(self,st):hl = hashlib.md5()                              # 创建md5对象hl.update(st.encode(encoding='utf-8'))          # 这里可以改变编码,达到不同结果hl.update(st.encode(encoding='gbk'))code = hl.hexdigest()return code
txt = "今天真开心"print(s_MD5().encode(txt))

国密算法

我参考的博客
国家密码局国家制定的一系列算法密码标准。
包括:SM1(SCB2)、SM2、SM3、SM4、SM7、SM9、祖冲之密码算法(ZUC) 等。

  • SM1、SM4、SM7、祖冲之密码(ZUC)是对称算法。
  • SM2、SM9是非对称算法。
  • SM3是哈希算法。
  • 其中SM1、SM7算法不公开,调用该算法时,需要通过加密芯片的接口进行调用。

SM1 对称密码

  • 密钥长度128比特,算法安全保密强度及相关软硬件实现性能与 AES 相当
  • 算法保密,不公开

SM4 对称算法

  • 分组长度128比特,加密算法和解密算法结构相同,只是轮密钥的使用顺序相反

SM7 对称算法

  • 分组密码算法,分组长度128比特,密钥长度128比特
  • 适用于非接触式IC卡,门禁卡、工作证、参赛证、赛事门票、校园一卡通、企业一卡通

ZUC祖冲之算法

  • 中国自主研究的流密码算法,运用于移动通信4G网络中的国际标准密码算法
  • 包括祖冲之算法(ZUC)、加密算法(128-EEA3)、完整性算法(128-EIA3)三个部分

SM2椭圆曲线公钥密码算法

  • 基于ECC椭圆曲线密码机制
  • 包括数字签名算法,公钥加密算法,密钥交换协议

SM9 IBC(Identity-Based Cryptography)密码算法

  • 将用户的身份信息(邮件地址,手机号码,QQ号码)作为公钥,不需要CA证书中心。
  • 适合端对端离线安全通讯,云端数据加密,基于属性加密,基于策略加密

SM3杂凑算法

  • 这是一个哈希算法,适用于商用密码应用中的数字签名和验证
  • 提供消息认证码的生成与验证以及随机数的生成
  • 输入长度小于264,生成长度位256比特的哈希值

python常见加密方法实现,DES,AES,RSA,MD5,国密。--更新中相关推荐

  1. C#加密解密(DES,AES,Base64,md5,SHA256,RSA,RC4)

    一:异或^简单加解密(数字类型) 1:原理: 异或用于比较两个二进制数的相应位,在执行按位"异或"运算时,如果两个二进制数的相应位都为1或者都为0,则返回0;如果两个二进制数的相应 ...

  2. 加密算法(DES,AES,RSA,ECC,MD5,SHA1)简介

    加密算法(DES,AES,RSA,MD5,SHA1)简介 一.对称性加密算法 二.非对称算法 三.散列算法 四.算法举例 1.对称性加密算法有:AES.DES.3DES 1.1.DES(Data En ...

  3. python自带的对称算法_一种基于对称算法和专用加载模块的Python程序模块加密方法...

    一种基于对称算法和专用加载模块的Python程序模块加密方法 [专利说明]一种基于对称算法和专用加载模块的Python程序模块加密方法 技术领域 [0001]本发明涉及一种网络安全技术,具体涉及一种P ...

  4. 单片机常见加密方法有哪些?如何对单片机进行解密?

    为增进大家对单片机的认识,本文将对单片机的常见加密方法以及单片机解密方法予以介绍. 单片机可以说是一个小型计算机,通过单片机,可以开发出来很多有意思的东西.为增进大家对单片机的认识,本文将对单片机的常 ...

  5. java中的DES,AES,BASE64,MD5和Cipher类\MessageDigest类

    Cipher类位于javax.crypto包下,声明为 public class Cipher extends Object 此类为加密和解密提供密码功能.它构成了 Java Cryptographi ...

  6. Python常见加密方式总结和实现

    一.前言 我们所说的加密方式,都是对二进制编码的格式进行加密的,对应到Python中,则是我们的Bytes. 所以当我们在Python中进行加密操作的时候,要确保我们操作的是Bytes,否则就会报错. ...

  7. python常见加密方式总结踩坑小贴士

    本文是向大家介绍python中常见的一些加密方式,在使用python的时候遇到数据加密的情况时,可以根据实际场景来选择加密的方式对数据进行加密,加强数据传输的安全性. 一.前言 日常工作中经常会看到各 ...

  8. Python 常见加密方式和实现

    一.前言 我们所说的加密方式,都是对二进制编码的格式进行加密的,对应到Python中,则是我们的Bytes. 所以当我们在Python中进行加密操作的时候,要确保我们操作的是Bytes,否则就会报错. ...

  9. Python hashlib 加密方法(MD5、SHA1、SHA256、SHA52)

    Python hashlib 加密 Python 提供了 hashlib 模块来进行加密操作.在下面的文章中,我们将介绍 hashlib 模块的常用加密算法. 1. hashlib 简介 hashli ...

最新文章

  1. makefile:4:***缺少分隔符。 停止
  2. 数据结构 栈的应用
  3. antd 文本域超长问题_「自然语言处理(NLP)」阿里团队--文本匹配模型(含源码)...
  4. 【FTP】FTP服务器的搭建
  5. b500k电位器引脚接法_可调电位器实物接线图及接线方法详解
  6. java static new_java静态类new的对象是否能被回收?
  7. (转)script标签到底该放在哪里
  8. qt客户端打包_悬赏问答 - QT 类似QQ的 服务器与客户端程序 程序打包+数据库问题...
  9. Python socket TCP
  10. 英特尔发布年度企业社会责任报告,首次定义“全球性挑战”
  11. php mysql 跨库_PHP使用PDO进行跨数据库操作
  12. android选择选择图片封装库,Android_Album_android图片选择库
  13. Openwrt安装transmission离线下载
  14. Kubernets k8s中yml格式与pod yml格式
  15. rem 针对设计稿宽度,设计rem调试比例
  16. 身份证OCR识别,居民二代身份证识别第三方数据接口
  17. 论文查重软件怎么选择
  18. python打擂台法_一起来捉妖:这种打擂台方法不可用,玩家试了一下,被无情封禁...
  19. html中背景条纹效果,css3 条纹背景滚动效果
  20. VS开发Qt应用时遇到“找不到VCRUNTIME140D_APP.dIl,无法继续执行代码”的错误

热门文章

  1. fileinclude (攻防世界web)
  2. 江苏省计算机高一考试试题,江苏省计算机等级考试试题参考
  3. android 错误中英互译,安卓手机Recovery模式刷机情况下的中英文对照翻译
  4. 前端面试----深信服面试题全概
  5. [算法][面试题]疯狂队列-排列使得序列两两间“差值的绝对值“之和最大
  6. “200+语种,11种文档格式”,百度文档翻译API,真的很好用
  7. [网络爬虫|smtp协议|python]东方财富网爬虫,python smtp协议发送爬取数据至QQ邮箱
  8. 最新Chromedriver与Chrome版本对应参照表【附下载链接】
  9. 2019年一月十日 Mixin Network 资产持有量快照
  10. 苹果新iPhone发布会9月11日开幕 官宣海报神似西瓜霜