亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? rsa_san.cpp

?? 應用軟件加密軟件
?? CPP
字號:
#include "stdafx.h"
// This is a slow but easy RSA encryption class
// By sanicle,2005.12 
// 3mn@3mn.net

#include "stdio.h"
#include "rsa_san.h"

class Prime_factory_san
{
  unsigned np;
  unsigned *pl;
  public:
  Prime_factory_san();
  ~Prime_factory_san();
  vlong find_prime( vlong & start );
};

// prime factory implementation

static int is_probable_prime_san( const vlong &p )
{
  // Test based on Fermats theorem a**(p-1) = 1 mod p for prime p
  // For 1000 bit numbers this can take quite a while
  const rep = 4;
  const unsigned any[rep] = { 2,3,5,7 };
  for ( unsigned i=0; i<rep; i+=1 )
    if ( modexp( any[i], p-vlong(1), p ) != vlong(1) )
      return 0;
  return 1;
}

Prime_factory_san::Prime_factory_san()
{
  np = 0;
  unsigned NP = 200;
  pl = new unsigned[NP];

  // Initialise pl
  unsigned SS = 8*NP; // Rough estimate to fill pl
  char * b = new char[SS+1]; // one extra to stop search
  for (unsigned i=0;i<=SS;i+=1) b[i] = 1;
  unsigned p = 2;
  while (1)
  {
    // skip composites
    while ( b[p] == 0 ) p += 1;
    if ( p == SS ) break;
    pl[np] = p;
    np += 1;
    if ( np == NP ) break;
    // cross off multiples
    unsigned c = p*2;
    while ( c < SS )
    {
      b[c] = 0;
      c += p;
    }
    p += 1;
  }
  delete [] b;
}

Prime_factory_san::~Prime_factory_san()
{
  delete [] pl;
}

vlong Prime_factory_san::find_prime( vlong & start )
{
  unsigned SS = 1000; // should be enough unless we are unlucky
  char * b = new char[SS]; // bitset of candidate primes
  unsigned tested = 0;
  while (1)
  {
    unsigned i;
    for (i=0;i<SS;i++)
      b[i] = 1;
    for (i=0;i<np;i++)
    {
      unsigned p = pl[i];
      unsigned r = start % vlong(p); // not as fast as it should be - could do with special routine
      if (r) r = p - r;
      // cross off multiples of p
      while ( r < SS )
      {
        b[r] = 0;
        r += p;
      }
    }
    // now test candidates
    for (i=0;i<SS;i++)
    {
      if ( b[i] )
      {
        tested += 1;
        if ( is_probable_prime_san(start) )
          return start;
      }
      start += 1;
    }
  }
  delete [] b;
}



RSA_san::RSA_san()
{
	// init vars
	prime_table_use=0;
	prime_p_index=0;
	prime_q_index=1;
	
	char *tmp;
	tmp="1234567890qwertyuiopasdfghjklzxcvb";
	for(int i=0;i<36;i++)
	r1[i]=tmp[i];
	tmp="9876543210poiuytrewqlkjhgfdsamnbvc";
	for(int i=0;i<36;i++)
	r2[i]=tmp[i];

	// find primes p q
	find_prime();
	// mul to get n
	n = p*q;
	// get a public key
	random_e();
	// calculate the private key
	calculate_d();
}

RSA_san::~RSA_san()
{
	
}

static vlong from_str_san( const char * s )
{
  vlong x = 0;
  while (*s)
  {
    x = x * vlong(256) + vlong((unsigned char)*s);
    s += 1;
  }
  return x;
}

void RSA_san::find_prime()
{
	// Choose primes
    Prime_factory_san pf;
	if (prime_table_use==0)
	{
		p = pf.find_prime( from_str_san(r1) );
		q = pf.find_prime( from_str_san(r2) );
	}
	else
	{
		p = prime_table[prime_p_index];
		q = prime_table[prime_q_index];
	}
    if ( p > q ) { vlong tmp = p; p = q; q = tmp; }
}

void RSA_san::random_e()
{
	e = 50001; // must be odd since p-1 and q-1 are even
    while ( gcd(p-vlong(1),e) != vlong(1) || gcd(q-vlong(1),e) != vlong(1) ) e += 2;
}

void RSA_san::calculate_d()
{
	d = modinv(e,(p-vlong(1))*(q-vlong(1)));
}
vlong RSA_san::encrypt( const vlong& x )
{
	return modexp(x,e,n);
}

vlong RSA_san::decrypt( const vlong& y )
{
	return modexp(y,d,n);
}

int RSA_san::RSA_san_en(char * s,unsigned n)
{
	vlong t = 0;
	result = 0;
	for(unsigned i=0;i<n;i++)
	{
		t = t * vlong(256) + vlong((unsigned char)*s);
		s += 1;
	}
	result=encrypt(t);
	return 1;
}

int RSA_san::RSA_san_en_byte(char b)
{
    result=0;
	result=encrypt(vlong((unsigned char)b));
	return 1;
}

int RSA_san::RSA_san_dn(char * s,unsigned n)
{
	vlong t = 0;
	result = 0;
	for(unsigned i=0;i<n;i++)
	{
		t = t * vlong(256) + vlong((unsigned char)*s);
		s += 1;
	}
	result=decrypt(t);
	return 1;
}

int RSA_san::RSA_san_dn_hexstring(char * s)
{
	unsigned i=0;
	vlong t = 0;
	result = 0;

	while(*s)
	{
		switch(*s)
		{
			case '0':i=0;break;
			case '1':i=1;break;
			case '2':i=2;break;
			case '3':i=3;break;
			case '4':i=4;break;
			case '5':i=5;break;
			case '6':i=6;break;
			case '7':i=7;break;
			case '8':i=8;break;
			case '9':i=9;break;
			case 'A':i=10;break;
			case 'B':i=11;break;
			case 'C':i=12;break;
			case 'D':i=13;break;
			case 'E':i=14;break;
			case 'F':i=15;break;
		}
		t = t * vlong(16) + vlong(i);
		s += 1;
	}
	result=decrypt(t);
	return 1;
}

int RSA_san::RSA_san_en_hexstring(char * s)
{
	unsigned i=0;
	vlong t = 0;
	result = 0;

	while(*s)
	{
		switch(*s)
		{
			case '0':i=0;break;
			case '1':i=1;break;
			case '2':i=2;break;
			case '3':i=3;break;
			case '4':i=4;break;
			case '5':i=5;break;
			case '6':i=6;break;
			case '7':i=7;break;
			case '8':i=8;break;
			case '9':i=9;break;
			case 'A':i=10;break;
			case 'B':i=11;break;
			case 'C':i=12;break;
			case 'D':i=13;break;
			case 'E':i=14;break;
			case 'F':i=15;break;
		}
		t = t * vlong(16) + vlong(i);
		s += 1;
	}
	result=encrypt(t);
	return 1;
}

int RSA_san::set_e(char * r)
{
	e = 0;
	while (*r)
	{
		e = e * vlong(256) + vlong((unsigned char)*r);
		r += 1;
	}
	if(e%vlong(2)==vlong(0))e-=1;
	while ( gcd(p-vlong(1),e) != vlong(1) || gcd(q-vlong(1),e) != vlong(1) ) e += 2;
	calculate_d();
	return 1;
}

int RSA_san::force_e(char * r,unsigned len)
{
	e = 0;
	p=0;q=0;
	for(unsigned i=0;i<len;i++)
	{
		e = e * vlong(256) + vlong((unsigned char)*(r+i));
	}
	return 1;
}

int RSA_san::force_d(char * r,unsigned len)
{
	d = 0;
	p=0;q=0;
	for(unsigned i=0;i<len;i++)
	{
		d = d * vlong(256) + vlong((unsigned char)*(r+i));
	}
	return 1;
}

int RSA_san::force_n(char * r,unsigned len)
{
	n = 0;
	p=0;q=0;
	for(unsigned i=0;i<len;i++)
	{
		n = n * vlong(256) + vlong((unsigned char)*(r+i));
	}
	return 1;
}

int RSA_san::update_pq(char * ra,char * rb)
{
	for(int i=0;i<35;i++)
	{	
		if(ra[i])r1[i]=ra[i];else r1[i]='A';
		if(rb[i])r2[i]=rb[i];else r2[i]='B'; //should provent string interrupt like this~
	}
	find_prime();
	n = p*q;
	if(e%vlong(2)==vlong(0))e-=1;
	while ( gcd(p-vlong(1),e) != vlong(1) || gcd(q-vlong(1),e) != vlong(1) ) e += 2;
	calculate_d();
	return 1;
}

char* RSA_san::string2hexstring(char * s)//,unsigned len)
{
	unsigned len=35; // only use this function like this in this situation:)
	char *ps;
	char *p;
	ps=new char[len*2+2];
	p=ps;
	for(unsigned i=0;i<len;i++)
	{
		p[0]='0';p[1]='0';
		sprintf(p,"%X",s[i]);
		if(p[1]=='\0')
		{
			p[1]=p[0];
			p[0]='0';
		}
		p+=2;
	}
	*p='\0';
	return ps;
}

char* RSA_san::hexstring2string(char * h)
{
	// if hexstring has 0 byte in it ,...be careful about '\0' 
	unsigned i,id;
	char *ph;
	char *t;
	id=0;
	i=(unsigned)strlen(h);
	t=new char[i];
	
	if(i%2)
	{
		ph=new char[i+1];
		*ph='0';
		ph++;
		for(unsigned j=0;j<i;j++)ph[j]=h[j];
		ph[i]='\0';
		ph--;
	}
	else ph=h;

	while(*ph)
	{
		switch(*ph)
		{
			case '0':i=0;break;
			case '1':i=16;break;
			case '2':i=32;break;
			case '3':i=48;break;
			case '4':i=64;break;
			case '5':i=80;break;
			case '6':i=96;break;
			case '7':i=112;break;
			case '8':i=128;break;
			case '9':i=144;break;
			case 'A':i=160;break;
			case 'B':i=176;break;
			case 'C':i=192;break;
			case 'D':i=208;break;
			case 'E':i=224;break;
			case 'F':i=240;break;
		}
		switch(*(ph+1))
		{
			case '0':i+=0;break;
			case '1':i+=1;break;
			case '2':i+=2;break;
			case '3':i+=3;break;
			case '4':i+=4;break;
			case '5':i+=5;break;
			case '6':i+=6;break;
			case '7':i+=7;break;
			case '8':i+=8;break;
			case '9':i+=9;break;
			case 'A':i+=10;break;
			case 'B':i+=11;break;
			case 'C':i+=12;break;
			case 'D':i+=13;break;
			case 'E':i+=14;break;
			case 'F':i+=15;break;
		}
		t[id]=i;
		id++;
		ph+=2;
	}
	t[id]='\0';
	return t;
}

char* RSA_san::vlong2hexstring( const vlong& v )
{
	unsigned z,t,j,l;
	char st[9];
	char *ps;
	j=0;
	z=v.get_z()-1;
	for(int i=z;i>=0;i--)
	{
		t=v.get(i);
		//t to hex and save in char s[]
		for(int m=0;m<8;m++)st[m]='\0';
		sprintf(st,"%X",t);
		l=(unsigned)strlen(st);
		if(l!=8)
		{
			for(int m=0;m<8;m++)st[m]='0';
			sprintf(st+8-l,"%X",t);
		}	
		for(int k=0;k<8;k++)
		{
			if(st[k]=='\0')st[k]='0';
			s[j]=st[k];
			j++;
		}
	}
	s[j]='\0';

	ps=s;
	while(*ps=='0')ps++;

	if(*ps=='\0')ps--;

	return ps;
}

/*
unsigned* RSA_san::vlong2ints( const vlong& v )
{
	unsigned z,j;
	j=0;
	z=v.get_z()-1;
	for(int i=z;i>=0;i--,j++)
	{
		u[j]=v.get(i);
	}
	u[j]=0;
	return u;
}
*/

char* RSA_san::vlong2shortints( const vlong& v )
{
	// use this function only when RSA result has no '\0' in it!
	unsigned z,j;
	char *pi;
	j=0;
	z=v.get_z()-1;
	for(int i=z;i>=0;i--,j++)
	{
		u[j]=v.get(i);
	}
	u[j]=0;
	pi=(char *)u;
	while(!*pi)pi++;
	return pi;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产在线一区观看| 一本到一区二区三区| 91精品国产综合久久婷婷香蕉| 亚洲综合免费观看高清完整版 | 亚洲综合清纯丝袜自拍| 91在线观看地址| 亚洲大型综合色站| 欧美一区二区视频在线观看2022| 麻豆国产精品视频| 国产日韩高清在线| 91网站最新地址| 亚洲色图一区二区| 欧美精品三级在线观看| 美女久久久精品| 国产精品乱人伦一区二区| 一本色道亚洲精品aⅴ| 视频一区欧美精品| 久久久亚洲精品石原莉奈| 成人深夜在线观看| 亚洲国产美女搞黄色| 日韩精品一区二区三区视频播放| 成人丝袜高跟foot| 亚洲国产精品久久人人爱| 欧美成人a在线| 91福利在线导航| 精品在线观看视频| 日韩伦理av电影| 日韩视频一区二区三区在线播放 | 国产黄色91视频| 国产精品另类一区| 欧美精品乱人伦久久久久久| 国产一区二区三区国产| 一区二区三区在线播放| 日韩欧美中文字幕制服| gogo大胆日本视频一区| 免费看欧美女人艹b| 综合久久国产九一剧情麻豆| 7777精品伊人久久久大香线蕉的| 成人在线一区二区三区| 午夜精品视频一区| 国产精品成人一区二区艾草 | 午夜精品一区二区三区电影天堂 | 日本一区二区三区高清不卡| 日本美女视频一区二区| 国产日本欧洲亚洲| 成人av高清在线| 美女脱光内衣内裤视频久久网站 | 九九精品一区二区| 亚洲欧美自拍偷拍色图| 久久婷婷一区二区三区| 欧美精选午夜久久久乱码6080| 不卡av电影在线播放| 国产在线不卡一区| 青娱乐精品视频在线| 亚洲另类色综合网站| 国产日韩精品一区二区三区在线| 日韩欧美久久一区| 欧美理论片在线| 在线观看免费一区| 色综合天天在线| 成人国产精品免费网站| 国产精品一二三四区| 免费久久99精品国产| 日韩视频在线一区二区| av一本久道久久综合久久鬼色| xnxx国产精品| 97超碰欧美中文字幕| 欧美大尺度电影在线| 亚洲成av人片在www色猫咪| 欧美国产欧美综合| 久久久久久久一区| 久久蜜桃香蕉精品一区二区三区| 日韩丝袜情趣美女图片| 国产女同互慰高潮91漫画| 日韩精品一区二区三区四区| 日韩午夜在线观看视频| 精品久久久久av影院| 精品国产百合女同互慰| 欧美精品一区男女天堂| 久久蜜桃一区二区| 国产色91在线| 最近中文字幕一区二区三区| 亚洲欧美国产高清| 一区二区三区不卡在线观看| 亚洲第一成人在线| 日韩电影在线免费| 久久综合色8888| 成人免费在线播放视频| 欧美一区二区精品| 精品国产免费一区二区三区香蕉| 精品日产卡一卡二卡麻豆| 久久久久久电影| 国产精品色婷婷| 一区二区三区四区激情| 日韩在线一区二区| 国产精品一级在线| 99国产精品99久久久久久| 欧美性色综合网| 欧美一区二区大片| 久久精品无码一区二区三区| 国产精品福利影院| 亚洲国产一区视频| 九九国产精品视频| 91丨国产丨九色丨pron| 欧美精品精品一区| 久久久噜噜噜久久人人看| 国产精品美女久久久久aⅴ国产馆| 亚洲专区一二三| 韩国午夜理伦三级不卡影院| jizz一区二区| 国产亚洲成av人在线观看导航| 亚洲三级视频在线观看| 日韩av中文字幕一区二区| 国产精品一区二区果冻传媒| 色素色在线综合| 欧美不卡一区二区三区四区| 亚洲欧美日韩系列| 精品一区二区在线看| 色就色 综合激情| 久久综合久色欧美综合狠狠| 亚洲在线视频免费观看| 国产精品亚洲成人| 欧美老肥妇做.爰bbww| 国产精品久久久久婷婷| 麻豆国产精品一区二区三区 | 日韩精品高清不卡| av在线免费不卡| 欧美一级二级在线观看| 亚洲欧美日本在线| 国产一区91精品张津瑜| 欧美精品tushy高清| 亚洲免费观看在线视频| 国产在线不卡一卡二卡三卡四卡| 欧美日韩视频第一区| 国产欧美一区二区三区沐欲| 日本不卡一二三| 欧美日韩在线综合| 国产欧美一区二区在线| 精品一区二区成人精品| 欧美日韩在线播放| 亚洲乱码国产乱码精品精小说| 国产.精品.日韩.另类.中文.在线.播放 | 久久久久久日产精品| 免费av网站大全久久| 欧美色窝79yyyycom| 亚洲精品菠萝久久久久久久| 波多野结衣欧美| 久久久精品tv| 久久97超碰国产精品超碰| 欧美福利视频导航| 亚洲国产色一区| 91成人看片片| 一区二区三区中文在线观看| 91一区二区三区在线观看| 国产精品网友自拍| 东方欧美亚洲色图在线| 国产日韩精品一区| 国产精品亚洲一区二区三区妖精| 精品88久久久久88久久久| 精品综合免费视频观看| 欧美成人a视频| 国产在线一区二区| 国产亚洲精品中文字幕| 国产剧情一区在线| 国产欧美日产一区| 成人黄动漫网站免费app| 国产精品青草综合久久久久99| 成人av先锋影音| 18成人在线观看| 91麻豆国产精品久久| 亚洲精品久久7777| 欧美日韩亚洲综合在线 | 成人高清免费观看| 亚洲欧洲日韩一区二区三区| 99热国产精品| 亚洲精品成人悠悠色影视| 欧美制服丝袜第一页| 亚洲免费在线观看视频| 91国产丝袜在线播放| 丝袜美腿高跟呻吟高潮一区| 日韩视频免费观看高清完整版在线观看 | 蜜桃av一区二区在线观看| 日韩欧美国产一区二区三区| 精品一区中文字幕| 国产精品欧美综合在线| 色成年激情久久综合| 亚洲地区一二三色| 精品福利在线导航| 成人动漫一区二区三区| 一区二区三区欧美日韩| 7777精品伊人久久久大香线蕉最新版| 蜜桃91丨九色丨蝌蚪91桃色| 欧美激情一区二区在线| 欧美午夜影院一区| 久久超级碰视频| 中文字幕亚洲欧美在线不卡| 欧美精品vⅰdeose4hd| 国产精品中文有码| 一区二区三区欧美视频| 欧美xxxxx牲另类人与|