我的第一个项目有点过于雄心勃勃,如果可以的话需要一些帮助?我需要转换returnChar函数才能返回一串值;目前它适用于个人角色。它是RSA加密的解密过程,在一次加密和解密一个字母时效果很好,这是非常令人沮丧的,因为我无法做到,我已经管理了加密部分!感谢您提前提供任何帮助,对于这个微不足道的问题感到抱歉。
只有returnChar函数才有问题,但是如果有人好奇,我会包含所有代码
(P.S和q很小,只是为了让测试变得容易,我知道这个尺寸不安全)
编辑:这是我的第一篇文章,所以我不确定我是否违反了某种规则?这篇文章已经被否决,任何人都可以让我知道为什么我将来不再这样做了?#include <iostream>
#include <math.h>
using namespace std;
unsigned long long int modinv(unsigned long long int u, unsigned long long int v)
{
unsigned long long int inv, u1, u3, v1, v3, t1, t3, q;
unsigned long long int iter;
u1 = 1;
u3 = u;
v1 = 0;
v3 = v;
iter = 1;
while (v3 != 0)
{
q = u3 / v3;
t3 = u3 % v3;
t1 = u1 + q * v1;
u1 = v1;
v1 = t1;
u3 = v3;
v3 = t3;
iter = -iter;
}
if (u3 != 1)
return 0;
if (iter < 0)
inv = v - u1;
else
inv = u1;
return inv;
}
int modExp(int b, int e, int m)
{
int remainder;
int x = 1;
while (e != 0)
{
remainder = e % 2;
e = e / 2;
if (remainder == 1)
x = (x * b) % m;
b = (b * b) % m; // New base equal b^2 % m
}
return x;
}
char returnChar(unsigned long long int x)
{
return (char) x + 87;
}
int main()
{
long unsigned int p = 17;
unsigned long long int q = 23;
unsigned long long int phi = (p - 1) * (q - 1);
unsigned long long int e = 7;
unsigned long long int c = 327;
unsigned long long int n = p * q;
unsigned long long int d = modinv(e, phi);
{
cout << returnChar(modExp(c, d, n));
}
return 0;
}