有限域运算_有限域GF

有限域运算_有限域GF  忙了一周,总算把网络编码的Demo搞定了。  回想一下,大部分的时间都花在有限域的运算上了。网上找了几个运算类,没一个像样的,算出来结果也没两个是一样的,汗…主要是三个方面的问题,一是本原多项式P(x),到现在我还是没搞懂这玩意是怎么定出来的,为什么同样是GF(2^8),有人说P(x)=x^8+x^4+x^3+x+1,有人又说是P(x)=x^8+x^4+x^3+x^2+1,而且两种还都可以

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全家桶1年46,售后保障稳定

  忙了一周,总算把网络编码的Demo搞定了。
  回想一下,大部分的时间都花在有限域的运算上了。网上找了几个运算类,没一个像样的,算出来
结果也没两个是一样的,汗…主要是三个方面的问题,一是本原多项式P(x),到现在我还是没搞懂这玩意是怎么定出来的,为什么同样是GF(2^8),有人说P(x)=x^8+x^4+x^3+x+1,有人又说是P(x)=x^8+x^4+x^3+x^2+1,而且两种还都可以正常运算(编码后可以正确解码),搞得我相当被动,最后选择的是前者,因为看起来支持的人要多一点,再汗…二是乘法,这也够混乱的,有人按多项式展开,有人直接对普通乘法求模,还有人…实在看不懂怎么算的。好在后来从一段AES加密算法的源码里扒出个用查表法实现的乘法函数,省时又好用。三是除法,这个简直就很少有人提及了,据说除法可以分解成乘法和求逆运算,可半天也没想出怎么分解,最后终于从一篇很老的paper里找到了一点提示,总算是基本把有限域运算这个难题给了结了。
  毕竟我不是搞数学的,有限域只不过是个工具,能用就行,不想也没时间深入研究下去了。不过还是把GF(2^8)运算中用到的几个函数贴上来吧,就当是行善积德了。
  代码主要是正反对数表的构造和乘除法,至于加减,当然就是神奇的异或了。

 

有限域运算_有限域GF
        
public
 
static
 
int
[] alog 
=
 
new
 
int
[
256
];
有限域运算_有限域GF        

public
 
static
 
int
[] log 
=
 
new
 
int
[
256
];
有限域运算_有限域GF    
有限域运算_有限域GF    

//
构造GF(2^8)上的对数表和反对数表

有限域运算_有限域GF有限域运算_有限域GF

    
public
 
void
 generateLogTable() 

{

有限域运算_有限域GF        
int i, j;
有限域运算_有限域GF
有限域运算_有限域GF        alog[
0= 1;
有限域运算_有限域GF有限域运算_有限域GF        
for (i = 1; i < 256; i++{

有限域运算_有限域GF            j 
= (alog[i1<< 1^ alog[i1];
有限域运算_有限域GF            
if ((j & 0x100!= 0)
有限域运算_有限域GF                j 
^= 0x11B;        //0x11B即本原多项式x^8+x^4+x^3+x+1
有限域运算_有限域GF
            alog[i] = j;
有限域运算_有限域GF        }

有限域运算_有限域GF
有限域运算_有限域GF        log[
0= log[1= 0;
有限域运算_有限域GF        
for (i = 1; i < 255; i++)
有限域运算_有限域GF            log[alog[i]] 
= i;
有限域运算_有限域GF    }


有限域运算_有限域GF    
有限域运算_有限域GF    

//
GF(2^8)上的乘法运算,查表实现

有限域运算_有限域GF有限域运算_有限域GF

    
public
 
int
 mul(
int
 A, 
int
 B) 

{

有限域运算_有限域GF        
if (A == 0 || B == 0)
有限域运算_有限域GF            
return 0;
有限域运算_有限域GF        
else
有限域运算_有限域GF            
return alog[(log[A]+log[B])%255];
有限域运算_有限域GF    }


有限域运算_有限域GF    
有限域运算_有限域GF    

//
GF(2^8)上的除法运算,查表实现

有限域运算_有限域GF有限域运算_有限域GF

    
public
 
int
 div(
int
 A, 
int
 B) 

{

有限域运算_有限域GF        
if (A == 0)
有限域运算_有限域GF            
return 0;
有限域运算_有限域GF有限域运算_有限域GF        
else if (B == 0{

有限域运算_有限域GF            System.err.println(
divide by zero exception);
有限域运算_有限域GF            
return 1;
有限域运算_有限域GF        }

有限域运算_有限域GF有限域运算_有限域GF        
else {

有限域运算_有限域GF            
if ((log[A]log[B]) < 0)
有限域运算_有限域GF                
return alog[(log[A]log[B]+255)%255];
有限域运算_有限域GF            
else
有限域运算_有限域GF                
return alog[(log[A]log[B])%255];
有限域运算_有限域GF        }

有限域运算_有限域GF    }

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/234397.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 为matlab GUI添加背景图片

    为matlab GUI添加背景图片为matlabGUI添加背景图片为GUI添加一个背景图片,不仅可以让我们的界面变得漂亮大气上档次,而且软件对与用户的交互更加友好。用C或者C++写过软件界面的人都知道,这件事情可以轻而易举的办到,那么问题来了,怎么为matlab的GUI添加一个背景图片呢?其实这个操作也很简单,但是如果是第一次做这个,可能需要折腾好久。在这里我希望跟大家分享一下这个小技巧,避免大家遇到同样的问题再走弯路。欢迎…

    2022年6月12日
    34
  • 深度学习模型压缩与优化加速(Model Compression and Acceleration Overview)

    深度学习模型压缩与优化加速(Model Compression and Acceleration Overview)1.简介深度学习(DeepLearning)因其计算复杂度或参数冗余,在一些场景和设备上限制了相应的模型部署,需要借助模型压缩、优化加速、异构计算等方法突破瓶颈。模型压缩算法能够有效降低参数冗余,从而减少存储占用、通信带宽和计算复杂度,有助于深度学习的应用部署,具体可划分为如下几种方法(后续重点介绍剪枝与量化):线性或非线性量化:1/2bits,int8和fp16等; 结构或…

    2022年9月27日
    4
  • 小白教程!!!win10如何安装Windows和Linux双系统??

    小白教程!!!win10如何安装Windows和Linux双系统??最近升级了win10装了一块固态硬盘,决定装一个双系统玩玩,正好公司运维大哥没事干,在他的帮助下,加上上网看了看发现关于win10的双系统双硬盘安装教程大都语焉不详,要么就是从别处复制粘贴的,这里发一个我的安装步骤如下:一:去官网下载Ubuntu系统 地址:https://www.ubuntu.com/download/desktop问题来了,去哪里下载一个linux系统呢?很简单,去官…

    2022年7月24日
    5
  • C语言:十进制、十六进制数据互换

    C语言:十进制、十六进制数据互换最近写单片机数据转换用到了十进制 十六进制互换 将示例 Demo 分享给各位朋友

    2025年9月6日
    3
  • 数据库的三大范式[通俗易懂]

    数据库的三大范式[通俗易懂]当你应聘后端岗位的时候,数据库的知识必不可少,今天给大家分享一下数据库三大范式的通俗理解第一范式:无重复的列第二范式:属性完全依赖于主键第三范式:属性不依赖于其他非主属性总结:第一范式(1NF)原子性:保证数据不可再分第二范式(2NF)前提:满足第一范式每张表只描述一件事情,就是主键对应着所有信息第三范式(3NF)前提:满足第一和第二范式第三范式需要保证表中的数据和主键直接相关,而不是间接相关注意:阿里巴巴要求关联查询的表不得超过3张,数据库的性能更加重要,适当考虑规范性就好其实目前关系数据库有六种范式:

    2025年12月9日
    3
  • 何为堡垒机

    何为堡垒机

    2021年5月10日
    153

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号