一种改进的Present加密算法

http://xueshu.baidu.com/s?wd=paperuri:(27624be4b435764ce6fa3d9fcccc8bfd)&filter=sc_long_sign&sc_ks_para=q%3DI-PRESENT%3A+An+Involutive+Lightweight+Block+Cipher&tn=SE_baiduxueshu_c1gjeupa&ie=utf-8&sc_us=131043553867608968

http://xueshu.baidu.com/s?wd=paperuri%3A%2827624be4b435764ce6fa3d9fcccc8bfd%29&filter=sc_long_sign&tn=SE_xueshusource_2kduw22v&sc_vurl=http%3A%2F%2Fwww.oalib.com%2Fpaper%2F3111973&ie=utf-8&sc_us=131043553867608968

先放上论文链接,这个论文是国外研究人员写的。

我本人其实没怎么做前期的工作,这个密码是和实验室项目有关,实验室学长学姐之前负责一个电力系统的加密传输项目……然后老板叫我把这哥密码实现一下……问题是为什么要我实现,学长学姐为什么没有实现……

总之最后是实现了。

由于时间问题,这篇文章编辑时间比较长,目前先写到这儿。

我打算先把present加密算法介绍一下,再把这个改进的present加密算法介绍一下,然后会上传写好的改进型present算法文件。

1.PRESENT加密算法简介

(引用一下度娘……)

 

在CHES2007上,Bogdanov等提出了PRESENT算法,该算法具有出色的硬件实现性能和简洁的轮函数设计。PRESENT密码算法与现有的轻量级分组密码算法TEA、MCRYPTON、HIGHT、SEA和CGEN相比,有着更简单的硬件实现,因此被称为超轻量级密码算法。

PRESENT分组密码算法采用SPN结构,分组长度为64位,支持80位、128位两种密钥长度。共迭代31轮,每轮轮函数F 由轮密钥加、S盒代换、P置换3部分组成。

加密过程如下:

1) 轮密钥加:64bit 轮输入同轮密钥进行异或。

2) S 盒代换层:将轮密钥加64bit 输出查找16 个4 进4 出的S 盒。

3) P 置换层:通过置换表P(i)对S 盒代换64bit 输出按比特进行重新排列。

为提高算法安全性,PRESENT 在第31 轮后使用64bit 密钥K32 进行后期白化操作

    (*目前CSDN上面有C++编写的present算法,但是只有一个分组内的加密。本来有打算把代码公布出来,不过感觉有点对不起原作者所以就不公布啦……有兴趣的同学请自行下载,地址:https://download.csdn.net/download/jinzhong1011/3841349。)

然后再根据自己搜索的资料稍稍详细地介绍一下present算法的几个特点(本人对于密码学的,关于分组密码学的基本知识就不赘述了……):

1)PRESENT密码是一种分组密码,,每个分组为64比特大小;

2)用于加密解密的密钥可选择128bit和80bit的,csdn上目前我只找到80bit密钥版本;

3)需要进行31轮的迭代每一轮都需要经过轮密钥加、S盒变换和P置换三种操作;

4)为什么说是轻量型加密算法呢?以AES为例,AES的分组大小是128比特,密钥长度则可以是128,192或256位,相比之下present算法的分组大小为64bit,密钥为80bit或者128bit,硬件开销上小于aes算法;

5)个人测试发现PRESENT加密字符串的时间很长。国密SM4的加密速度能达到AES的水准,相比之下PRESENT的加密时间会达到SM4的数倍(之前SM4花6秒加密的数据,PRESENT要30秒左右,经过检查应该不是自己拼接字符串出错);

(*更详细的资料看这里吧,比如P变换,S变换,轮密钥加都是啥……https://wenku.baidu.com/view/dcb9a0454b35eefdc8d333cd.html?from=search

改进后的present算法(以下简称I-PRESENT)的特点:

1)算法中使用了一个对合函数S盒(也就是说原先的S盒和逆S是不一样的,而这个对合函数S盒,可以理解为对称的S盒,经过两次对合函数S盒变换,分组就可以恢复)。另外论文中的S盒和逆S盒是错误的,请参考程序中的S盒和逆S盒;

2)密钥扩展时候的左移61位变成左移53位,不过实际上如果原始版本的密钥扩展变为53位,并不会影响加密解密,没记错的话左移61+8*i位都不影响加密解密,原理不知道……(本质上密钥扩展没变);

3)原先的PRESENT算法需要31轮运算,

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值