资源简介

支持最大2048位RSA计算,主要是生成公私钥对、公钥加密、私钥解密功能。每次重新生成公私钥对,随机产生一定长度的随机数作为输入数据,公钥加密后再私钥解密。每一项结果都清晰打印。

资源截图

代码片段和文件信息

/*
 */
#include “stdafx.h“
#include “global_rsa.h“
#include “rsaref.h“
#include “nn.h“
#include “digit.h“

/* Computes a = b * c where b and c are digits.
   Lengths: a[2].
 */
void NN_DigitMult (NN_DIGIT a[2]NN_DIGIT bNN_DIGIT c)
{
  NN_DIGIT t u;
  NN_HALF_DIGIT bHigh bLow cHigh cLow;
  bHigh = (NN_HALF_DIGIT)HIGH_HALF (b);
  bLow = (NN_HALF_DIGIT)LOW_HALF (b);
  cHigh = (NN_HALF_DIGIT)HIGH_HALF (c);
  cLow = (NN_HALF_DIGIT)LOW_HALF (c);
  a[0] = (NN_DIGIT)bLow * (NN_DIGIT)cLow;
  t = (NN_DIGIT)bLow * (NN_DIGIT)cHigh;
  u = (NN_DIGIT)bHigh * (NN_DIGIT)cLow;
  a[1] = (NN_DIGIT)bHigh * (NN_DIGIT)cHigh;
  
  if ((t += u) < u)
    a[1] += TO_HIGH_HALF (1);
  u = TO_HIGH_HALF (t);
  
  if ((a[0] += u) < u)
    a[1]++;
  a[1] += HIGH_HALF (t);
}
/* Sets a = b / c where a and c are digits.
   Lengths: b[2].
   Assumes b[1] < c and HIGH_HALF (c) > 0. For efficiency c should be
   normalized.
 */
void NN_DigitDiv (NN_DIGIT *aNN_DIGIT b[2]NN_DIGIT c)
{
  NN_DIGIT t[2] u v;
  NN_HALF_DIGIT aHigh aLow cHigh cLow;
  cHigh = (NN_HALF_DIGIT)HIGH_HALF (c);
  cLow = (NN_HALF_DIGIT)LOW_HALF (c);
  t[0] = b[0];
  t[1] = b[1];
  /* Underestimate high half of quotient and subtract.
   */
  if (cHigh == MAX_NN_HALF_DIGIT)
    aHigh = (NN_HALF_DIGIT)HIGH_HALF (t[1]);
  else
    aHigh = (NN_HALF_DIGIT)(t[1] / (cHigh + 1));
  u = (NN_DIGIT)aHigh * (NN_DIGIT)cLow;
  v = (NN_DIGIT)aHigh * (NN_DIGIT)cHigh;
  if ((t[0] -= TO_HIGH_HALF (u)) > (MAX_NN_DIGIT - TO_HIGH_HALF (u)))
    t[1]--;
  t[1] -= HIGH_HALF (u);
  t[1] -= v;
  /* Correct estimate.
   */
  while ((t[1] > cHigh) ||
         ((t[1] == cHigh) && (t[0] >= TO_HIGH_HALF (cLow)))) {
    if ((t[0] -= TO_HIGH_HALF (cLow)) > MAX_NN_DIGIT - TO_HIGH_HALF (cLow))
      t[1]--;
    t[1] -= cHigh;
    aHigh++;
  }
  /* Underestimate low half of quotient and subtract.
   */
  if (cHigh == MAX_NN_HALF_DIGIT)
    aLow = (NN_HALF_DIGIT)LOW_HALF (t[1]);
  else
    aLow = 
      (NN_HALF_DIGIT)((TO_HIGH_HALF (t[1]) + HIGH_HALF (t[0])) / (cHigh + 1));
  u = (NN_DIGIT)aLow * (NN_DIGIT)cLow;
  v = (NN_DIGIT)aLow * (NN_DIGIT)cHigh;
  if ((t[0] -= u) > (MAX_NN_DIGIT - u))
    t[1]--;
  if ((t[0] -= TO_HIGH_HALF (v)) > (MAX_NN_DIGIT - TO_HIGH_HALF (v)))
    t[1]--;
  t[1] -= HIGH_HALF (v);
  /* Correct estimate.
   */
  while ((t[1] > 0) || ((t[1] == 0) && t[0] >= c)) {
    if ((t[0] -= c) > (MAX_NN_DIGIT - c))
      t[1]--;
    aLow++;
  }
  
  *a = TO_HIGH_HALF (aHigh) + aLow;
}

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       3923  2014-05-29 10:18  myrsa\Debug\digit.obj

     文件          0  2014-05-29 10:18  myrsa\Debug\digit.sbr

     文件       8399  2014-05-29 10:43  myrsa\Debug\main.obj

     文件          0  2014-05-29 10:43  myrsa\Debug\main.sbr

     文件      11425  2014-05-29 10:18  myrsa\Debug\md5c.obj

     文件          0  2014-05-29 10:18  myrsa\Debug\md5c.sbr

     文件     140288  2014-05-29 10:43  myrsa\Debug\myrsa.bsc

     文件     196674  2014-05-29 10:43  myrsa\Debug\myrsa.exe

     文件     225460  2014-05-29 10:43  myrsa\Debug\myrsa.ilk

    I.A....    217124  2014-05-29 10:41  myrsa\Debug\myrsa.pch

     文件     517120  2014-05-29 10:43  myrsa\Debug\myrsa.pdb

     文件      21076  2014-05-29 10:18  myrsa\Debug\nn.obj

     文件          0  2014-05-29 10:18  myrsa\Debug\nn.sbr

     文件       5768  2014-05-29 10:18  myrsa\Debug\prime.obj

     文件          0  2014-05-29 10:18  myrsa\Debug\prime.sbr

     文件      19210  2014-05-29 10:18  myrsa\Debug\rsa.obj

     文件          0  2014-05-29 10:18  myrsa\Debug\rsa.sbr

     文件       7288  2014-05-29 10:18  myrsa\Debug\r_keygen.obj

     文件          0  2014-05-29 10:18  myrsa\Debug\r_keygen.sbr

     文件       5409  2014-05-29 10:18  myrsa\Debug\r_random.obj

     文件          0  2014-05-29 10:18  myrsa\Debug\r_random.sbr

     文件       3301  2014-05-29 10:18  myrsa\Debug\r_stdlib.obj

     文件          0  2014-05-29 10:18  myrsa\Debug\r_stdlib.sbr

     文件      41984  2014-05-29 10:43  myrsa\Debug\vc60.idb

     文件      53248  2014-05-29 10:43  myrsa\Debug\vc60.pdb

     文件       2543  2014-05-29 09:07  myrsa\digit.c

     文件        365  2014-05-29 09:07  myrsa\digit.h

     文件       1154  2014-05-29 09:07  myrsa\global_rsa.h

     文件       3318  2014-05-29 10:43  myrsa\main.c

     文件       3465  2014-05-29 09:07  myrsa\main.cpp

............此处省略25个文件信息

评论

共有 条评论