php從網(wǎng)頁中導出數(shù)據(jù),php數(shù)據(jù)庫導出

AES算法中的S盒,求GF(2^8)上的乘法逆元怎么求???

一般根據(jù)定義 A^-1==A^254,所以求A的254次方就可以了,254次又等于

目前創(chuàng)新互聯(lián)已為上千余家的企業(yè)提供了網(wǎng)站建設、域名、網(wǎng)頁空間、網(wǎng)站托管、企業(yè)網(wǎng)站設計、湛河網(wǎng)站維護等服務,公司將堅持客戶導向、應用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長,共同發(fā)展。

128+64+32+16+8+4+2=2*( 2*(2*(2*(2*(2*(2+1)+1)+1)+1)+1)+1),所以只需要做7次平方和7次乘A。

當然在AES運算中,需要求出全部256個數(shù)的倒數(shù),都用這種算法還是比較費的,可以用以下的方法

首先求3的全部255次冪,并做成兩個查找表,即正向通過冪次查結果,和反向通過結果查冪次,這個過程可以,因為乘3是最簡單的一個乘法操作 ,并且3的255次冪可以遍歷整個GF(2,8)空間。

因為3^255=1,所以 當m+n=255時,3^m 和3^n互為倒數(shù),即3^m的逆元就是3^n, n=255-m,那么求一個數(shù)A的逆元,可以先通過上面生成的反查表查出A對于3的冪次m,再用255-m=n,在正向表中查出3的n次冪,那個數(shù)就是A的逆元,這樣求一個逆元就只是兩次查表操作了。

用c語言編寫擴展歐幾里德算法用來求乘法逆元ab=1 mod(n) 要求我輸入b,n,求出a。請編譯運行通過,謝謝啦

#include stdio.h

int ExtendedEuclid( int f,int d ,int *result);

int main()

{

int n,b,z;

z = 0;

printf("輸入兩個數(shù):\n");

scanf("%d%d",b,n);

if(ExtendedEuclid(n,b,z))

printf("%d和%d互素,乘法的逆元是:%d\n",b,n,z);

else

printf("%d和%d不互素,最大公約數(shù)為:%d\n",b,n,z);

return 0;

}

int ExtendedEuclid( int f,int d ,int *result)

{

int x1,x2,x3,y1,y2,y3,t1,t2,t3,q;

x1 = y2 = 1;

x2 = y1 = 0;

x3 = ( f=d )?f:d;

y3 = ( f=d )?d:f;

while( 1 )

{

if ( y3 == 0 )

{

*result = x3; /* 兩個數(shù)不互素則result為兩個數(shù)的最大公約數(shù),此時返回值為零 */

return 0;

}

if ( y3 == 1 )

{

*result = y2; /* 兩個數(shù)互素則resutl為其乘法逆元,此時返回值為1 */

return 1;

}

q = x3/y3;

t1 = x1 - q*y1;

t2 = x2 - q*y2;

t3 = x3 - q*y3;

x1 = y1;

x2 = y2;

x3 = y3;

y1 = t1;

y2 = t2;

y3 = t3;

}

}

/*輸入兩個數(shù):

5 14

5和14互素,乘法的逆元是:3

*/

用C語言編制的求模逆元的擴展歐幾里德算法,只要能基本上實現(xiàn)這個功能就行

擴展歐幾里德算法是用來在已知a, b求解一組x,y,使它們滿足貝祖等式: ax+by = gcd(a, b) =d(解一定存在,根據(jù)數(shù)論中的相關定理)。擴展歐幾里德常用在求解模線性方程及方程組中。

下面是一個使用C語言的實現(xiàn):

intexGcd(int?a,int?b,int?x,int?y)

{

if(b==0)????//當b==0時,得到解

{

x=1;y=0;

return?a;

}

intr=exGcd(b,a%b,x,y);//遞歸調(diào)用自身,求解

intt=x;x=y;y=t-a/b*y;

return?r;

}

c語言,求一個數(shù)的逆的模n運算等于多少!

程序如下:

#include conio.h

#include stdio.h

int ExtEnclid(int d,int f)

{

int x1,x2,x3,y1,y2,y3,t1,t2,t3,k;

if(df) d=d+f-(d=f); //交換d和f使得df

x1=1,x2=0,x3=f;

y1=0,y2=1,y3=d;

while(1)

{

if(y3==0)

{

return 0; //沒有逆元,gcd(d,f)=x3

}

if(y3==1)

{

return y2; //逆元為y2,gcd(d,f)=1

}

k=x3/y3;

t1=x1-k*y1, t2=x2-k*y2, t3=x3-k*y3;

x1=y1,x2=y2,x3=y3;

y1=t1,y2=t2,y3=t3;

}

}

int main()

{

int a, n, res;

printf("求 a^(-1) mod n 的值:\n");

printf("a = ");

scanf("%d", a);

printf("n = ");

scanf("%d", n);

res = ExtEnclid(a,n);

if (res == 0)

{

printf("Not Exist!\n");

getch();

return (0);

}

else if(res0)

{

res = res + n;

}

printf("a^(-1) mod n = %d\n", res);

getch();

return (0);

}

計算1/x mod n =x^(-1) mod n

就是求y,滿足:

yx = 1 mod n

y是有限域F(n)上x的乘法逆元素

可用擴展的歐幾里得算法求乘法逆元

擴展的歐幾里德算法簡單描述如下:

ExtendedEuclid(d,f)

1 (X1,X2,X3):=(1,0,f)

2 (Y1,Y2,Y3):=(0,1,d)

3 if (Y3=0) then return d'=null//無逆元

4 if (Y3=1) then return d'=Y2 //Y2為逆元

5 Q:=X3 div Y3

6 (T1,T2,T3):=(X1-Q*Y1,X2-Q*Y2,X3-Q*Y3)

7 (X1,X2,X3):=(Y1,Y2,Y3)

8 (Y1,Y2,Y3):=(T1,T2,T3)

9 goto 3

gf(2)中的乘法逆元怎么求解

用歐幾里得擴展算法

在這里說很難給你講明白,因為偽代碼我記得不是很清晰了,你自己查下書吧,既然有講AES算法,那書上不可能不提到歐幾里得擴展算法的

不行百度一下也可以,我看了一下百度百科的:

歐幾里德算法的擴展

擴展歐幾里德算法不但能計算(a,b)的最大公約數(shù),而且能計算a模b及b模a的乘法逆元,用C語言描述如下

但是是代碼實現(xiàn)的,沒有偽代碼,還是自己找一下吧

這樣可以么?

c語言乘法計算

嚴格來講,你的代碼是錯誤的,用int的b接收double型的a的計算結果,是不可以的,即使結果是整數(shù)。

結果當然也會出現(xiàn)誤差。正確的應該是:

double a=10.3845;

double b;

b=10000*a;

printf("%lf",b);

補充:把上面 printf("%lf",b);改為printf("%.0lf",b); 就能使后面無小數(shù)。

當前文章:php從網(wǎng)頁中導出數(shù)據(jù),php數(shù)據(jù)庫導出
當前地址:http://muchs.cn/article14/hcgode.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站設計公司、網(wǎng)站制作外貿(mào)建站、搜索引擎優(yōu)化商城網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

h5響應式網(wǎng)站建設