转换char函数来处理字符串C ++

时间:2014-02-27 23:12:41

标签: c++ string rsa

我的第一个项目有点过于雄心勃勃,如果可以的话需要一些帮助?我需要转换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;
}

0 个答案:

没有答案