加密算法简述 以及 pycryptodome模块的使用

——引子:本文主要针对python使用密码学算法原理的简单表述,主要说明了几种加密算法的主要原理和特点;python相关库的安装、说明和使用。可以解决如下问题:1.from Crypto.Cipher import DES要安装pycrypto库。2.pycrypto安装不上怎么办。3.pycryptodome和pycryptodomex有什么区别

前言:
  • 版本:python3.7, pycryptodome3.9

  • 安装: pip install pycryptodome

  • 涉及模块说明: pycrypto、pycryptodome、pycryptodomex
    pycrypto: 原始密码学模块,无人维护(已废弃)
    pycryptodome: 强制替代pycrypto模块,用法相同,其安装在Crypto包下

    All modules are installed under the Crypto package.
    Check the pycryptodomex project for the equivalent library that works under the Cryptodome package.

    pycryptodomex: 同pycryptodome功能,但与pycrypto模块可以共存,都安装在Cryptodome包下

    All modules are installed under the Cryptodome package.
    Check the pycryptodome project for the equivalent library that works under the Crypto package.
    In this case, all modules are installed under the Cryptodome package. PyCrypto and PyCryptodome can coexist.

加密算法的分类:
  • 对称加密算法 具有更高的加密速度,但双方都需要事先知道秘钥,秘钥在传输过程中可能会被窃取,因此安全性没有非对称加密高。 如:‘DES’, ‘AES’, ‘3DES’

  • 非对称加密算法 加密速度低于对称加密算法,但安全性更高。 如:RSA, DSA, ECC

  • 利用字典的格式转换加密。 MAKETRANS()

DES加密:
  • 即数据加密标准,是一种使用秘钥加密的块算法,入口参数有三个:key, Data, Mode
    key为7个字节共56位,是DES算法的工作秘钥;
    Data为DES的工作方式,有两种:加密和解密
  • ‘3DES’:
    是DES向AES过渡的加密算法,使用两个秘钥,执行三次DES算法,
    加密的过程是加密-解密-加密
    解密的过程是解密-加密-解密
#DES加密示例:

from Crypto.Cipher import DES
key = b'abcdefgh' # 密钥 8位或16位,必须为bytes

def pad(text):
    """加密函数,如果text不是8的倍数【加密文本text必须为8的倍数!】,那就补足为8的倍数
    """
    while len(text) % 8 != 0:
        text += ' '
    return text

des = DES.new(key, DES.MODE_ECB) # 创建一个DES实例
text = 'Python rocks!'
padded_text = pad(text)
encrypted_text = des.encrypt(padded_text.encode('utf-8')) # 加密
print(encrypted_text)
#rstrip(' ')返回从字符串末尾删除所有字符串的字符串(默认空白字符)的副本
plain_text = des.decrypt(encrypted_text).decode().rstrip(' ') # 解密
print(plain_text)
AES加密&#x
  • 2
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值