热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

分组密码笔记(DES,AES,SM4,IDEA

目录基础概念:DES:AES:SM4IDEA:工作模式:基础概念:1扩散:使得明文

目录

基础概念:

DES:

AES:

SM4

IDEA:

工作模式:




基础概念:

1扩散:使得明文和密文的每一位都影响密文中多位的值

2混淆: 使明文和密文之间关系变得复杂(s盒)

3代替-置换网络:

查看源图像

 s盒起到非线性代替的作用(混肴,p是置换(扩散

4Feistel密码结构:

查看源图像

输入是分组长为2w的明文和一个密钥K。将每组明文分成左右两半L_0R_0,在进行完n轮迭代后,左右两半再合并到一起以产生密文分组。第 i 轮迭代的输入为前一轮输出的函数:

其中K_i是第i轮用的子密钥,由加密密钥K得到。一般地,各轮子密钥彼此不同而且与K也不同。

F表示论函数。每一轮的子密钥,一般都是由主密钥生成的一个子密钥集。

多轮迭代,将明文拆分,再与密钥运算,再组合。每一轮之间息息相关。

加解密算法相同,只是子密钥使用顺序不同。


DES:

查看源图像

 主要问题:密钥长度太短,(有效密钥长度为56bit,有8位是奇偶校验)。

ip初始置换:(第一bit被我换为第58bit

查看源图像

轮函数 :左右分成两个32位。右半部分E盒扩展成48位,再与子密钥运算,分成8组再与s盒压缩成32位再与p盒置换。

S盒:接受6bit输入,s盒第一个bit和最后一个bit构成2位二进制数为s盒行号,中间四位为列号,查找转换为二进制。

查看源图像

扩展:

二重DES:采用两个互不相同的密钥k1,k2进行连续加密

三重DES:DES-EEE3使用三个互不相同的密钥,有效密钥长度为168bit,三次连续加密。

DES-EDE3使用三个互不相同的密钥,用第一个密钥加密,第二个密钥解密,再给第三个密钥加密。

DES-EEE2使用两个密钥第一个密钥进行第一次和第三次加密,中间再用第二个密钥加密一次。

DES-EDE2使用两个密钥第一个进行第一和第三次加密,中间再用第二个密钥解密一次。


AES:

 AES算法是在GF(2^8)上的加与乘运算,选择不可约多项式

p(X)= x^8+x^4+x^3+x+1 余式次数最多为7次

例子:0x57 二进制:0101 0111     0x83 二进制:10000011

在GF(2^8)上的多项式为 x^6+x^4+x^2+x+1. 和 x^7+x+1

两数相加结果为 x^7+x^6+x^4+x^2 可以类似看成异或运算

0101 0111异或上100000011=1101 0100

在GF(2^8)的乘法,先将两个多项式相乘

而且x^8=x^4+x^3+x+1,最后置换出来的就是结果。

AES算法 的图像结果

AES将128bit分为16字节组成4*4的矩阵,前四个字节放第一列,依次类推。

S盒:输入字节前四bit作为行值,后四bit作为列值。

查看源图像

 注:加密与解密过程不同

待补充。。。。


SM4

基本运算 异或^和循环左移<<<

将明文分成四个部分

查看源图像

查看源图像

查看源图像

r为4个并行的S盒代替构成。代替规则与aes类似,前四位组成行,后四位组成列。

 查看源图像

 反序列变换,把四个部分按照不同顺序摆放。


IDEA:

基于16bit子块上

查看源图像

 一组64bit明文 划分为4个子块x0,x1,x2,x3,

红色:16bit整数的摸2^16+1的乘法算法

绿色:16bit整数的模2^16的加法运算

蓝色:16bit逐位异或

迭代8次


工作模式:

ECB模式:每个分组用同一个密钥加密,同样的明文分组得到相同的密文。各组的加密独立于其他分组。

CBC模式:环环相扣,第一次使用的密钥影响后面的加密,第一次与明文运算后给第二次(变化,类推。

CFB模式: DES-CFB与DES一个重要不同:DES没有直接作用于明文分组,DES仅用来产生密钥了,DES-CFB的明文直接与密钥做异或,实际上是一种自同步序列密码。

OFB模式将加密算法的输出反馈到移位寄存器。与CFB类似,将分组密码算法作为一个密钥流生成器。

CTR模式:加密和解密使用同样的方案,都使用加密函数而非解密函数,就是一种通过逐次累加的计数器进行加密来产生密钥流的序列密码

补充:

差分分析:适用于有固定S盒的密码算法,确定最后一轮的子密钥和其中一部分是可行的,不同的S盒的查分分布不均匀,这是差分分析的基础

小结:分组密码一般都有S盒,在做CTF中看到一大段数据,可能是S盒,再结合具体特征,来确定加密算法,可能不是很全面,顺带期末复习一下密码学


推荐阅读
  • 本文介绍了C#中生成随机数的三种方法,并分析了其中存在的问题。首先介绍了使用Random类生成随机数的默认方法,但在高并发情况下可能会出现重复的情况。接着通过循环生成了一系列随机数,进一步突显了这个问题。文章指出,随机数生成在任何编程语言中都是必备的功能,但Random类生成的随机数并不可靠。最后,提出了需要寻找其他可靠的随机数生成方法的建议。 ... [详细]
  • 生成式对抗网络模型综述摘要生成式对抗网络模型(GAN)是基于深度学习的一种强大的生成模型,可以应用于计算机视觉、自然语言处理、半监督学习等重要领域。生成式对抗网络 ... [详细]
  • 在Android开发中,使用Picasso库可以实现对网络图片的等比例缩放。本文介绍了使用Picasso库进行图片缩放的方法,并提供了具体的代码实现。通过获取图片的宽高,计算目标宽度和高度,并创建新图实现等比例缩放。 ... [详细]
  • 本文介绍了Java工具类库Hutool,该工具包封装了对文件、流、加密解密、转码、正则、线程、XML等JDK方法的封装,并提供了各种Util工具类。同时,还介绍了Hutool的组件,包括动态代理、布隆过滤、缓存、定时任务等功能。该工具包可以简化Java代码,提高开发效率。 ... [详细]
  • 本文由编程笔记#小编整理,主要介绍了关于数论相关的知识,包括数论的算法和百度百科的链接。文章还介绍了欧几里得算法、辗转相除法、gcd、lcm和扩展欧几里得算法的使用方法。此外,文章还提到了数论在求解不定方程、模线性方程和乘法逆元方面的应用。摘要长度:184字。 ... [详细]
  • CSS3选择器的使用方法详解,提高Web开发效率和精准度
    本文详细介绍了CSS3新增的选择器方法,包括属性选择器的使用。通过CSS3选择器,可以提高Web开发的效率和精准度,使得查找元素更加方便和快捷。同时,本文还对属性选择器的各种用法进行了详细解释,并给出了相应的代码示例。通过学习本文,读者可以更好地掌握CSS3选择器的使用方法,提升自己的Web开发能力。 ... [详细]
  • [译]技术公司十年经验的职场生涯回顾
    本文是一位在技术公司工作十年的职场人士对自己职业生涯的总结回顾。她的职业规划与众不同,令人深思又有趣。其中涉及到的内容有机器学习、创新创业以及引用了女性主义者在TED演讲中的部分讲义。文章表达了对职业生涯的愿望和希望,认为人类有能力不断改善自己。 ... [详细]
  • JavaScript设计模式之策略模式(Strategy Pattern)的优势及应用
    本文介绍了JavaScript设计模式之策略模式(Strategy Pattern)的定义和优势,策略模式可以避免代码中的多重判断条件,体现了开放-封闭原则。同时,策略模式的应用可以使系统的算法重复利用,避免复制粘贴。然而,策略模式也会增加策略类的数量,违反最少知识原则,需要了解各种策略类才能更好地应用于业务中。本文还以员工年终奖的计算为例,说明了策略模式的应用场景和实现方式。 ... [详细]
  • 无损压缩算法专题——LZSS算法实现
    本文介绍了基于无损压缩算法专题的LZSS算法实现。通过Python和C两种语言的代码实现了对任意文件的压缩和解压功能。详细介绍了LZSS算法的原理和实现过程,以及代码中的注释。 ... [详细]
  • 本文介绍了南邮ctf-web的writeup,包括签到题和md5 collision。在CTF比赛和渗透测试中,可以通过查看源代码、代码注释、页面隐藏元素、超链接和HTTP响应头部来寻找flag或提示信息。利用PHP弱类型,可以发现md5('QNKCDZO')='0e830400451993494058024219903391'和md5('240610708')='0e462097431906509019562988736854'。 ... [详细]
  • Java学习笔记之面向对象编程(OOP)
    本文介绍了Java学习笔记中的面向对象编程(OOP)内容,包括OOP的三大特性(封装、继承、多态)和五大原则(单一职责原则、开放封闭原则、里式替换原则、依赖倒置原则)。通过学习OOP,可以提高代码复用性、拓展性和安全性。 ... [详细]
  • 浏览器中的异常检测算法及其在深度学习中的应用
    本文介绍了在浏览器中进行异常检测的算法,包括统计学方法和机器学习方法,并探讨了异常检测在深度学习中的应用。异常检测在金融领域的信用卡欺诈、企业安全领域的非法入侵、IT运维中的设备维护时间点预测等方面具有广泛的应用。通过使用TensorFlow.js进行异常检测,可以实现对单变量和多变量异常的检测。统计学方法通过估计数据的分布概率来计算数据点的异常概率,而机器学习方法则通过训练数据来建立异常检测模型。 ... [详细]
  • 集成电路企业在进行跨隔离网数据交换时面临着安全性问题,传统的数据交换方式存在安全性堪忧、效率低下等问题。本文以《Ftrans跨网文件安全交换系统》为例,介绍了如何通过丰富的审批流程来满足企业的合规要求,保障数据交换的安全性。 ... [详细]
  • 一句话解决高并发的核心原则
    本文介绍了解决高并发的核心原则,即将用户访问请求尽量往前推,避免访问CDN、静态服务器、动态服务器、数据库和存储,从而实现高性能、高并发、高可扩展的网站架构。同时提到了Google的成功案例,以及适用于千万级别PV站和亿级PV网站的架构层次。 ... [详细]
  • 本文介绍了OpenStack的逻辑概念以及其构成简介,包括了软件开源项目、基础设施资源管理平台、三大核心组件等内容。同时还介绍了Horizon(UI模块)等相关信息。 ... [详细]
author-avatar
yjlz2012
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有