没有合适的资源?快使用搜索试试~ 我知道了~
多种密码算法的实现与性能比较.pdf
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 70 浏览量
2022-06-04
13:54:17
上传
评论
收藏 203KB PDF 举报
温馨提示
试读
7页
。。。
资源推荐
资源详情
资源评论
多种密码算法的实现与性能比较
1.A5 算法
(一)算法原理:
A5 算法为流密码算法。A5 算法的主要组成部分是三个长度不同的线性移位寄存器,每
个寄存器分别为 19 位,22 位和 23 位。移位是由时钟控制的,且遵循“择多”的原则,即
从每个寄存器中取出一个中间位并进行判断,三个数中占多数的寄存器参加移位,其余的不
移位。比如在取出的三个中间位中有两个为“1”,则为“1”的寄存器进行一次移位,而为
“0”的不移。反过来,若三个中间位中有两个为“0”,则为“0”的寄存器进行一次移位,
而为“1”的不移。
(二) 关键代码如下:
(1)根据主密钥 Key 初始化 3 个长度不同的线性移位寄存器:
r[0] = (key[0] | (key[1] << 8) | (key[2] << 16) ) & 0x7ffff;
r[1] = ((key[2] >> 3) | (key[3] << 5) | (key[4] << 13) | (key[5] << 21)) & 0x3fffff;
r[2] = ((key[5] >> 1) | (key[6] << 7) | (key[7] << 15) ) & 0x7fffff;
(2)由时钟控制移位:
r[0] = clock_r1(clock_ctl, r[0]);
r[1] = clock_r2(clock_ctl, r[1]);
r[2] = clock_r3(clock_ctl, r[2]);
(3)产生密钥流算法代码:
void a5_key(unsigned long r[3], unsigned char k[8]){
r[0]=k[0]<<11|k[1]<<3|k[2]>>5;
r[1]=k[2]<<17|k[3]<<9|k[4]<<1|k[5]>>7;
r[2]=k[5]<<15|k[6]<<8|k[7];
}
(4)加密算法代码:
void a5_encrypt(unsigned long r[3],unsigned char *data,unsigned long len,unsigned char
*ctxt){
unsigned long i;
int j;
unsigned char t;
for (i=0;i<len;i++){
for (j=0;j<8;j++) t=t<<1|a5_step(r);
}
ctxt[i]=data[i]^t;
}
(三)程序运行结果
本次测试数据:主密钥为 unsigned char key[]={1,2,3,4,5,6,7,8};
加密明文数据为: for (i=0;i<128;i++) data[i]=i;
加密后的密文数据:unsigned char *ctxt
每个主代码做了 100 次循环:
for (j=0;j<100;j++)
{
a5_key(r,key);
a5_encrypt(r,data,128,ctxt);
资源评论
G11176593
- 粉丝: 6672
- 资源: 3万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功