RSA求私钥d.我知道RSA中由公钥e求私钥d是要满足e*d(mod n)=1.此处n大家都知道是(p-1)(q-1).用辗转相除法可以求得.但是问题在于如果n是一个大数,有512bit.这么大的数我怎么用辗转相除法啊?如果e选
来源:学生作业帮助网 编辑:作业帮 时间:2024/11/24 23:57:20
RSA求私钥d.我知道RSA中由公钥e求私钥d是要满足e*d(mod n)=1.此处n大家都知道是(p-1)(q-1).用辗转相除法可以求得.但是问题在于如果n是一个大数,有512bit.这么大的数我怎么用辗转相除法啊?如果e选
RSA求私钥d.
我知道RSA中由公钥e求私钥d是要满足e*d(mod n)=1.此处n大家都知道是(p-1)(q-1).用辗转相除法可以求得.但是问题在于如果n是一个大数,有512bit.这么大的数我怎么用辗转相除法啊?如果e选择3,那d肯定也很大,怎么求?.求高手解答······
RSA求私钥d.我知道RSA中由公钥e求私钥d是要满足e*d(mod n)=1.此处n大家都知道是(p-1)(q-1).用辗转相除法可以求得.但是问题在于如果n是一个大数,有512bit.这么大的数我怎么用辗转相除法啊?如果e选
你用的语言是哪个?
我当时是用C语言写的代码,实现最大RSA-2048.
我把思想给你说一下吧.
如果我们要定义一个很小的e、d、n、m,那么直接unsigned long int 就可以了.但是这样定义的数据的大小是有限的,即0----2^32-1,所以我们必须改变一下.
你可以定义一个 unsigned char e_array[513]; //定义513个是为了防止进位丢失
然后e_array的每一个单元只存你的e的一个bit.
举个实际的例子如下:
假如你的数据是3bit的5;
unsigned char data_array[4];
那么
data_array[0] = 0;
data_array[1] = 1;
data_array[2] = 0;
data_array[3] = 1;
就是这样.
采用这种方法你必须自己按照二进制的加减乘除的运算规则写出想要相应的代码.