C-RSA密码系统解密问题(无符号长不够大?)
我正在做一项任务,我必须建立一个RSA密码系统。我能够加密密码密钥没有问题,但是由于指数太大,我解密它时遇到了困难。我尝试使用无符号long-long-int,但仍然得到0的输出C-RSA密码系统解密问题(无符号长不够大?),c,encryption,rsa,unsigned-long-long-int,C,Encryption,Rsa,Unsigned Long Long Int,我正在做一项任务,我必须建立一个RSA密码系统。我能够加密密码密钥没有问题,但是由于指数太大,我解密它时遇到了困难。我尝试使用无符号long-long-int,但仍然得到0的输出 #include <stdio.h> #include <stdlib.h> #include <math.h> //Unsigned long long int power function unsigned long long getPower(unsigned long lo
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
//Unsigned long long int power function
unsigned long long getPower(unsigned long long int base, int exponent){
unsigned long long result = 1;
int count = 0;
while(count != exponent){
result *= base;
count++;
}
return result;
}
int decryptFile(int cipherInt, int n, int d){
int plainInt;
unsigned long long int cipherIntLong = cipherInt;
unsigned long long int power = getPower(cipherIntLong, d);
printf("%llu\n", power);
return (int) plainInt;
}
int main(){
decryptFile(1394, 3127, 2011);
}
#包括
#包括
#包括
//无符号长整型幂函数
无符号long-long-getPower(无符号long-long整数基,整数指数){
无符号长结果=1;
整数计数=0;
while(计数!=指数){
结果*=基数;
计数++;
}
返回结果;
}
整数解密文件(整数加密,整数n,整数d){
整型素整型;
无符号long-long int-ciphertlong=cipherit;
无符号长整型幂=getPower(CiphertLong,d);
printf(“%llu\n”,电源);
返回(整数)整数;
}
int main(){
解密文件(13943127,2011);
}
我应该补充一点,教授没有提到使用大数字库,所以我相信我们很可能不应该在这个作业中使用大数字库。无符号64位整数的最大值是
18446744073709551615
然而,1394^2011
更接近于1.296x10^6323
。这比无符号64位整数的最大值大7.02 x 10^6303倍
TL;博士:使用一个大整数库,一个非常大的库。
说真的,RSA能够计算如此大的幂的主要原因是因为RSA在模下工作,所以如果我们使用,我们需要的计算能力要少得多才能得到结果。通过将明文提升到指数,然后在最后应用模来计算结果在计算上是不可行的。我明白了,模幂似乎是我正在寻找的解决方案。非常感谢!