目的是找出所有GF(2^8)的生成元。

方法很简单,从2开始遍历,将每个元素都与自身相乘255次,看是否能得到1~255。若能,则是生成元。

#include<iostream>
#include<fstream>
using namespace std;
unsigned char GFmul(unsigned char a, unsigned char b){
//GF(2^8) 乘法
unsigned char result = ;
if((b&) == )result = a;
b >>= ;
for(int i = ; i < ; i ++){
if(a > ){
a = (a << ) ^ 0x1b;
}
else{
a <<= ;
}
if((b&) == ){
result ^= a;
}
b >>= ;
}
return result;
}
int findGenerator(int result[]){
//找出所有GF(2^8)的生成元
unsigned char x = ; //从2开始查找
int len = ;
do{
int count[], i;
for(i = ; i < ; i ++)count[i] = ;
count[x] ++;
unsigned char tmp = x;
for(i = ; i < ; i ++){
tmp = GFmul(tmp, x);
count[tmp] ++;
}
for(i = ; i < ; i ++){
//查看是否所有的数都有生成,若是,则x为生成元
if(count[i] != )break;
}
if(i == )result[len ++] = x;
x ++;
}while(x != );
return len;
}
int main(){
//单元测试。输出所有的生成元。
int result[];
int len = findGenerator(result);
ofstream write("Test.txt");
for(int i = ; i < len; i ++)write<<result[i]<<endl;
write.close();
return ;
}

C++

GF(2^8)生成元的更多相关文章

  1. GF(2^8)乘法优化

    利用指数表和对数表,实现GF(2^8)的乘法优化. 首先利用简单的基础的GF(2^8)乘法,构造指数表和对数表.在这里选取生成元3. 指数表exp[i] = 3^i,对数表log[i] = log3( ...

  2. tyvj1013 找啊找啊找GF

    描述 "找啊找啊找GF,找到一个好GF,吃顿饭啊拉拉手,你是我的好GF.再见.""诶,别再见啊..."七夕...七夕...七夕这个日子,对于sqybi这种单身的 ...

  3. 生成元(Digit Generator ,ACM/ICPC Seoul 2005 ,UVa 1583)

    生成元:如果 x 加上 x 各个数字之和得到y,则说x是y的生成元. n(1<=n<=100000),求最小生成元,无解输出0. 例如:n=216 , 解是:198 198+1+9+8=2 ...

  4. TYVJ P1013 找啊找啊找GF Label:动态规划

    做题记录:2016-08-15 22:19:04 背景 MM七夕模拟赛 描述 "找啊找啊找GF,找到一个好GF,吃顿饭啊拉拉手,你是我的好GF.再见.""诶,别再见啊.. ...

  5. 找啊找啊找GF

    P1013 找啊找啊找GF 时间: 1000ms / 空间: 131072KiB / Java类名: Main 背景 MM七夕模拟赛 描述 "找啊找啊找GF,找到一个好GF,吃顿饭啊拉拉手, ...

  6. GF(2^8)乘法

    最近在学AES,实现了一下伽罗瓦域(2^8)乘法. 至于什么是伽罗瓦域解释起来比较复杂,我也不一定能解释清楚,自行google.这里只是给出一个简单直观的实现. #include<iostrea ...

  7. [TYVJ] P1423 GF和猫咪的玩具

    GF和猫咪的玩具 描述 Description GF同学和猫咪得到了一个特别的玩具,这个玩具由n个金属环(编号为1---n),和m条绳索组成,每条绳索连接两个不同的金属环,并且长度相同.GF左手拿起金 ...

  8. 需求收集实例 二 之 GF Phase 2

    GF Phase 2 做B2B的site, 需求收集过程与 需求收集过程实例之 - GF Phase 1主要的不同是在phase 1 开发在需求规格文档敲定后开始,而phase 2 把feature ...

  9. 需求收集过程实例之 - GF Phase 1

    正统的需求过程是怎样呢?各位看客有兴趣可以问问google 百度.本人的体会是理论很清晰,现实很混沌.这篇随笔讲述的是我参与的几个项目的需求收集过程.有的很顺利,有的却是乱中求生.但是不管怎样,最终这 ...

随机推荐

  1. CComPtr用法

    COM接口指针很危险,因为使用过程中需要每一个使用者都要严格并且正确的AddRef和Release,一旦出现问题,就会造成对象不能被正常释放,或者对象被重复删除,造成程序崩溃.所以使用COM接口,必须 ...

  2. html表格合并(行,一排)

    <table> <tr> <td colspan="2">失败的例子:</td> </tr> {% for ip , j ...

  3. PowerDesigner 生成带凝视SQL 各个版本号通用10(12、15)

    做数据库是设计时最苦恼的事就是用PowerDesigner工具设计完数据库运行SQL文件后没有凝视.那么怎么才干让PowerDesigner设计完有凝视呢,下边教你一个笨的方法,方法尽管笨,可是能实现 ...

  4. View原理

    View处理: 绘制(paint canvas path:tween等动画效果).事件处理   参考整理自: Custom Components: http://developer.android.c ...

  5. webform repeater

    repeater:由模板构成,解析后模板就不存在了             需要指定数据源进行数据绑定 List<Fruit> list = new FruitDA().Select(); ...

  6. hdu 1175

    #include <iostream> #include <string> #include <stdio.h> using namespace std; int ...

  7. Java HttpClient

    public class WebClient { public static final String POST_TYPE_JSON = "json"; public static ...

  8. JNI类型与C/C++映射关系

    Java 类型 本地类型 描述 boolean jboolean C/C++8位整型 byte jbyte C/C++带符号的8位整型 char jchar C/C++无符号的16位整型 short ...

  9. Python 中 open()文件操作的方式

    Python的open方法用来打开一个文件.第一个参数是文件的位置和文件名,第二个参数是读写模式: f=open('/1.txt','w') 读写模式的类型有: rU 或 Ua 以读方式打开, 同时提 ...

  10. iOS UI_APPEARANCE_SELECTOR

    iOS后属性带UI_APPEARANCE_SELECTOR 可以统一设置全局作用 例如: 1>开关控件 @property(nullable, nonatomic, strong) UIColo ...