每日一得--DES/3DES/AES区别

本文深入探讨了数据加密技术的历史发展,从公元前400年的置换密码讲起,直至现代的DES、3DES和AES算法。重点阐述了DES、3DES和AES的工作原理、特点和应用领域,特别强调了DES在金融交易网络中的安全性保障作用及3DES、AES作为其进阶解决方案的重要性。

 公元前400年,古希腊人发明了置换密码。1881年世界上的第一个电话保密专利出现。在第二次世界大战期间,德国军方启用“恩尼格玛”密码机,密码学在战争中起着非常重要的作用。

 

 

DES

  1977年1月,美国政府颁布:采纳IBM公司设计的方案作为非机密数据的正式数据加密标准(DES Data Encryption Standard) 

  目前在国内,随着三金工程尤其是金卡工程的启动,DES算法在POS、ATM、磁卡及智能卡(IC卡)、加油站、高速公路收费站等领域被广泛应用,以此来实现关键数据的保密,如信用卡持卡人的PIN的加密传输,IC卡与POS间的双向认证、金融交易数据包的MAC校验等,均用到DES算法。

 

  DES算法的入口参数有三个:Key、Data、Mode。

  其中Key为8个字节共64位,是DES算法的工作密钥

  Data也为8个字节64位,是要被加密或被解密的数据

  Mode为DES的工作方式,有两种:加密解密

 

  DES算法是这样工作的:

  如Mode为加密,则用Key 去把数据Data进行加密, 生成Data的密码形式(64位)作为DES的输出结果;

  如Mode为解密,则用Key去把密码形式的数据Data解密,还原为Data的明码形式(64位)作为DES的输出结果。

  在通信网络的两端,双方约定一致的Key,在通信的源点用Key对核心数据进行DES加密,然后以密码形式在公共通信网(如电话网)中传输到通信网络的终点,数据到达目的地后,用同样的Key对密码数据进行解密,便再现了明码形式的核心数据。这样,便保证了核心数据(如PIN、MAC等)在公共通信网中传输的安全性和可靠性。

  通过定期在通信网络的源端和目的端同时改用新的Key,便能更进一步提高数据的保密性,这正是现在金融交易网络的流行做法。

 

 

3DES

  3DES是DES加密算法的一种模式,它使用3条64位的密钥对数据进行三次加密数据加密标准(DES)是美国的一种由来已久的加密标准,它使用对称密钥加密法。

  3DES(即Triple DESDESAES过渡的加密算法(1999年,NIST将3-DES指定为过渡的加密标准),是DES的一个更安全的变形。它以DES为基本模块,通过组合分组方法设计出分组加密算法。

 

  设Ek()和Dk()代表DES算法的加密和解密过程,K代表DES算法使用的密钥,P代表明文,C代表密表,这样,

  3DES加密过程为:C=Ek3(Dk2(Ek1(P)))

  3DES解密过程为:P=Dk1((EK2(Dk3(C)))

  K1、K2、K3决定了算法的安全性,三个密钥互不相同,本质上就相当于用一个长为168位的密钥进行加密。多年来,它在对付强力攻击时是比较安全的。若数据对安全性要求不那么高,K1可以等于K3。在这种情况下,密钥的有效长度为112位

 

 

AES

  AES(Advanced Encryption Standard):高级加密标准,是下一代的加密算法标准,速度快,安全级别高。

  用AES加密2000年10月,NIST(美国国家标准和技术协会)宣布通过从15种候选算法中选出的一项新的密匙加密标准。Rijndael被选中成为将来的 AES。Rijndael是在1999年下半年,由研究员Joan Daemen 和 Vincent Rijmen 创建的。AES正日益成为加密各种形式的电子数据的实际标准。

  美国标准与技术研究院(NIST)于2002年5月26日制定了新的高级加密标准(AES)规范。

 

  AES算法基于排列和置换运算。排列是对数据重新进行安排,置换是将一个数据单元替换为另一个。

  AES使用几种不同的方法来执行排列和置换运算。AES是一个迭代的对称密钥分组的密码,它可以使用128192256位密钥,并且用128位(16字节)分组加密和解密数据。

  与公共密钥加密使用密钥对不同,对称密钥密码使用相同的密钥加密和解密数据。通过分组密码返回的加密数据的位数与输入数据相同。迭代加密使用一个循环结构,在该循环中重复置换和替换输入数据。




学习 Linux 课程的过程不仅是对技术能力的提升,更是对自主学习能力和问题解决能力的锻炼。通过系统地学习 Linux 操作系统的基础知识、命令行操作、内核机制以及开源社区运作方式,可以深入理解现代操作系统的设计理念和实现方式[^2]。 在学习初期,重点通常集中在 Linux 的基础理论部分,包括其起源、发展历史以及开源特性。Linux 从 Linus Torvalds 编写的个人内核逐步演变为全球广泛使用的操作系统,这一过程充分体现了开源社区的力量与协作精神[^3]。 随着学习的深入,掌握命令行操作成为关键技能之一。Linux 提供了强大的命令行工具,能够高效地完成文件管理、进程控制、网络配置等任务。例如,使用 `grep` 进行文本搜索、`awk` 进行数据处理、`sed` 进行流编辑等,都是日常运维和开发中不可或缺的技能[^2]。 对于 Linux 内核的学习,则需要更加系统化的方法。由于内核代码庞大且复杂,建议从入口函数开始,逐步理清模块之间的依赖关系,并结合实验进行验证。例如,在实验环境中使用 `qemu` 启动一个最小化的 Linux 系统,观察内核启动流程并调试关键函数: ```bash qemu-system-x86_64 -kernel /path/to/vmlinuz -initrd /path/to/initrd.img ``` 这种实践方式有助于加深对内核工作机制的理解,同时也能提高调试和问题定位的能力[^4]。 在整个学习过程中,保持耐心和自信心是持续进步的关键。Linux 学习并非一蹴而就,而是需要不断积累和反思的过程。遇到问题时,应积极查阅文档、参与社区讨论,甚至阅读源码来寻找答案。这种主动探索的精神不仅能帮助掌握 Linux 技术,也培养了良好的工程思维和独立解决问题的能力[^1]。 此外,Linux 的学习不仅仅是掌握命令或配置方法,更重要的是理解其背后的原理和设计哲学。例如,Linux 坚持“一切皆文件”的设计思想,使得系统接口高度统一,便于管理和扩展。这种设计理念贯穿整个系统架构,影响着从设备驱动到用户程序的方方面面[^3]。 总之,Linux 课程的学习不仅提升了技术能力,也强化了自主学习和实践操作的意识。它是一扇通往更深层次计算机科学知识的大门,为后续的操作系统研究、系统编程、云计算、容器技术等领域打下坚实基础[^5]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值