急需有限域的乘法运算C语言程序

tuzi123wtl 2009-04-25 09:56:14
GF(2的16次方)上的乘法运算,需C语言程序。请各位老师帮忙解答。
...全文
310 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
lyl314089278 2009-04-25
  • 打赏
  • 举报
回复
不会 ! 顶一个!
liliangbao 2009-04-25
  • 打赏
  • 举报
回复
帮顶~
  • 打赏
  • 举报
回复
比较好的大数库还是crypt++跟openssl.
子瓜个个 2009-04-25
  • 打赏
  • 举报
回复
用大数库NTL吧,里面有各种密码学中常用的运算,包括有限域上的。网上可以下载到,有源码!
tuzi123wtl 2009-04-25
  • 打赏
  • 举报
回复
我已经找到了。谢谢各位!

这是GF(8)上的4位的乘法运算
#define xtime(x) ((x<<1) ^ (((x>>7) & 1) * 0x1b))
#define Multiply(x,y) (((y & 1) * x) ^ ((y>>1 & 1) * xtime(x)) ^ ((y>>2 & 1) * xtime(xtime(x))) ^ ((y>>3 & 1) * xtime(xtime(xtime(x)))) ^ ((y>>4 & 1) * xtime(xtime(xtime(xtime(x))))))



int multiply(int n,int e)//GF(2的16次方)上的乘法运算
{
while(n> 0x01)
{
if((e & 0x8000)==0)
{
e=(e*2) % 65536;
}
else if((e & 0x8000)!=0)
{
e=((e*2) % 65536)^0x50D7;
}
n=n>>1;
}
return e;
}
WOSHIBBY 2009-04-25
  • 打赏
  • 举报
回复
int multiply(int n,int e){
while(n> 0x01){
if((e & 0x80)==0)
{
e=(e*2) % 256;
}
else if((e & 0x80)!=0)
{
e=((e*2) % 256)^0x1b;
}
n=n>>1;
}
return e;
}
这是在GF(2的8次方)上的,可以试一试

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧