zoukankan      html  css  js  c++  java
  • DES(python)

    DES

    what?

    对称的加密算法

    why?

    如何保证安全性?

    通过各种置换操作,对明文进行加密。

    加解密效率高

    加密秘钥==解密密钥

    相对RSA来说如何不安全?

    因为加密密钥和解密密钥相同,加密的安全性就依赖于密钥的安全性,而在网络交互过程中,环境复杂,密钥的保密安全性难以保证。

    how?

    加密


    des对64位的明文进行分组操作,通过一个初始置换,将明文分成左半部分&右半部分。然后进行16轮完全相同的运算(f),在运算过程中数据与密钥结合,经过16轮后,左右半部分结合在一起,最后经过一个末置换(初始置换的逆置换),完成加密过程。

    DES的运行模式

    模式 描述 用途
    ECB 每个明文独立地以同一密钥加密 传送端数据(如一个加密密钥)
    CBC 加密算法的输入时当前明文组与前一密文组的异或 传送数据分组,认证
    CFB 每次只处理输入的 比特,将上一次的密文用作加密算法的输入以产生伪随机输出,改输出再与当前明文异或以产生当前密文 传送数据流,认证
    OFB 与CFB类似,不同再与本次加密算法的输入为前一次加密算法的输出 有扰信道上传送数据流

    代码:

    来源http://whitemans.ca/des.html

    # encoding: utf-8
    import pyDes
    
    # For Python3, you'll need to use bytes, i.e.:
    #   data = b"Please encrypt my data"
    #   k = pyDes.des(b"DESCRYPT", pyDes.CBC, b"", pad=None, padmode=pyDes.PAD_PKCS5)
    
    data = "加密Please encrypt my data"
    data = bytes(data,encoding='utf-8') #将utf8转化为byte,注意加密的数据必须为byte
    k = pyDes.des("DESCRYPT", pyDes.CBC, "", pad=None, padmode=pyDes.PAD_PKCS5)
    d = k.encrypt(data)
    print("Encrypted: %r" % d)
    print("Decrypted: %r" % k.decrypt(d))
    assert k.decrypt(d) == data
    
    
  • 相关阅读:
    springboot启动时不加载数据库
    ElasticSearch常用的查询操作
    Windows10 搭建ElasticSearch集群服务
    windows10安装ElasticSearch7.5遇到两个警告解决方法
    MybatisPlus自动生成代码配置
    初识RabbitMQ ------基本概念
    深拷贝与浅拷贝的区别
    Java8中 LocalDateTime与Date互相转换
    Spring中常用的工具类StringUtils、DateUtils、CollectionUtils等
    SpringBoot定时任务 @Scheduled cron 表达式说明
  • 原文地址:https://www.cnblogs.com/Erma/p/12350416.html
Copyright © 2011-2022 走看看