有限域GF(2^n)的C语言实现浅析

    由于项目的需要,在网上扒了半天,没有找到域GF(2^n)的C语言实现的系统的介绍。本文试图解释偶特征有限域的实现,让读者不必像我一样浪费太多时间在搜索中。本文以GF(2^8)为例。转载请注明出处,谢谢!


    甲、有限域的加法实现

       简单的异或运算即可:

unsigned char add(unsigned char a, unsigned char b) {
return a ^ b;
}


    乙、有限域的减法实现
与加法相同
unsigned char sub(unsigned char a, unsigned char b) {
return a ^ b;
}


    丙、有限域的乘法实现

算法简介

输入:8-bit数a,b,

输出:8-bit数c

1、  设定c的初始值为0

2、  执行以下循环8次

(1)      如果b的最低位是1,则c与a做异或运算。

(2)      检查a的最高位是否为1.

(3)      a左移一位,即舍弃最高位,最低位以0补充。

(4)      如果在上一步左移前,a的最高位是1,则a与十六进制数0x1b做异或运算。

(5)      b右移1位,即舍弃最低位,最高位以0补充。

3、c 就是a和b的乘积。

  • 0
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值