⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 rsa.cpp

📁 RSA C++源代码DEMO,附加DESMD5等众多算法
💻 CPP
字号:
/*************************************************************************
**                                                                      **
**  rsa.cxx                                                             **
**                                                                      **
**  RIVEST CIPHER FOUR (RC4) RANDOM NUMBER GENERATOR AND STREAM CIPHER  **
**                                                                      **
**  Copyright (c)1996 Markku-Juhani O. Saarinen <mjos@math.jyu.fi>      **
**                                                                      **
*************************************************************************/
// Header File#include "rsa.h"
#include "rc4.h"//   b //  a mod n = ?kbn& modexp (kbn a, kbn b, kbn n){    static kbn r;    int i, explen;        r = 1;      explen = b.log2();        for(i=0; i<=explen; i++)    {         if ( b.testbit(i) )            r = (r*a) % n;        a = a.sqr() % n;    }    return r;}//  Greatest Common Divisorkbn& gcd(kbn a, kbn b){    static kbn g0, g1, g2, zero;     g0 = a;    g1 = b;    zero = 0;        while ( g1 != zero )    {         g2 = g0 % g1;        g0 = g1;        g1 = g2;     }        return g0;}//  ab mod n = 1 ===> b=?kbn& inverse (kbn a, kbn n){    static kbn u1, u3, v1, v3, t1, t3, q, w, zero;    int sign;    zero = 0;    u1 = 1;    u3 = a;    v1 = 0;    v3 = n;        sign = 0;    while( v3 != zero )    {               q = u3 / v3;        t3 = u3 % v3;        w = q * v1;        t1 = u1 + w;        u1 = v1;        v1 = t1;        u3 = v3;        v3 = t3;                sign = !sign;    }            if (sign)        u1 = n - u1;            return u1;}//  random(0 ~ max-1)kbn& rc4rand(kbn *max){    static TRC4 r;    unsigned char p[1024];    static kbn x;    int len;    len = (max->log2() >> 3) + 1;    r.rand(p, len);    x.load(p, len);    vbzero(p, len);          // vektori nollataan, jotta muistiin ei j鋓si    x %= *max;    return x;}//  test whether n is primeint prob_primetest (kbn *n){    static kbn q, y, one;    int j, k;             one = 1;    j = 0;       //     k    //  2 q + 1 = n, q mod 2 = 1 ===> q = ?    for(k=1; !(n->testbit(k)); k++);    q = *n >> k;        y = rc4rand( n );                   // y satunnaisluku v鋖ill

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -