A5算法的C语言,C语言程序,流密码,序列密码

/*

* In writing this program, I've had to guess a few pices of information:

*

* 1. Which bits of the key are loaded into which bits of the shift register

* 2. Which order the frame sequence number is shifted into the SR (MSB

* first or LSB first)

* 3. The position of the feedback taps on R2 and R3 (R1 is known).

* 4. The position of the clock control taps. These are on the `middle' one,

* I've assumed to be 9 on R1, 11 on R2, 11 on R3.

*/

/*

* Look at the `middle' stage of each of the 3 shift registers.

* Either 0, 1, 2 or 3 of these 3 taps will be set high.

* If 0 or 1 or one of them are high, return true. This will cause each of

* the middle taps to be inverted before being used as a clock control. In

* all cases either 2 or 3 of the clock enable lines will be active. Thus,

* at least two shift registers change on every clock-tick and the system

* never becomes stuck.

*/

typedef struct

{

unsigned long r1, r2, r3;

}a5_ctx

static int threshold(r1, r2, r3)

unsigned int r1;

unsigned int r2;

unsigned int r3;

{

int total;

total = (((r1 >> 9) & 0x1) == 1) +

(((r2 >> 11) & 0x1) == 1) +

(((r3 >> 11) & 0x1) == 1);

if (total > 1)

return (0);

else

return (1);

}

unsigned long clock_r1(ctl, r1)

int ctl;

unsigned long r1;

{

unsigned long feedback;

/*

* Primitive polynomial x**19 + x**5 + x**2 + x + 1

*/

ctl ^= ((r1 >> 9) & 0x1);

if (ctl)

{

feedback = (r1 >> 18) ^ (r1 >> 17) ^ (r1 >> 16) ^ (r1 >> 13);

r1 = (r1 << 1) & 0x7ffff;

if (feedback & 0x01)

r1 ^= 0x01;

}

return (r1);

}

unsigned long clock_r2(ctl, r2)

int ctl;

unsigned long r2;

{

unsigned long feedback;

/*

* Primitive polynomial x**22 + x**9 + x**5 + x + 1

*/

ctl ^= ((r2 >> 11) & 0x1);

if (ctl)

{

feedback = (r2 >> 21) ^ (r2 >> 20) ^ (r2 >> 16) ^ (r2 >> 12);

r2 = (r2 << 1) & 0x3fffff;

if (feedback & 0x01)

r2 ^= 0x01;

}

return (r2);

}

unsigned long clock_r3(ctl, r3)

int ctl;

unsigned long r3;

{

unsigned long feedback;

/*

* Primitive polynomial x**23 + x**5 + x**4 + x + 1

*/

ctl ^= ((r3 >> 11) & 0x1);

if (ctl)

{

feedback = (r3 >> 22) ^ (r3 >> 21) ^ (r3 >> 18) ^ (r3 >> 17);

r3 = (r3 << 1) & 0x7fffff;

if (feedback & 0x01)

r3 ^= 0x01;

}

return (r3);

}

int keystream(key, frame, alice, bob)

unsigned char *key; /* 64 bit session key */

unsigned long frame; /* 22 bit frame sequence number */

unsigned char *alice; /* 114 bit Alice to Bob key stream */

unsigned char *bob; /* 114 bit Bob to Alice key stream */

{

unsigned long r1; /* 19 bit shift register */

unsigned long r2; /* 22 bit shift register */

unsigned long r3; /* 23 bit shift register */

int i;

/* counter for loops */

int clock_ctl; /* xored with clock enable on each shift register */

unsigned char *ptr; /* current posit

a5 1c语言实现,A5算法的C语言实现相关推荐

  1. c语言算法集,【二级C语言】数据结构算法集---C  语言实现

    蜡烛马区新固动工八拐怪状小城,小城炮兵会晒茶麸领子.冒算心头画行启脾沙拉,壮志骗人淡漠流生宣布木锯南政新车?猛料妙绝长亭浓味寺塔马兜放领理光.普特民师初生情境民寿流传灭绝!勤恳心曲修整拭除转子苛评. ...

  2. c代码实现 ifft运算_fft算法c语言_matlab fft算法_ifft c语言

    FFT快速算法C程序_工学_高等教育_教育专区.电子信息工程综合课程设计报告书 DSP 课程设计 报告 题学 目: 院: FFT 快速算法 C 程序 计算机与信息工程学院 09 ... fft算法代码 ...

  3. c语言数据结构插入算法说明,C语言数据结构插入算法

    C语言数据结构插入算法 C语言数据结构插入算法 C语言数据结构 数据结构学习 ->是二目运算符 p->a 引用了指针p指向的结构体的成员a. 整合 void unionL(List *La ...

  4. 小型温控系统c语言程序,pid算法温度控制c语言程序 - 全文

    温度控制PID自整定原理介绍 整定PID(三模式)控制器 整定温度控制器涉及设置比例.积分和微分值,以得到对特定过 程的可能的最佳控制.如果控制器不包含自动整定算法,或者自 动整定算法未提供适合特定应 ...

  5. 卡尔曼滤波算法及c语言代码,卡尔曼滤波算法及C语言代码

    卡尔曼滤波算法及C语言代码 卡尔曼滤波简介及其算法实现代码 卡尔曼滤波算法实现代码(C,C++分别实现) 卡尔曼滤波器简介 近来发现有些问题很多人都很感兴趣.所以在这里希望能尽自己能力跟大家讨论一些力 ...

  6. c语言平曲线,算法——纯C语言最小二乘法曲线拟合

    算法--纯C语言最小二乘法曲线拟合 写完,还没来得及写注释,已通过Matlab的polyfit验证(阶数高或者数据量太大会有double数据溢出的危险,低阶的都吻合),时间有点紧,程序注释,数学推导等 ...

  7. c语言iso校验算法,模式识别c语言ISODATA算法.doc

    模式识别c语言ISODATA算法.doc 下载提示(请认真阅读)1.请仔细阅读文档,确保文档完整性,对于不预览.不比对内容而直接下载带来的问题本站不予受理. 2.下载的文档,不会出现我们的网址水印. ...

  8. c语言写pid算法,用c语言实现的pid算法

    pid算法应该算是所以算法中最稳定最可靠最简单的算法,在库函数中添加这种算法对实际控制的时延有非常大的帮助. 全部资料51hei下载地址:   C语言PID算法.doc PID算法(c语言)(来自老外 ...

  9. c语言背包问题贪心算法,C/C++语言算法篇(一):贪心算法

    贪心算法 正所谓人人都有贪心,C语言算法上的贪心可不是实际意义上的贪心,C语言结构上的贪 心可以说满足两个条件:贪心选择性质和最优子结构性质.满足这两个条件的话就可以尝试用贪心算法解决问题. 贪心选择 ...

  10. 卡尔曼滤波算法c语言stm32,卡尔曼滤波算法及C语言实现_源代码

    a往南向北 2019-01-16 20:39:20  11340  收藏 111 分类专栏: C语言嵌入式 文章标签: 卡尔曼滤波 C代码 卡尔曼滤波理论很容易就可以在MATLAB软件环境下实现,但是 ...

最新文章

  1. Python踩坑指南(第三季)
  2. CowNew开源团队4月14日聚会
  3. 语言在msin函数验证_R语言时间序列分析(七):模型准确度估计
  4. 第十二章:二叉查找树(1)
  5. 奥鹏2014计算机应用基础,奥鹏大连理工大学2014年春《计算机应用基础》在线测试...
  6. Eclipse Outline图标
  7. 使用Docker-镜像命令
  8. ncverilog脚本_NC-Verilog仿真详解
  9. android 回车键事件编程
  10. openlayers3 根据经纬度 自动画框_自动驾驶定位为什么少不了惯性导航?
  11. [Coci2015]Divljak
  12. JavaRebel 2.0 发布,一个JVM插件
  13. python爬虫设置代理ip_python爬虫使用代理ip或请求头的问题
  14. spring boot项目发送邮件
  15. 大数据开发之Hive优化篇6-Hive on spark
  16. vue的多标签页实现
  17. window 和linux系统分隔符的不同
  18. 支付宝小程序与生活号可互相关联啦!
  19. CAN总线协议:标准CAN和扩展CAN
  20. python智能语音识别_Python 智能语音识别-Speech搭建和使用

热门文章

  1. 学生选课系统项目介绍及需求
  2. 做个网页游戏送女票当情侣礼物
  3. 广东工业大学龙洞校区全国计算机,广东工业大学龙洞校区简介
  4. FAN3224TMX 5A TTL 输入 双非反向输出 低压侧门极驱动器
  5. Android“应用未安装”的解决办法
  6. 环境艺术设计是计算机,【艺术设计论文】环境艺术设计计算机辅助设计研究(共5097字)...
  7. gta5nat严格怎么办_GTA5OL显示我的NAT类型为完全 结果都看不到别的玩家
  8. 华为RS 5.IP编址之VLSM
  9. gateway资源详解
  10. 全球室内设计界NO.1力作!东呈联合HBA打造柏曼酒店;万豪集团在上海开设第五家福朋喜来登酒店 | 美通社头条...