最近在学AES,实现了一下伽罗瓦域(2^8)乘法。

至于什么是伽罗瓦域解释起来比较复杂,我也不一定能解释清楚,自行google。这里只是给出一个简单直观的实现。

#include<iostream>
#include<fstream>
using namespace std;
unsigned char GFmul(unsigned char a, unsigned char b){
//GF(2^8) 乘法
unsigned char result = ;
//若b为奇数,则先累积a
if((b&) == )result = a;
b >>= ;
for(int i = ; i < ; i ++){
//从b1开始遍历,若遇到bi为1,则累积a。a每次乘2自增
if(a > ){
a = (a << ) ^ 0x1b;
}
else{
a <<= ;
}
if((b&) == ){
result ^= a;
}
b >>= ;
}
return result;
}
int main(){
//测试用例,输出所有数的乘法结果,看是否均匀
int count[];
for(int i = ; i < ; i ++)count[i] = ;
unsigned char x, y;
x = ;
do{
y = ;
do{
count[GFmul(x, y)] ++;
y ++;
}while(y != );
x ++;
}while(x != );
ofstream write("Test.txt");
for(int i = ; i < ; i ++)write<<i<<"\t"<<count[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. GF(2^8)生成元

    目的是找出所有GF(2^8)的生成元. 方法很简单,从2开始遍历,将每个元素都与自身相乘255次,看是否能得到1~255.若能,则是生成元. #include<iostream> #inc ...

  3. AES对称加密算法原理

    原著:James McCaffrey 翻译:小刀人 原文出处:MSDN Magazine November 2003 (Encrypt It) 本文的代码下载:msdnmag200311AES.exe ...

  4. AES对称加密算法原理(转载)

    出处:http://www.2cto.com/Article/201112/113465.html 原著:James McCaffrey 翻译:小刀人 原文出处:MSDN Magazine Novem ...

  5. AES的S-BOX构造优化

    之前写过SBOX的构造,后来看到别人的优秀思路,借鉴过来重新改了一点. 原文地址:http://www.cnblogs.com/7hat/p/3383546.html 主要是将矩阵运算改为列运算之和, ...

  6. AES的S-BOX构造

    利用GF(2^8)乘法逆元,以及矩阵运算,可以构造出AES的SBOX. 求乘法逆元的一般方法是利用扩展欧几里得定理,在这里我取了个巧. 因为我已经有了GF的指数表(见上一篇文),利用指数表可以轻易地构 ...

  7. 密码学基础:AES加密算法

    [原创]密码学基础:AES加密算法-密码应用-看雪论坛-安全社区|安全招聘|bbs.pediy.com 目录 基础部分概述: 第一节:AES算法简介 第二节:AES算法相关数学知识 素域简介 扩展域简 ...

  8. AES涉及的有限域乘法及字节填充方法

     非常值得参考的是官方文档,它详细介绍了AES及其实验过程.博文AES加密算法的C++实现就是基于该文档的介绍及实现,是难得的一篇好文,故在本文最后会附上该文,以作备份. 还有很值得推荐的就是AES的 ...

  9. 你也可以手绘二维码(二)纠错码字算法:数论基础及伽罗瓦域GF(2^8)

    摘要:本文讲解二维码纠错码字生成使用到的数学数论基础知识,伽罗瓦域(Galois Field)GF(2^8),这是手绘二维码填格子理论基础,不想深究可以直接跳过.同时数论基础也是 Hash 算法,RS ...

随机推荐

  1. Com编程入门——什么是COM,如何使用COM

    本文的目的是为刚刚接触COM的程序员提供编程指南,并帮助他们理解COM的基本概念.内容包括COM规范简介,重要的COM术语以及如何重用现有的COM组件.本文不包括如何编写自己的COM对象和接口. CO ...

  2. Understanding AMQP, the protocol used by RabbitMQ--reference

    RabbitMQ is a lightweight, reliable, scalable and portable message broker. But unlike many message b ...

  3. NOI2015 程序自动分析

    /* 十分简单的题面 离散化一下 然后并茶几一下就OK了 跑的死慢 可能还有更优的方法吧 */ #include<iostream> #include<cstdio> #inc ...

  4. 排序算法之奇偶排序 JAVA奇偶排序算法

    奇偶排序法的思路是在数组中重复两趟扫描.第一趟扫描选择所有的数据项对,a[j]和a[j+1],j是奇数(j=1, 3, 5……).如果它们的关键字的值次序颠倒,就交换它们.第二趟扫描对所有的偶数数据项 ...

  5. java反射新的应用

    利用java反射动态修改运行中对象的私有final变量,不管有没有get方法获取这个私有final变量. spring aop 本质是cglib,动态代理 可以做很多事情 query.addCrite ...

  6. Topshelf

    Topshelf允许开发者创建一个简单的控制台程序,将其安装为一个window服务. 这样做的原因很简单:方便调试. 使用命令行工具可以很方面的安装Topshelf创建的服务. server.exe ...

  7. IPTV中的EPG前端优化

    先看一下IPTV相关情况: l 目前TPTV市场情况 a) 截止今年2月,全国IPTV总用户数达3630.2万,我国移动互联网用户规模接近9亿,人均月接入量近300M,8M宽带达半数,光纤近4成. 图 ...

  8. Android studio 开发环境搭建

    Android studio 开发环境搭建 一.环境: 下载java jdk:http://www.oracle.com/technetwork/cn/java/javase/downloads/jd ...

  9. django安装

    见 http://jingyan.baidu.com/article/466506580e7d29f549e5f8b6.html 下载安装python下载解压django cmd进入django目录, ...

  10. 武汉科技大学ACM :1008: 小t和小w

    Problem Description 小t最近学了C语言,他想要在女朋友小w面前展示一下自己的能力,小w喜欢如样例所示的图形, 想让小t写一个程序来输出这样的图形,小t拿到后感觉有点困难,小t不想在 ...