我来回答你可以闭帖了,呵呵
看你题目的意思就是打算把republic这个词按照你的方法装换成数字例如是:X
p=3,q=11
n=p*q=33
t=(p-1)*(q-1)=20
取任何一个数e,要求满足e<t并且e与t互素(就是最大公因数为1)
我们可以取e=7
要求d*e%t==1(D*e除以t取余等于1),我们可以找到D=3
此时我们就有了三个数
n=33
d=3 公钥
e=7 私钥
设消息为数M (M <n)
设c=(M**d)%n就得到了加密后的消息c
设m=(c**e)%n则 m == M,从而完成对c的解密。
注:**表示次方,上面两式中的d和e可以互换。
我们可以对republic词按照你的方法装换成数字:X一位一位的加密。
加入X的第一位是6(别的同理)
则:M = 6
加密时:(c为加密后的数字)
c=(M**d)%n=(6^3)%33=216%33=18(商6余18),则6加密后就是18了
解密时:
设m=(c**e)%n则 m == M,
(18^7)%33=612220032%33=6(商18552122余6)
到此加密解密完成。
至于怎么把republic装换成X,把X装分成多少部分进行分批加密,你可以自己决定。但是加密的数字M 需要小于n
如果需要给你写个程序,留个Email,我空的时候写个发给你。
我个人给你个方法,因为n=33 >26(26个英文字母),所以可以把republic分成一个字母一个字母的加密。
按你的分发 REP 就分成数字
18 05 16
加密
(18^3)%33=5832%33= 24
(05^3)%33=125%33= 26
(16^3)%33=%33= 4
所以加密后就是
24 26 04 转换成字母就是 XZD
解密
(24^7)%33=4586471424%33=18
(26^7)%33=8031810176%33=05
(4^7)%33=16384%33=16
又变成 18 05 16 转换成字母就是 REP
是不是很简单啊~~
我如果不懂。空间里面有片文章,你可以看看,就知道我上面讲的那些是什么意思了。
RSA算法举例说明
http://hi..com/lsgo/blog/item/5fd0da24d495666834a80fb8.html
Ⅱ 向量a减向量b的模怎么算
计算过程如下:
向量a-向量b的模
=|向量a-向量b|
=根号下(向量a-向量b)²
=根号下(|a|²+|b|²-2|a||b|cosα)
其中:cosα是向量a和向量b的夹角。
而“|a|、|b|”代表的就是向量a、b的模,即为向量的大小
注:
1、向量是一个有方向的线段,向量的模就相当于这条线段的长度;
2、向量的模是非负实数,即向量的模是一个数,是一个可以比较大小的数;
3、向量本身是一个包含方向的数,所以向量本身不能比较大小。
(2)模重复平方计算法扩展阅读:
向量:
在数学中,向量(也称为欧几里得向量、几何向量、矢量),指具有大小(magnitude)和方向的量。
向量可以形象化地表示为带箭头的线段。箭头所指:代表向量的方向;线段长度:代表向量的大小。与向量对应的量叫做数量(物理学中称标量),数量(或标量)只有大小,没有方向。
向量的性质:
向量的模的运算没有专门的法则,一般都是通过余弦定理计算两个向量的和、差的模。
多个向量的合成用正交分解法,如果要求模一般需要先算出合成后的向量。
模是绝对值在二维和三维空间的推广,可以认为就是向量的长度。推广到高维空间中称为范数。
参考资料来源:
网络-向量
网络-向量的模
Ⅲ 欧几里得算法(辗转相除法)
就是把上一轮有余数的除法计算中, 除数变为下一轮计算的被除数, 余数变为下一轮计算的除数, 一直这样计算下去, 直到最后一次计算余数为零, 在最后一轮计算中的被除数,即为所求的最大公约数。
举例: 105和85的最大公约数
第一轮计算 105÷85=1...20
第二轮计算 85÷20=4...5
第三轮计算 20÷5=4
第三轮没有余数, 因此 105和85的最大公约数就是第三轮计算的被除数 5.
至于C语言编程,下边是我自己写的G函数(思想就是辗转相除法求最大公约数)
int G(int x,int y)
{ int t;
while(y!=0)
{ t=x%y ;
x=y;
y=t;
}
return x;
}
Ⅳ 如果要计算32655的41030822553次方模139506961303的值怎么用C语言实现呢
使用字符串保存数字,自定义一个struct,一个字符串char*表示数字,一个char或int表示正负,一个int存储长度
只是计算就需要做比较多的事情了,控制进位啥的,算法自己琢磨下,或者查一下大数计算。加减乘除取余都可以写一个工具,c++还可以重载运算符,c不知道可不可以。
Ⅳ 请问广义欧几里德除法拿来干嘛的还有模重复平方法又有什么用欧拉定理呢都会求了,但是不知道什么时
首先证明下面这个命题:对于集合Zn={x1,x2,...,xφ(n)},其中xi(i=1,2,…φ(n))是不大于n且与n互素的数,即n的一个化简剩余系(或称简系、缩系),考虑集合S = {a*x1(mod n),a*x2(mod n),...,a*xφ(n)(mod n)} 。则S = Zn1) 由于a,n互质,xi也与n互质,则a*xi也一定与n互质,因此任意xi,a*xi(mod n) 必然是Zn的一个元素 。2) 对于Zn中两个元素xi和xj,如果xi ≠ xj则a*xi(mod n) ≠ a*xj(mod n),这个由a、n互质和消去律可以得出。所以,很明显,S=Zn既然这样,那么(a*x1 × a*x2×...×a*xφ(n))(mod n)= (a*x1(mod n) × a*x2(mod n) × ... × a*xφ(n)(mod n))(mod n)= (x1 × x2 × ... × xφ(n))(mod n)考虑上面等式左边和右边左边等于([a^φ(n)] *(x1 × x2 × ... × xφ(n))) (mod n)右边等于x1 × x2 × ... × xφ(n))(mod n)而x1 × x2 × ... × xφ(n)(mod n)和n互质根据消去律,可以从等式两边约去,就得到:a^φ(n) ≡ 1 (mod n)推论:对于互质的数a、n,满足a^(φ(n)+1) ≡ a (mod n)费马定理:a是不能被质数p整除的正整数,则有a^(p-1) ≡ 1 (mod p)证明这个定理非常简单,由于φ(p) = p-1,代入欧拉定理即可证明。推论:对于任意正整数a,有a^p ≡ a (mod p),因为a能被p整除时结论显然成立。
Ⅵ C/C++中关于模重复平方计算法
不懂,是不是快速幂乘法呀?
#include <iostream>
using namespace std;
int mypower(int a, int b)
{
if ( b == 0 )
return 1;
while ( b % 2 == 0 )
{
b = b >> 1;
a *= a;
}
int sum = 1;
while ( b >= 1 )
{
if ( b % 2 == 1 )
{
b -= 1;
sum *= a;
}
else
{
a *= a;
b = b >> 1;
}
}
return sum;
}
int main()
{
for ( int i = 0; i < 12; ++i )
cout << mypower(2,i) << endl;
return 0;
}
Ⅶ 模运算算术有公式吗
是一种节省内存的降维时域有限差分法及其在散射计算中的应用 英文全名是A Memory-efficient Reced Finite-difference Time-domain Method and Its Use
in Scattering Calculation它是介绍一种节省内存的降维时域有限差分方法(R-FDTD),该方法理论上可节省约33%的场分量存贮量.本文首次把R-FDTD用于散射计算,提出了一种更为简单直观的新的导体处理方法,并阐明R-FDTD中连接边界、吸收边界和近-远场变换的实现方法.以TE波入射时二维柱体散射为例的计算结果表明,R-FDTD在节省约33%内存的基础上,计算精度与标准FDTD相当.
Ⅷ 模重复平方法怎么计算的那个b1≡b^2(modm)怎么算的
MOD用法及意义是:a≡b(modc)的意思是a和b除以c后余数相同读作a与b同余,mod为c例如:amodb=c说明:a除以b余数为c。再比如说2的100次方的个位是什么,可写成2^100≡6。(mod10)特别是进制,用“mod”来代表几进制。modn读作“模n”
Ⅸ 木工模板平方计算法
木工模板的平方计算全部是按展开面积计算,如柱子模板,面积就是四个面之和。
Ⅹ 模重复平方算法的程序
#include <iostream>
using namespace std;
int mypower(int a, int b)
{
if ( b == 0 )
return 1;
while ( b % 2 == 0 )
{
b = b >> 1;
a *= a;
}
int sum = 1;
while ( b >= 1 )
{
if ( b % 2 == 1 )
{
b -= 1;
sum *= a;
}
else
{
a *= a;
b = b >> 1;
}
}
return sum;
}
int main()
{
for ( int i = 0; i < 12; ++i )
cout << mypower(2,i) << endl;
return 0;
}