cnbragon兄的SHA和IDEA加密KeyGenMe算法分析
(完整版)IDEA密码算法

cout<<"result[11]="<<result[11]<<" "<<change(result[11],16)<<"\t";
cout<<"result[13]="<<result[13]<<" "<<change(result[13],16)<<endl;
result[3]=(x[3]*z[t][3])%MUL;//X4和第4个子密钥块作乘法运算
result[4]=result[0]^result[2];//(1)和(3)结果作异或运算
result[5]=result[1]^result[3];//(2)和(4)结果作异或运算
result[6]=(result[4]*z[t][4])%MUL;//(5)的结果与第5个子密钥块作乘法运算
}
x[0]=(x[0]*z[t][0])%MUL;//X1和第1个子密钥块作乘法运算
x[1]=(x[1]+z[t][1])%ADD;//X2和第2个子密钥块作加法运算
x[2]=(x[2]+z[t][2])%ADD;//X3和第3个子密钥块作加法运算
x[3]=(x[3]*z[t][3])%MUL;//X4和第4个子密钥块作乘法运算
result[7]=(result[5]+result[6])%ADD;//(6)和(7)结果作加法运算
E n i g m a 算 法 详 解

成为专业程序员路上用到的各种优秀资料、神器及框架本文是鄙人工作这几年随手收集整理的一些自认为还不错的资料,成长的道理上需要积累,这么长时间了,是时候放出来分享下了,或许能帮助到你。
欢迎点赞,让更多人看到,让福利普照。
因为本文以后不会更新,但项目依旧会更新。
所以,更好的做法是,请到GitHub上Star:stanzhai-be-a-professional-programmer成为一名专业程序员的道路上,需要坚持练习、学习与积累,技术方面既要有一定的广度,更要有自己的深度。
笔者作为一位tool mad,将工作以来用到的各种优秀资料、神器及框架整理在此,毕竟好记性不如烂键盘,此项目可以作为自己的不时之需。
本人喜欢折腾,记录的东西也比较杂,各方面都会有一些,内容按重要等级排序,大家各取所需。
这里的东西会持续积累下去,欢迎Star,也欢迎发PR给我。
技术站点必看书籍大牛博客GitHub篇工具篇平台工具常用工具第三方服务爬虫相关(好玩的工具)安全相关Web服务器性能-压力测试工具-负载均衡器大数据处理-数据分析-分布式工具Web前端语言篇C游戏开发相关日志聚合,分布式日志收集RTP,实时传输协议与音视频技术站点在线学习:Coursera、edX、Udacity?-way to explore国内老牌技术社区:OSChina、博客园、CSDN、51CTO 免费的it电子书:ITeBooks - Free Download - Big Library在线学习:UdemyCrowd-sourced code mentorship. and Practicecoding with fun programming challenges - CodinGameDevStore:开发者服务商店MSDN:微软相关的官方技术集中地,主要是文档类必看书籍SICP(Structureand Interpretation of Computer Programs)深入理解计算机系统代码大全2人件人月神话软件随想录算法导论(麻省理工学院出版社)离散数学及其应用设计模式编程之美黑客与画家编程珠玑The Little SchemerSimply Scheme_Introducing_Computer_ScienceC++ PrimeEffective C++TCP-IP详解Unix 编程艺术技术的本质软件随想录计算机程序设计艺术职业篇:程序员的自我修养,程序员修炼之道,高效能程序员的修炼《精神分析引论》弗洛伊德《失控》《科技想要什么》《技术元素》凯文凯利程序开发心理学天地一沙鸥搞定:无压力工作的艺术大牛博客云风(游戏界大牛): 云风的Tian (binghe)R大【干货满满】RednaxelaFX写的文章-回答的导航帖陈皓-左耳朵耗子:酷壳 - CoolShellJeff Atwood(国外知名博主): CodingHorror阮一峰(黑客与画家译者,Web):RuanYiFeng’s Personal Website廖雪峰(他的Python、Git教-程不少人都看过):HomeGitHub篇Awesome:这是个Awesome合集,常见的资料这里面都能找到Awesome2:类似第一个Awesome杂七杂八、有用没用的Awesome合集非常不错的语言类学习资料集合:Awesomenessawesome-ios-uiawesome-android-uiAwesome-MaterialDesi gnawesome-public-datasetsawesome-AppSec(系统安全)awesome-datascience书籍资料free-programming-books中文版免费的编程中文书籍索引《程序员编程艺术—面试和算法心得》GoBooksPapersLearning)深入学习(Deep Learning)资料Docker资料合集学习使用StromHadoopInternalsSparkInternals大数据时代的数据分析与数据挖掘in DatabasesDataScience blogs日志:每个软件工程师都应该知道的有关实时数据的统一概念AndroidCode PathAndroidLearn NotesPHP类库框架,资料集合优秀项目Design开源项目Android开源项目分类汇总前端 Node.jsGuide的中文分支Angular2学习资料AngularJS应用的最佳实践和风格指南React-Native学习指南七天学会NodeJSnode.js中文资料导航Nodejs学习路线图如何学习nodejs工作,工具系统管理员工具集合ProGitNginx开发从入门到精通Google全球 IP 地址库收集整理远程工作相关的资料Colorschemes for hackers游戏开发工具集,MagicTools开发者工具箱, free-for-devGitHub秘籍Git风格指南Bast-App平台工具常用工具Mac下的神兵利器asciinema:- 免费在线作图,实时协作Origami: 次世代交互设计神器百度脑图:百度脑图第三方服务DnsPod:一个不错的只能DNS服务解析提供商DigitalOcean:海外的云主机提供商,价格便宜,磁盘是SSD的,用过一段时间整体上还可以,不过毕竟是海外的,网速比较慢。
IDEA加密算法中

OFB (Output Feedback Mode) 和u位反馈(FIPS81)
该模式把分组加密算法作为密钥流生成器,输出直接放
入反馈寄存器的同时与明文按位加产生密文。该模式的完
全反馈已经正式成为国际标准化组织的标准(ISO-10116)。
密钥K和长为n的初始向量IV,t个长为m的明文块
产生t个长为m的密文块
2.4 分组密码运行模式
分组密码有四种运行模式: ECB(Electronic Codebook Mode) CBC(Cipher Block Chaining Mode) OFB(Output Feedback Mode) 和u位反馈(FIPS81) CFB(Cipher Feedback Mode)
2) 利用常数 (大于等于
(大于等于
的最小奇数)和
的最小奇数)获得初始化矩阵S
S[0]= ; t = 2r+2 For i=1 to t-1 do
S[i]=S[i-1]+ ;
这里
w
16
32
B7E1 B7E15163
64 B7E15162 8AED2A6B
9E37 9E3779B9 9E3779B9 7F4A7C15
l 将分组加密算法作为一个密钥流发生器,密钥流与明 文、密文无关。所以密钥流可以事先计算。IV不需要保 密。注意如果重新使用原来的密钥时必须改变初始向量。 l 对密文篡改问题难于发现。如果密文传输中一位出错, 解密是仅仅是对应的位不对。错误不会传播。 l 如果密文丢失一位,则因该模式没有自同步能力而全 部混乱。所以系统要严格保持同步 。
3)把用户密钥混入S中 i=j=0; A=B=0; Do 3max(t,c)遍 A=S[i]=(S[i]+A+B)<<<3 B=L[j]=(L[j]+A+B)<<<(A+B); i=i+1 mod t; j=j+1 mod c;
常用加解密算法

常用加解密算法
加解密算法是一种对数据进行保护的方法,常用于网络通信、存储数据等场景中。
本文将介绍常用的加解密算法及其特点。
1. 对称加密算法
对称加密算法是一种加密和解密使用相同密钥的算法。
常见的对称加密算法包括DES、AES、RC4等。
其优点是计算速度快,适用于大量数据的加密和解密。
但是,密钥需要在通信双方之间共享,一旦密钥泄露,数据就会被攻击者窃取。
2. 非对称加密算法
非对称加密算法使用两个密钥,一个用于加密,另一个用于解密。
公钥可以公开发布,私钥只能由密钥生成者持有。
常见的非对称加密算法包括RSA、ECC等。
其优点是安全性高,密钥不需共享,但计算
速度较慢,不适用于大量数据的加密和解密。
3. 哈希算法
哈希算法是一种将任意长度的消息压缩成固定长度摘要的算法,常用于验证数据的完整性和一致性。
常见的哈希算法包括MD5、SHA-1、SHA-256等。
哈希算法的优点是安全性高,不可逆,但无法还原原始数据。
4. 对称加密与非对称加密结合
对称加密与非对称加密结合可以兼顾速度和安全性。
其流程如下:使用非对称加密算法加密对称密钥,并将加密后的对称密钥发送给通信对方;通信对方使用非对称密钥解密对称密钥,并使用对称加密算
法加密数据。
这样,即兼顾了对称加密算法的速度和非对称加密算法的安全性。
常见的结合算法包括RSA、AES等。
总之,不同的加解密算法有各自的特点和优缺点,需要根据实际需求选择合适的算法。
同时,加解密算法需要谨慎使用,密钥保密性极其重要。
IDEA加密解密算法的设计与实现策略探究

IDEA加密解密算法的设计与实现策略探究作者:魏革来源:《无线互联科技》2015年第24期摘要:随着社会不断的进步和发展,网络的应用越来越广泛,如何解决网络安全问题显得日益重要。
解决网络安全问题的关键就是信息和数据传输的安全性,而IDEA加密解密算法在保证信息传输安全性方面起着重要的作用,因此,文章将简单介绍密码学的基础知识,并对IDEA加密解密算法进行概述,主要研究了IDEA加密解密算法设计一些改进的建议和计算方法,使得该算法可以更加有效地运用在生活中,提高数据传输的安全性,取得该算法的经济效益和社会效益。
关键词:IDEA;加密解密;改进国际数据加密算法IDEA(International DataEncryption Algorithm)密钥长度128位,密钥空间是2128,属于对称加密算法的一种,该算法具有保密性强、加密速度快的特点。
1990年,曾被瑞士联邦技术学院的来学嘉i和Massey建议称为PES,1992年Lai和Massey 提高了该算法的抗差分分析能力,并改成位IDEA。
IDEA逐渐代替了DES,并被誉为“好的分组密码”,应用在许多行业和产品中。
1 密码基础知识1.1 密码学的基本概念密码学的基本概念主要包括5个部分:明文(没有加密数据,也就是算法的输入)、密文(加密后的数据,即算法的输出)、加密算法(从明文到密文的转换)、解密算法(从密文到明文的转换)、密钥(加密解密算法的输入,独立于明文密文及算法)。
一个完整的密码体制通常包括5个部分:明文空间(所有明文的集合)、密文空间(所有密文的集合)、密钥空间(所有密钥的集合)、加密算法(加密密钥控制的加密运算)、解密算法(解密密钥控制的解密运算)。
1.2 密码体制1.2.1 古典密码学在古典密码学中,主要分为单表密码体制和多表密码体制2个部分,加密解密算法一般运用加密表一一对应的关系来进行,根据使用的表的个数区分。
因此这种加密解密的算法具有比较简便、容易理解、安全性较低的特点,它的规律性和线性较强,容易破译,该算法为现代密码学奠定了基础,是现代密码学的雏形。
idea分组密码算法

idea分组密码算法
抱歉,目前我不清楚"idea分组密码算法" 的具体细节。
不过,"IDEA"(International Data Encryption Algorithm,国际数据加密算法)是一种对称密钥分组密码算法,用于加密和解密数据。
IDEA算法属于分组密码,采用相同长度的密钥对数据进行加密和解密。
IDEA算法的特点包括:
- 分组长度:IDEA算法将数据分组为64位块进行加密和解密。
- 密钥长度:使用128位的密钥。
- 加密轮数:算法中包含了多轮的加密和解密过程,每轮都涉及多个步骤,以增强安全性。
IDEA算法采用了一系列数学运算,如模运算、异或操作、移位等,用于对数据进行混淆和变换,以实现加密和解密的过程。
虽然IDEA曾被广泛应用,但由于专利限制和新的加密技术的出现,其应用已逐渐减少。
des3desaesidesrsa密码算法比较

对称加密算法(也叫共享密钥)类型定义:发送接收使用相同的对称密钥密钥长度分组长度循环次数安全性DES 数据加密标准,速度较快,适用于加密大量数据的场合;56 64 16 依赖密钥受穷举搜索法攻击3DES是基于DES的对称算法,对一块数据用三个不同的密钥进行三次加密,强度更高;11216864 48 军事级,可抗差值分析和相关分析AES 高级加密标准,对称算法,是下一代的加密算法标准,速度快,安全级别高,目前AES 标准的一个实现是Rijndael 算法12819225664 101214安全级别高,高级加密标准IDEA 国际数据加密算法,使用128 位密钥提供非常强的安全性128 64 8 能抵抗差分密码分析的攻击MD5 信息-摘要算法Message-Digest 5128 512 4 MD5 算法主要是为数字签名而设计的SHA 安全散列算法Secure Hash Algorithm160 512 4 可实现数字签名,和MD5相似非对称加密算法(也叫公开密钥)类型定义:一对公开密钥和私有密钥,解释举例RSA 基于大素数分解(RonRivest,Adi Shamir,Len Adleman三位天才的名字)例如:7*d=1mod8的模运算是:(7*d)/ 8....余1 d=7ECC 椭圆曲线密码编码学Elliptic Curves Cryptography。
现代密码学第4章5:IDEA算法分析解析

20
IDEA每一轮的加密顺序
在每一轮中,执行的顺序如下: 1. X1和第一个子密钥相乘。 2. X2和第二个子密钥相加。 3. X3和第三个子密钥相加。 4. X4和第四个子密钥相乘。 5. 将第1步和第3步的结果相异或。 6. 将第2步和第4步的结果相异或。
7
2. IDEA设计原理
1 密码的强度:主要是通过混淆和扩散来实现。 混淆实现的方法: (1)逐比特异或。表示为 (2) 模 216 整数加法,表示为 ,其输入和输出作为 16位无符号整数处理。 (3) 模 216 1 整数乘法,表示为 ,其输入和输出中除16 全0作为 216 处理外,其余都作为16位无符号整数处理。
3
IDEA基本概念
早 在 1 9 9 0 年 , Xuejia Lai 等 人 在 EuroCrypt’90 年会上提出了分组密码建议 PES(Proposed Encryption Standard)。 在 EuroCrypt’91年会上, Xuejia Lai等人又 提出了 PES 的修正版 IPES(Improved PES)。 目前IPES已经商品化,并改名为IDEA。IDEA 已由瑞士的 Ascom 公司注册专利,以商业目 的使用IDEA算法必须向该公司申请许可。
加密过程(如图4.15所示)由连续的8轮迭代 和一个输出变换组成,算法将64比特的明文分组分 成4个16比特的子段,每轮迭代以4个16比特的子 段作为输入,输出也为4个16比特的子段。最后的 输出变换也产生4个16比特的子段,链接起来后形 成64比特的密文分组。每轮迭代还需使用6个16比 特的子密钥,最后的输出变换需使用4个16比特的 子密钥,所以子密钥总数为52。图4.15的右半部分 表示由初始的128比特密钥产生52个子密钥的子密 钥产生器。
IDEA密码体制

其中MAR(X,Y)是MA结构输入为X和Y时的右 边输出,MAL(X,Y)是左边输出。则 V11=J11⊕MAR(J11 ⊕J13,J12 ⊕ J14) =W81 ⊕ MAR(W81⊕W82,W83 ⊕W84) =I81⊕MAR(I81 ⊕ I83,I82 ⊕84) I MA ⊕MAR [I81⊕ R(I81⊕I83,I82⊕I84)⊕ I83 I ⊕ MAR(I81⊕I83,I82⊕ 84), I82 ⊕ MA I ⊕ L(I81⊕83,I82 ⊕ I84)⊕ I84 ⊕MAL(I81 I83,I82 ⊕84)] I ⊕ =I81⊕ R(I81⊕I83,I82 I84) MA ⊕ ⊕ MA (I ⊕ ,I ⊕I ) =I R 81 I83 82 84 81
即除第2个子段和第3个子段交换位置外,解 密过程的输出变换与加密过程第1轮第1步的 变换完全相同。 所以最后可得知,整个解密过程的输出等于 整个加密过程的输入。
1. 轮结 构
IDEA第1轮的轮结构
IDEA的输出变换
2. 子密钥的产生 加密过程中52个16比特的子密钥是由128 比特的加密密钥按如下方式产生的: 前8个 子密钥Z1,Z2,…,Z8直接从加密密钥中取, 即Z1取前16比特(最高有效位),Z2取下面 的16比特,依次类推。然后加密密钥循环左 移25位,再取下面8个子密钥Z9,Z10,…, Z16,取法与Z1,Z2,…,Z8的取法相同。这 一过程重复下去,直到52子密钥都被产生为 止。
可见解密过程第1轮第1步的输出等于加密过 程最后一步输入中第2个子段和第3个子段交 换后的值。从图3.16,可得以下关系: W81=I81 MAR(I81 ⊕ I83,I82 I84) ⊕ ⊕ W82=I83 MAR(I81 ⊕ I83,I82 I84) ⊕ ⊕ W83=I82⊕ L(I81 ⊕ I83,I82 ⊕ I84) MA W84=I84⊕ L(I81 ⊕ I83,I82 ⊕ I84) MA
IDEA加密算法在数据加密中的应用--电子信息与通信工程专业综合实践

《综合实践1》实践项目名称:IDEA算法在数据加密中的应用班级:通信工程班姓名:学号:指导老师:完成时间:2010-06-09摘要摘要:通常采用加密技术来完成计算机信息资源的有效保护。
1DEA算法是一种数据块加密算法,具有一流的可靠性和抗攻击能力。
首先对IDEA算法进行了深入的分析和研究,并在此基础上阐述了该算法的实现原理和过程。
尤其对此算法的加密过程进行了详细地描述,然后给出了实现算法的用VC语言编写的关键性源代码。
关键词:加密算法;IDEA ;数据加密;4目录第1章绪论 (1)1.1 课题背景 (1)1.2 密码技术发展现状 (1)本文研究内容 (2)第2章密码技术 (4)2.1 密码技术 (4)2.2 常见加密算法 (5)2.3 IDEA算法概述 (6)第3章C++基础知识 (7)3.1 面向对象程序设计基础知识 (7)3.2 C++基本程序结构: (8)本章小结 (9)第4章IDEA算法原理于实现 (10).IDEA算法原理 (10)4.2 IDEA算法的编程实现 (12)4.3 本章小结 (16)结论 (17)参考文献 (18)《综合实践1》评价表 (19)第1章绪论随着计算机网络技术的迅速发展,网上数据通信越来越频繁,由于Internet 网络协议本身存在着重要的安全问题,使网上的信息传输存在巨大的安全风险问题也越来越突出。
为了保证数据在网上传输时不被窃取或篡改,就有必要对数据进行加密,以保证数据的安全传输。
信息加密技术作为信息安全最有效的方法之一,可通过不同的加密算法来实现,而加密算法的选取直接影响信息的安全程度。
当前国际上有许多加密算法,其中DES (Data En—crypfion Standard)是发明最早的用得最广泛的分组对称加密算法,但历史上曾利用穷举攻击破解过DES 密钥,1999年,电子边境基金会EFF用22小时完成了破解工作,使DES 算法受到了严重打击,使它的安全性受到严重威胁。
国际数据加密算法

第i(i=1,…,9)轮解密的前4个子密钥由加密过程第(10-i)轮的前4个子密钥得出:
其中第1和第4个解密子密钥取为相应的第1和第4个加密子密钥的模216+1乘法逆元,第2和第3个子密钥的取法为: 当轮数i=2,…,8时,取为相应的第3个和第2个加密子密钥的模216加法逆元。i=1和9时,取为相应的第2个和第3个加密子密钥的模216加法逆元。 第i(i=1,…,8)轮解密的后两个子密钥等于加密过程第(9-i)轮的后两个子密钥
每轮开始时有一个变换,该变换的输入是4个子段和4个子密钥,变换中的运算是两个乘法和两个加法,输出的4个子段经过异或运算形成了两个16比特的子段作为MA结构的输入。
MA结构也有两个输入的子密钥,输出是两个16比特的子段。
变换的4个输出子段和MA结构的两个输出子段经过异或运算产生这一轮的4个输出子段。
国际数据加密算法(IDEA)
Annual Work Summary Report
2022 - 2023
目录
Catalogue
IDEA算法的产生
O1
IDEA设计原理
IDEA解密方法
IDEA加密算法简介
IDEA子密钥的产生
O2
O3
O4
O5
国际数据加密算法(IDEA)是瑞士的著名学者提出的。它在1990年正式公布并在以后得到增强。这种算法不同于DES/3DES的结构,设计上采用后来成为Lai-Messay的结构,设计思想基于“相异代数群上的混合运算”。发展IDEA也是因为感到DES具有密钥太短等缺点。IDEA的密钥为128位,这么长的密钥在今后若干年内应该是安全的。
贰
壹
肆
叁
实现上的考虑
加密过程
图表示由初始的128比特密钥产生52个子密钥的子密钥产生器
IDEA加密解密算法的设计与实现

Computer Knowledge and Technology 电脑知识与技术第5卷第19期(2009年7月)IDEA 加密解密算法的设计与实现杨建武(华南师范大学增城学院,广东广州511363)摘要:IDEA 算法是在DES 算法的基础上发展出来的,是一种使用128位密钥以64位分组为单位加密数据的分组密码算法。
该文主要对IDEA 算法思想进行深入的分析和研究,并在此基础上阐述了改算法的实现原理和过程,尤其对该算法的密钥扩展和加密过程进行了详细的描述,并在C#环境下设计、实现IDEA 对称加解密算法。
关键词:分组密码结构;加密;解密;迭代算法中图分类号:TP312文献标识码:A 文章编号:1009-3044(2009)19-5155-02Design and Implementation of IDEA Encryption AlgorithmYANG Jian-wu(Zengcheng college,South China Normal University,Guangzhou 511363,China)Abstract:IDEA algorithm is based on the DES algorithm,it is a block cipher algorithm using 128-bit key to encrypt data with a 64-bit grouping as the unit.On the base of thorough analysis and research on the main idea of IDEA algorithm,the implementation principle and process of the IDEA algorithm are discussed,particularly,the key expansion and encryption process are discribed in details,and the IDEA symmetric encryption algorithm is designed and implemented in the C#environment.Key words:structure of block ciphers;encryption;decryption;iterative algorithm信息加密技术作为信息安全最有效的方法之一,可以通过不同的加密算法来实现,而加密算法的选取直接影响着信息的安全程度。
(完整版)IDEA密码算法

=
=
⊙ ⊙ ⊙ =
可见解密第1轮 的输出恰好是加密第8轮的输出。(?为什么是这样?因为在图中第8轮结束后,多交换了一次?本来应是 , , , )
再看 加密算法的主要构成模块 ,如图所示:
表示 的左边的输出, 表示 的右边的输出。则有: ( , ) ( , )
( , ) ( , )
( , )= ( , )
{
int i,j;
unsigned int sum;
for(i=0;i<64;i+=16)
{
sum=0;
for(j=0;j<16;j++)
if(write[i+j])sum+=pow(2,j);
x[i/16]=sum;
}
}
void string_bb(string str,unsigned int result[])//字符序列转换为二进制
{
int i,j,k,flag=0,t=0;
unsigned int sum,temp[9][6][16];
for(i=0;i<9;i++)
{
for(j=0;j<6;j++)
{
for(k=0;k<16;k++)
temp[i][j][k]=key[(flag+t++)%128];
if(!(i==j==0)&&((6*i+j)%8)==7)flag+=25;
{
int t,j;
unsigned int result[20];
for(t=0;t<8;t++)
IDEA、AES、FEAL加密算法介绍

电子商务安全与支付学号姓名系别年级专业IDEA、AES、FEAL加密算法介绍IDEAXuejia Lai和James Massey于1990年提出了PES (Proposed Encryption Standard,推荐加密标准)分组密码算法。
1991年对PES 作了改进,并将改进后的算法称为IPES(Improved Proposed Encryption Standard,改进型推荐加密标准)。
IPES于1992年改名为IDEA(International Data Encryption Algorithm,国际数据加密算法)。
其基本参数为:分组长度:64比特,密钥长度:128比特,迭代圈数:8圈(每圈6个子密钥块)再附加一个输出变换(4个子密钥块)IDEA的分组长度为64比特,密钥长度为128比特。
其加、脱密运算用的是同一个算法,二者的不同之处仅在于密钥调度不同。
其加、脱密运算是在128比特初始密钥作用下,对64比特的输入数据分组进行操作,经8圈迭代后,再经过一个输出变换,得到64比特的输出数据分组。
整个运算过程全部在16位子分组上进行,因此该算法对16位处理器尤其有效IDEA 加密总体方案流程图64bit 明文X第2圈 7z 12z 输出变换49z 52z 第8圈43z 48z 第1圈 1z 6z 1x 2x 3x 4x 1y 2y 3y 4y 64bit 密文YIDEA加密总体方案流程图 “使用来自不同代数群的混合运算”是IDEA 所提出的新的设计思想,它利用三个“不相容”的群运算以达到混乱,利用乘加密码结构来实现扩散和进一步的混乱。
使得IDEA 复杂的代数结构不能得到简化。
而这正是我们在设计分组密码算法中所追求的。
IDEA 是一种使用128比特密钥以64比特分组为单位加密数据的分组密码,其设计目标可以归结为两方面:一方面与密码强度有关,另一方面与使用的方便性有关。
IDEA 的密码强度和下列特性与其密码强度有关:分组长度:分组长度应足够大,以抵抗统计分析。
信息安全工程师综合知识大纲考点:常用密码算法

信息安全工程师综合知识大纲考点:常用密码算法【考点分析】:重点掌握,特别是RSA密码算法。
【考点内容】:一、DES密码算法DES(Data Encryption Standard)是一个分组加密算法,支持64比特的明文块加密,其密钥长度为56比特。
三重DES(Triple Data Encryption Algorithm,TDEA)TDEA 算法的工作机制是使用DES 对明文进行“加密一解密一加密”操作,即对DES 加密后的密文进行解密再加密,而解密则相反。
设Ek()和Dk()代表DES算法的加密和解密过程,K代表DES 算法使用的密钥,I代表明文输入,O代表密文输出,则:TDEA的加密操作过程如下∶TDEA的解密操作过程如下∶二、IDEA密码算法IDEA (International Data Encryption Algorithm)是国际数据加密算法的简单记,是一个分组加密算法,其明文和密文分组都是64比特,密钥长度为128比特。
该算法的设计思想是“混合使用来自不同代数群中的运算”。
三、AES密码算法AES (Advanced Encryption Standard)算法:由美国国家标准技术研究所(NIST)发起征集,目的是确定一个非保密的、公开的、全球免费使用的分组密码算法,用于保护下一世纪政府的敏感信息。
密码系统支持至少128 比特长的分组;密码支持的密钥长度至少为128/192和256比特。
四、RSA密码算法RSA 算法是非对称算法,在RSA加密算法中,公钥和私钥都可以用于加密消息,用于加密消息的密钥与用于解密消息的密钥相反。
RSA算法提供了一种保护网络通信和数据存储的机密性、完整性、真实性和不可否认性的方法。
目前,SSH、OpenPGP、S/MIME和SSL/TLS都依赖于RSA进行加密和数字签名的功能。
RSA算法在浏览器中使用,能够在不可信任的互联网中建立安全连接。
RSA 签名验证时网络连接系统中最常见的执行操作之一。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
00401753 |. 5>POP EDI
00401754 |. 5>POP ESI
00401755 |. 3>XOR EAX,EAX
//中断在这里
00401738 |. F>CALL EDI ; \GetDlgItemTextA
0040173A |. 3>CMP EAX,EBX
0040173C |. 8>MOV DWORD PTR SS:[ESP+3C],EAX
004017B3 |. 8>|ADD ESP,0C
004017B6 |. 8>|ADD ESI,2
004017B9 |. 8>|ADD EDI,4
004017BC |. 4>|DEC EBP
004017BD |.^ 7>\JNZ SHORT KEYGENME.004017A7
0040170E |. 5>PUSH EAX ; |Buffer
0040170F |. 8>MOV DWORD PTR SS:[ESP+3A],ECX ; |
00401713 |. 8>MOV DWORD PTR SS:[ESP+1A],EDX ; |
0040176B |. 5>PUSH ECX
0040176C |. 6>PUSH 3E9
00401771 |. 5>PUSH ESI
00401772 |. F>CALL EDI
00401774 |. 8>CMP EAX,10
00401777 |. 7>JE SHORT KEYGENME.00401796 ; 注册码长度必须是16位,否则出错。
趁着5月1日比较有时间,拿到cnbragon兄的KeyGenMe玩玩,真是收获良多,认识了乘法逆元、IDEA算法。
在开始分析前,用kanal23查了一下程序,发现该程序用了SHA算法,后经过跟踪发现还用了IDEA算法,在此还要谢谢cnbragon兄,是他的提醒我才发现是用了IDEA算法,不然还在晕头呢。(cnbragon兄,来,亲一个 cnbragon吓得赶紧跑掉),不过,刚开始在程序里看到一个私钥0x10001时还以为是RSA算法!。呵呵,废话说多了。开始吧:
cnbragon兄的SHA和IDEA加密KeyGenMe算法分析
标 题: cnbragon兄的SHA和IDEA加密KeyGenMe算法分析
作 者: 小虾
时 间: 2006-05-07 12:15
附 件: keygenme.rar
链 接: /showthread.php?threadid=25182
输入用户名和注册码后按Chack键,程序中断是断在GetDlgItemTextA系统函数的领空中(看地址如果高于7xxxxxxx以上就属于系统函数领空中)就按Alt+F9返回到程序领空里。
00401700 |. 8>LEA EAX,DWORD PTR SS:[ESP+3EC]
0040172B |. 6>MOV WORD PTR SS:[ESP+20],BX ; |
00401730 |. 8>MOV DWORD PTR SS:[ESP+26],EDX ; |
00401734 |. 8>MOV DWORD PTR SS:[ESP+1C],EBX ; |
004017C7 |. E>CALL KEYGENME.00401000 ; \SetdwSHACountAndKeyBuffer
004017CC |. 8>MOV EDI,DWORD PTR SS:[ESP+44]
004017D0 |. 8>ADD ESP,4
0040171D |. 6>MOV WORD PTR SS:[ESP+2C],BX ; |
00401722 |. 6>MOV WORD PTR SS:[ESP+40],BX ; |
00401727 |. 8>MOV DWORD PTR SS:[ESP+46],ECX ; |
详细信息:
【文章标题】cnbragon兄的SHA和IDEA加密KeyGenMe算法分析
【分析目标】cnbragon兄的KeyGenMe #3
【作 者】小虾&zhanshen[dfcg][rct]
【所用工具】OllyDbg
【声 明】只是个人兴趣,没有其它意思,如要转载,请保留一切信息。
首先输入用户名和注册码:
Name: zhanshen[dfcg][rct]
Code: 1234567898765432 //注册码的位数必须是16位。为什么知道,后面有说^_^
下断自然优先选择GetDlgItemTextA(W)、GetWindowTextA(W)等读取Edit编译框的API函数了。
004017EB |. E>|CALL KEYGENME.00401040 ; \_SetszNameTowName64BitSHAKey
004017F0 |. 8>|ADD ESP,8
004017F3 |. 4>|INC ESI
00401747 |. 6>PUSH 3E9 ; |ControlID = 3E9 (1001.)
0040174C |. 5>PUSH ESI ; |hWnd
00401707 |. 3>XOR ECX,ECX ; 获取用户名
00401709 |. 6>PUSH 0C9 ; /Count = C9 (201.)
004017AD |. 5>|PUSH EDI ; |lpcCharStr
004017AE |. E>|CALL KEYGENME.00401900 ; \_sscanf
0040178A |. 5>POP EDI
0040178B |. 5>POP ESI
0040178C |. 3>XOR EAX,EAX
0040178E |. 5>POP EBX
0040178F |. 8>ADD ESP,610
00401795 |. C>RETN
00401796 |> 5>PUSH EBP
00401757 |. 5>POP EBX
00401758 |. 8>ADD ESP,610
0040175E |. C>RETN
0040175F |> 8>LEA ECX,DWORD PTR SS:[ESP+324] ; 获取注册码
00401766 |. 6>PUSH 0C9
00401740 |. 7>JNZ SHORT KEYGENME.0040175F ; 用户名为空则出错
00401742 |. 6>PUSH KEYGENME.00408048 ; /Text = "Wrong Serial!"
004017A7 |> 5>/PUSH ESI ; /lpwCodeBuffer
004017A8 |. 6>|PUSH KEYGENME.00408040 ; |ASCII "%04X"
004017E2 |. 8>|LEA ECX,DWORD PTR SS:[ESP+4B4]
004017E9 |. 5>|PUSH EAX ; /lpcCharStr
004017EA |. 5>|PUSH ECX ; |lpwNameBuffer
004017F4 |. 3>|CMP ESI,EDI
004017BF |. 8>LEA EDX,DWORD PTR SS:[ESP+4B8] ; 初始化SHA常数及KeyBuffer
004017C6 |. 5>PUSH EDX ; /lpdwSHACountAndwKeyBuffer
00401797 |. 8>LEA EDI,DWORD PTR SS:[ESP+328]
0040179E |. 8>LEA ESI,DWORD PTR SS:[ESP+36]
004017A2 |. B>MOV EBP,4 ; 将注册码转成Word型HEX的整数
00401783 |. 5>PUSH ESI ; |hWnd
00401784 |. F>CALL DWORD PTR DS:[<&USER32.SetDlgItemTextA>] ; \SetDlgItemTextA
004017D3 |. 3>XOR ESI,ESI
004017D5 |. 3>CMP EDI,EBX
004017D7 |. 5>POP EBP
004017D8 |. 7>JLE SHORT KEYGENME.004017F8
004017DA |> 0>/MOVSX EAX,BYTE PTR SS:[ESP+ESI+3EC] ; 将用户名转化成Word型HEX的整数
00401779 |. 6>PUSH KEYGENME.00408048 ; /Text = "Wrong Serial!"
0040177E |. 6>PUSH 3E9 ; |ControlID = 3E9 (1001.)