首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >A5/1安全算法3

A5/1安全算法3
EN

Stack Overflow用户
提问于 2015-01-29 06:50:13
回答 1查看 103关注 0票数 0

在下面的链接中,我们有一个A5/1算法的教学实现。我知道它是如何工作的,但是我不能理解bit parity(word x)函数是做什么的?我知道它是什么,但请告诉我它是怎么工作的。

代码语言:javascript
复制
typedef unsigned long word;
typedef word bit;

/* Calculate the parity of a 32-bit word, i.e. the sum of its bits modulo 2 */
bit parity(word x) {
    x ^= x>>16;
    x ^= x>>8;
    x ^= x>>4;
    x ^= x>>2;
    x ^= x>>1;
    return x&1;
}

算法链接:http://scard.org/gsm/a51.html

EN

回答 1

Stack Overflow用户

发布于 2015-01-29 09:37:29

除了对字体大小做一些可能没有根据的假设(目前,unsigned long通常是64位的,而不是32位的),它不是很难编写的代码。

假设x是一个32位的值,那么:

  • x ^= x >> 16;x的前16位与后16位进行异或运算。底部16位分别表示原始32位字中一对位的奇偶校验。

对最低的8位重复此过程,然后是4,然后是2,然后是1位,因此最后,最低有效位是原始32位值的奇偶校验。

如果unsigned long是64位值,则代码仍会生成输入值的较低有效32位的奇偶校验。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28203934

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档