肩膀

DES算法实例详解

python加密

3DES图示

DES 和 3DES

DES 的密钥过短,现在已经不推荐使用了,所以这个库没有 DES 的算法封装,如果你需要使用这种算法,推荐用 pyDes 这个库。 DES 需要提供以下数据:

  • key 秘钥,56, 112, 或者 168 位(bits)
  • mode 加密方式,可以是 ECB 和 CBC
  • IV 初始向量,CBC 方式必须提供,加密的 IV 和解密的 IV 必须一致。
  • pad 补位字符串,如果补位方式是 Normal, 必须提供,如果补位方式是 PAD_PKCS5, 不需要提供。
  • padmode 补位方式,可以是 Normal 和 PAD_PKCS5,建议 PAD_PKCS5

这个库使用 DES 加密,默认使用 ECB 方式,默认补位方式为 PKCS5 写法比较简单,得到的是一个 bytes 类型。

import pyDes
key = 'mysecret'
cipher = pyDes.des(key, padmode=pyDes.PAD_PKCS5)
encrypted = cipher.encrypt('abc')
# >>> b'v\x02J\x867\x8fQ\\'

解密的 key, mode, IV, pad, padmode 都和加密时保持一致:

cipher = pyDes.des(key, padmode=pyDes.PAD_PKCS5)
decrypted = cipher.decrypt(encrypted)
# >>> b'abc'

详细版加密

import pyDes
key = 'mysecret'
cipher = pyDes.des(key, mode=pyDes.CBC, # 模型IV='\0\0\0\0\0\0\0\0', # IVpad= ' ', # 空格补位padmode=pyDes.PAD_NORMAL
)
encrypted = cipher.encrypt('abc')
# >>> b'v\x02J\x867\x8fQ\\'

详细版解密

cipher = pyDes.des(
key,
mode=pyDes.CBC, # 模型
IV='\0\0\0\0\0\0\0\0', # IV
pad= ' ', # 空格补位
padmode=pyDes.PAD_NORMAL
)
decrypted = cipher.decrypt(encrypted)
# >>> b'abc'

3DES 在 DES 的基础上增加了密钥长度,秘钥可以是 64, 128 或者 192 位(bits), 3DES 目前也不推荐使用,因为他的速度非常慢。

import pyDes
import os
key = os.urandom(16)
cipher = pyDes.triple_des(key, padmode=pyDes.PAD_PKCS5)
encrypted = cipher.encrypt('abc')
# >>> b'DGFx\xc6\xb4\xad@'
cipher = pyDes.triple_des(key, padmode=pyDes.PAD_PKCS5)
decrypted = cipher.decrypt(encrypted)
# >>> b'abc'

在 cryptography 中的使用和 AES 基本一致,只需要把算法名称改一下就可以了。

from cryptography.fernet import (Cipher, algorithms, modes, padding
)
key = os.urandom(16)
iv = os.urandom(8)
cipher = Cipher(algorithm=algorithms.TripleDES(key),mode=modes.CBC(iv)
)
encryptor = cipher.encryptor()
padder = padding.PKCS7(128).padder()
padder_data = padder.update(b'wyz') + padder.finalize()
cipher_text = encryptor.update(padder_data) + encryptor.finalize()

密码算法之DES---3DES原理相关推荐

  1. 【密码算法 之零】对称算法(DES,、3DES、 AES、DM5、HMAC、CMAC、SHAxx、SM3、SM4),非对称算法(RSA、ECC、ECDSA、ECDH、SM2、SM9...)

      由于工作的需要,在过去的两年中学习.适配了很多算法,包括对称算法.非对称算法.国密算法.国际算法等.为了逼迫自己能够牢记并掌握这些算法的基本知识点,故本人写了一个关于算法的专栏(持续更新中...) ...

  2. 如何实现DES/3DES算法

    如何实现DES/3DES算法 原文:Matthew Fischer 翻译:小榕软件实验室 <  这篇文档是我从小榕实验室下载的,为了保证原文的完整性,如果有影响原文内容的改动,我会把我写的用中扣 ...

  3. 通俗易懂,十分钟读懂DES,详解DES加密算法原理,DES攻击手段以及3DES原理。Python DES实现源码

    文章目录 1.什么是DES 2.DES的基本概念 3.DES的加密流程 4.DES算法步骤详解 4.1 初始置换(Initial Permutation,IP置换) 4.2 加密轮次 4.3 F轮函数 ...

  4. 3、【java数据安全】对称加密的5种(DES/3DES、AES、IDEA、PBE)常见算法的使用示例

    java数据安全 系列文章 1.[java数据安全]数据安全之加密解密(base64.MD.SHA.DES.AES.IDEA.PBE.DH.RSA.EIGamal).数字签名(DSA.ECDSA)和数 ...

  5. DES密码算法实现(C语言)

    算法介绍 DES算法为密码体制中的对称密码体制,又被称为美国数据加密标准,是1972年美国IBM公司研制的对称密码体制加密算法. 明文按64位进行分组,密钥长64位,密钥事实上是56位参与DES运算( ...

  6. 安全密码c语言编程,商用密码算法原理与C语言实现

    2020年1月1日,<中华人民共和国密码法>正式施行.国家鼓励和支持密码科学技术研究与应用,促进密码科学技术进步与创新,加强密码人才培养和队伍建设,采取多种形式加强密码安全教育.本书是在国 ...

  7. 凯撒密码(Caesar)的原理和算法实现(C语言)

    凯撒密码(Caesar)的原理和算法实现 1.凯撒密码的原理: 它是一种古典密码体质下的一种密码,是一种移位密码,具有单表密码的性质,密文和明文都使用同一个映射,为了保证加密的可逆性,要求映射都是一一 ...

  8. 密码算法原理与实现:Base64编码

    本文转自网络文章,内容均为非盈利,版权归原作者所有. 转载此文章仅为个人收藏,分享知识,如有侵权,马上删除. 原文作者:QiuJYu 原文地址:密码学基础:Base64编码 目录 文章概述: Base ...

  9. 【密码算法 之七】GCM 浅析

    文章目录 1. 概述 1.1 GHASH 1.3 GCTR 2. GCM 加密 3. GCM 解密 4. 总结   在我的另一篇博客[密码算法 之三]分组密码工作模式 (ECB \ CBC \ CFB ...

  10. 商用密码应用与安全性评估要点笔记(密码发展、密码算法)

    1.3 密码发展 词条 内容 创新的动力 信息系统的应用需求和攻击威胁 发展三个阶段 古典密码.机械密码.现代密码 古典密码 代换密码,采用一个代换表将一段明文变换成一段密文.若代换表只有一个,是单表 ...

最新文章

  1. pandas索引复合索引dataframe数据、索引其中一个水平(level)的所有数据行(index all rows in a level)
  2. python基于百度接口的语音识别_Python基于百度接口的语音识别
  3. [SPOJ 687]Repeats
  4. VC++新建选择卡的解释
  5. python下面的代码_解析一下下面的python代码?
  6. python中列表的值与内存地址_python---列表、元组
  7. Java讲课笔记05:运算符与表达式
  8. 根据快手账号的分享链接下载无水印视频,思路
  9. excel 个人日常记账——统计报表
  10. 最强内存稳定性测试软件,内存稳定性测试软件Memtest正式版——HyperX FURY DDR4成绩喜人...
  11. CorelDRAW快速制作八心八箭钻石项链效果
  12. 最新版火车头织梦内容发布规则_火车头采集 - 织梦图集发布模块的制作
  13. 使用switch常量c语言,c语言switch(c语言switch语句用法)
  14. 智能骨科图像方向,按照期刊进行的文献整理
  15. 爬动的蠕虫(C语言)
  16. mysql mybatis分表查询_mybatis 自动分表
  17. python 中的 __len__(self) 方法
  18. uniapp:去掉微信小程序顶部的导航栏
  19. 数据分析师的具体工作职责和工作内容有哪些?
  20. 微信小程序中使用字体库_小程序使用自定义字体库

热门文章

  1. 什么是微服务网关?SpringCloud Gateway保姆级入门教程
  2. 【MATLAB appdesigner】27_如何在appdesigner中调试,查看变量?(举例+技巧)
  3. 如何从“设计师必考三大证书”中,正确看待:adobe认证证书含金量?
  4. jre8 64位官网安装版下载
  5. 项目组小型任务管理工具-ToDoList
  6. 【免费直播】零基础Office速通,助您走向Word/Excel/PPT高手之路
  7. 隐身侠和360密盘哪个好?加密软件推永久免费版还抽奖
  8. 六顶思考帽——培训总结
  9. 算法 {哈密顿路径,哈密顿环}
  10. 单片机原理及应用技术课后答案(5)