网络安全课 03 (Feistel密码 DES加密)

Feistel密码

  乘积密码:依次使用两个或者两个以上的基本密码,所得结 果的密码强度将强于所有单个密码的强度

  ?由Horst Feistel发明了Feistel密码 基于可逆的乘积密码。目标是逼近简单代换密码

  ?基本思路

    输入分组被对分为两半

    执行多轮迭代,每轮迭代都有相同的结构

    代换作用在数据的左半部分

    代换的实现:用轮函数F来作用数据的右半部分,再与左半部分数据 进行异或

    每一轮的轮函数相同,但输入的轮密钥Ki不同

    代换完成以后,交换数据的左右两半完成置换

    Feistel密码使用了Shannon的SPN的概念

LEi=REi-1

REi=LEi-1⊕F(LEi,Ki)

 ***对于同一个秘钥,两次异或操作就能抵消掉***

简化DES 

   ?与DES有相似的性质和结构,但参数规模小 很多。

   ?仅有教学意义

   ?可以手工计算

   ?加密算法

    输入:8位明文组;10位密钥

    输出:8位的密文组。

一些说明:

  生成E/P扩展时,那些位置变换是提前制定好的。只需要按制定的规则变换位置就好了

   XOR是E/P 和K1 异或的结果

  S0、S1的矩阵表也是提前设定好的

原文地址:https://www.cnblogs.com/Stephen-Jixing/p/12611689.html

时间: 2024-10-13 01:41:39

网络安全课 03 (Feistel密码 DES加密)的相关文章

DES加密实现(翻译自书籍《Wiley.Implementing.SSL.TLS.Using.Cryptography.and.PKI》)

理解BlockCipher加密算法 凯撒大帝被认为是最古老的对称加密算法.所谓的凯撒加密法(你也许可以从报纸上找到一个作为消遣来玩),它随机的给每一个字母分配一个数字.在这个简单的算法当中,字母到数字的映射就是key.现代加密算法比凯撒算法肯定复杂的多,以便抵御来自计算机的攻击.尽管基本原理是一样,替换一个字母或其它什么东西为另外一个字母或其它什么东西,后续都对替换后的东西进行处理,在几个世纪以来,更多的混淆和扩散(confusion and diffusion)要素被加入,从而创建了现代加密算

关于 Des加密(Android与ios 与后台java服务器之间的加密解密)

关于 Des加密(Android与ios  与后台java服务器之间的加密解密) http://blog.sina.com.cn/s/blog_7c8dc2d50101id91.html (2013-04-17 11:47:23)   分类: iPhone开发 最近做了一个移动项目,是有服务器和客户端类型的项目,客户端是要登录才行的,登录的密码要用DES加密,服务器是用Java开发的,客户端要同时支持多平台(Android.iOS),在处理iOS的DES加密的时候遇到了一些问题,起初怎么调都调不

【Android开发经验】如何保证Android与服务器的DES加密保持一致

转载请注明出处:http://blog.csdn.net/zhaokaiqiang1992 在我们的应用程序涉及到比较敏感的数据的时候,我们通常会对数据进行简单的加密.在与服务器之间的数据交互中,除了可以使用post请求来增强数据的安全性之外,我们可以使用常见的加密算法,对数据进行加密.今天主要介绍的是DES加密算法. 首先,DES属于一种对称的加密算法,所谓对称,就是说加密和解密使用的都是同一个密钥,那么在我们实际应用的时候,就是指服务器和客户端进行加密解密的时候,使用的是一个相同的密钥.除此

关于Objective-c和Java下DES加密保持一致的方式

转载自:http://www.cnblogs.com/janken/archive/2012/04/05/2432930.html 最近做了一个移动项目,是有服务器和客户端类型的项目,客户端是要登录才行的,登录的密码要用DES加密,服务器是用Java开发的,客户端要同时支持多平台(Android.iOS),在处理iOS的DES加密的时候遇到了一些问题,起初怎么调都调不成和Android端生成的密文相同.最终一个忽然的想法让我找到了问题的所在,现在将代码总结一下,以备自己以后查阅. 首先,Java

C# Java DES加密解密

c#代码: public class DESHelper    {          /// <summary>        /// DES加密算法        /// </summary>        /// <param name="encryptString">要加密的字符串</param>        /// <param name="sKey">加密码Key</param>  

DES加密模式详解

DES加密模式详解 http://www.cnblogs.com/Lawson/archive/2012/05/20/2510781.html http://www.blogjava.net/wayne/archive/2011/05/23/350879.html 加密算法常见的有ECB模式和CBC模式: ECB模式:电子密本方式,这是JAVA封装的DES算法的默认模式,就是将数据按照8个字节一段进行DES加密或解密得到一段8个字节的密文或者明文,最后一段不足8个字节,则补足8个字节(注意:这里

JAVA使用DES加密解密

在使用DES加密解密的时候,遇到了一些问题,廖记一下.如有哪位大神亲临留言指点,不胜感激. 先上代码: public DESUtil() { } //密码,长度要是8的倍数 注意此处为简单密码 简单应用 要求不高时可用此密码 /*DES是一种对称加密算法,所谓对称加密算法即:加密和解密使用相同密钥的算法.DES加密算法出自IBM的研究,后来被美国政府正式采用,之后开始广泛流传,但是近些年使用越来越少,因为DES使用56位密钥,以现代计算能力,24小时内即可被破解.*/ private stati

每分钟变换一个密码的加密验证功能

越南项目需要引入用户管理的模块,需要有注册登录的功能,因为有来自政府部门的订单,所以对安全方面的要求比较高. 我在注册登录的功能中引入变换密码的加密概念. 用户注册加密过程:服务器拿到原始密码,使用SHA_1算法加密,再使用MD5加密,然后存入数据库. 用户登录加密验证过程:客户端拿到用户输入的密码,使用SHA_1算法加密,再使用MD5加密,将得到的密文加上时间戳,然后再按照之前方式加密一次,提交给服务器.服务器接收到密文之后,在数据库中查询出用户注册时的密文,给密文加上时间戳,再使用SHA_1

DES加密和解密PHP,Java,ObjectC统一的方法

原文:DES加密和解密PHP,Java,ObjectC统一的方法 PHP的加解密函数 <?php class DesComponent { var $key = '12345678'; function encrypt($string) { $ivArray=array(0x12, 0x34, 0x56, 0x78, 0x90, 0xAB, 0xCD, 0xEF); $iv=null; foreach ($ivArray as $element) $iv.=CHR($element); $siz