有限域运算_有限域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    }

 

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • id门禁卡复制到手机_怎么把手机变成门禁卡 手机NFC复制门禁卡图文教程

    id门禁卡复制到手机_怎么把手机变成门禁卡 手机NFC复制门禁卡图文教程无论是在学校、小区或者是单位里面,一般都会有一道安全的门禁,保证范围内部的安全。但是每次都需要找到专用的门禁卡开门,经常容易忘记或者不小心弄丢了。今天,小编教大家一个技巧,教你如何把门禁卡悄无声息的放在手机上,这样以后就可以用手机当门禁卡了,这样是不是方便很多呢?下面是详细的方法步骤。通过修改手机NFCID过门禁大概流程就是利用手机上的APP(推荐:NFCTagInfo)读取出门禁卡的ID,然…

  • 关于PreferenceActivity的使用和一些问题的解决(自己定义Title和取值)

    关于PreferenceActivity的使用和一些问题的解决(自己定义Title和取值)

    2021年11月28日
  • matlab之simulink仿真入门

    matlab之simulink仿真入门MatlabSimulink仿真工具的应用****Simulink是一个用来对动态系统进行建模、仿真和分析的软件包。使用Simulink来建模、分析和仿真各种动态系统(包括连续系统、离散系统和混合系统),将是一件非常轻松的事情。它提供了一种图形化的交互环境,只需用鼠标拖动的方法便能迅速地建立起系统框图模型,甚至不需要编写一行代码。由于Simulink具有强大的功能与友好的用户界面,因此它已

  • jmeter安装教程以及jdk环境配置_正版win10下载

    jmeter安装教程以及jdk环境配置_正版win10下载【Jmeter】win10/win11:Jmeter下载、安装、汉化、新机迁移、版本更新(Jmeter4以上版本均适用)

    2022年10月23日
  • 电脑使用哪个录制视频软件比较好

    电脑使用哪个录制视频软件比较好如今社会从一个开放的年代发展为开放的信息时代,人们对于自我表达越发的大胆。追求标新立意,而视频正好迎合了人群的需要。视频的表现方式比图纸更加直观具有冲击力,更展现更加生动丰富的内容。想要录制视频其实不难,只需要一款专业的录制视频软件就可以帮搜我们达到我们想要的效果。使用工具:电脑(有网络)迅捷屏幕录像工具操作步骤:1、首先电脑在线进入百度浏览器搜索迅捷屏幕录像,并且安装在电脑上进行运行。…

  • 学成在线项目怎么样(学成在线微服务)

    CMS接口开发1项目的功能构架1.1项目背景1.2功能模块1.3项目原型2项目的技术架构2.1技术架构2.2技术栈2.3开发步骤3CMS需求分析3.1什么是CMS3.2静态门户工程搭建3.2.1导入门户工程3.2.2配置虚拟主机 在nginx中配置虚拟主机:3.2.3SSI服务端包含技术3.3CMS页面管理需求4CMS服务端工程搭建注释也是必不可少的KaTeX数学公…

发表回复

您的电子邮箱地址不会被公开。

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