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

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

?? rsa_1.txt

?? rsa加密算法源程序
?? TXT
?? 第 1 頁 / 共 4 頁
字號:
X */
Xstatic int jak_f( n )
XNUMBER *n;
X{
X	int f,ret;
X	
X	f = n_bits( n, 3 );
X	
X	ret = ((f == 1) || (f == 7)) ? 1 : -1;
X	
X	return(ret);
X}
X
X/*
X * Hilfs-Funktuion fuer jakobi
X */	
Xstatic int jak_g( a, n )
XNUMBER *a,*n;
X{
X	int ret;
X	
X	if ( n_bits( n, 2 ) == 1 ||
X			n_bits( a, 2 ) == 1 )
X		ret = 1;
X	else
X		ret = -1;
X	
X	return(ret);
X}
X		
X/*
X * Jakobi-Symbol
X */
Xstatic int jakobi( a, n )
XNUMBER *a,*n;
X{
X	NUMBER t[2];
X	int at,nt, ret;
X	
X	a_assign( &t[0], a ); at = 0;
X	a_assign( &t[1], n ); nt = 1;
X
X	/*
X	 * b > 1
X	 *
X	 * J( a, b) =
X	 * a == 1	:	1
X	 * a == 2	:	f(n)
X	 * a == 2*b	:	J(b,n)*J(2,n) ( == J(b,n)*f(n) )
X	 * a == 2*b -1	:	J(n % a,a)*g(a,n)
X	 *
X	 */
X	 
X	ret = 1;
X	while (1) {
X		if (! a_cmp(&t[at],&a_one) ) {
X			break;
X		}
X		if (! a_cmp(&t[at],&a_two) ) {
X			ret *= jak_f( &t[nt] );
X			break;
X		}
X		if ( ! t[at].n_len )		/* Fehler :-)	*/
X			abort();
X		if ( t[at].n_part[0] & 1 ) {	/* a == 2*b -1	*/
X			int tmp;
X			
X			ret *= jak_g( &t[at], &t[nt] );
X			a_div( &t[nt], &t[at], NUM0P, &t[nt] );
X			tmp = at; at = nt; nt = tmp;
X		}
X		else {				/* a == 2*b	*/
X			ret *= jak_f( &t[nt] );
X			a_div2( &t[at] );
X		}
X
X	}
X	
X	return(ret);
X}
X		
X/*
X * Probabilistischer Primzahltest
X *
X *  0 -> n nicht prim
X *  1 -> n prim mit  (1-1/2^m) Wahrscheinlichkeit.
X *
X *	ACHTUNG !!!!!!
X *	p_prim benutzt m_init !!
X *
X */
Xint p_prim( n, m )
XNUMBER *n;
X{
X	NUMBER gt,n1,n2,a;
X	INT *p;
X	int i,w,j;
X	long lrand48();
X
X	if (a_cmp(n,&a_two) <= 0 || m <= 0)
X		abort();
X		
X	a_sub( n, &a_one, &n1 );	/* n1 = -1    mod n		*/
X	a_assign( &n2, &n1 );
X	a_div2( &n2 );			/* n2 = ( n -1 ) / 2		*/
X	
X	m_init( n, NUM0P );
X	
X	w = 1;
X	for (; w && m; m--) {
X				/* ziehe zufaellig a aus 2..n-1		*/
X		do {
X			for (i=n->n_len-1, p=a.n_part; i; i--)
X				*p++ = (INT)lrand48();
X			if ( i=n->n_len )
X				*p = (INT)( lrand48() % ((unsigned long)n->n_part[i-1] +1) );
X			while ( i && ! *p )
X				p--,i--;
X			a.n_len = i;
X		} while ( a_cmp( &a, n ) >= 0 || a_cmp( &a, &a_two ) < 0 );
X
X				/* jetzt ist a fertig			*/
X
X		/*
X		 * n ist nicht prim wenn gilt:
X		 *	(a,n) != 1
X		 * oder
X		 *	a^( (n-1)/2 ) != J(a,n)   mod n
X		 *
X		 */
X		 
X		a_ggt( &a, n, &gt );
X		if ( a_cmp( &gt, &a_one ) == 0 ) {
X
X			j= jakobi( &a, n );
X			m_exp( &a, &n2, &a );
X
X			if  (   ( a_cmp( &a, &a_one ) == 0 && j ==  1 )
X			     || ( a_cmp( &a, &n1    ) == 0 && j == -1 ) )
X				w = 1;
X			else
X				w = 0;
X		}
X		else
X			w = 0;
X	}
X
X	return( w );
X}
X
X/*
X * Berechne mulitiplikatives Inverses zu d (mod phi)
X *	d relativ prim zu phi ( d < phi )
X *	d.h. (d,phi) == 1
X *
X *	ACHTUNG !!!!
X *	inv benutzt m_init
X */
Xvoid inv( d, phi, e )
XNUMBER *d,*phi,*e;
X{
X	int k, i0, i1, i2;
X	NUMBER r[3],p[3],c;
X	
X	/*
X	 * Berlekamp-Algorithmus
X	 *	( fuer diesen Spezialfall vereinfacht )
X	 */
X
X	if (a_cmp(phi,d) <= 0)
X		abort();
X	
X	m_init( phi, NUM0P );
X	
X	p[1].n_len = 0;
X	a_assign( &p[2], &a_one );
X	a_assign( &r[1], phi );
X	a_assign( &r[2], d );
X	
X	k = -1;
X	do {
X		k++;
X		i0=k%3; i1=(k+2)%3; i2=(k+1)%3;
X		a_div( &r[i2], &r[i1], &c, &r[i0] );
X		m_mult( &c, &p[i1], &p[i0] );
X		m_add( &p[i0], &p[i2], &p[i0] );
X	} while (r[i0].n_len);
X
X	if ( a_cmp( &r[i1], &a_one ) )	/* r[i1] == (d,phi) muss 1 sein	*/
X		abort();
X		
X	if ( k & 1 )	/* falsches ''Vorzeichen''	*/
X		a_sub( phi, &p[i1], e );
X	else
X		a_assign( e, &p[i1] );
X}
SHAR_EOF
if test 4771 -ne "`wc -c < 'prim.c'`"
then
	echo shar: "error transmitting 'prim.c'" '(should have been 4771 characters)'
fi
fi
echo shar: "extracting 'prim.h'" '(688 characters)'
if test -f 'prim.h'
then
	echo shar: "will not over-write existing file 'prim.h'"
else
sed 's/^X//' << \SHAR_EOF > 'prim.h'
X/*******************************************************************************
X*									       *
X*	Copyright (c) Martin Nicolay,  22. Nov. 1988			       *
X*									       *
X*	Wenn diese (oder sinngemaess uebersetzte) Copyright-Angabe enthalten   *
X*	bleibt, darf diese Source fuer jeden nichtkomerziellen Zweck weiter    *
X*	verwendet werden.						       *
X*									       *
X*	martin@trillian.megalon.de					       *
X*									       *
X*******************************************************************************/
X
X#ifndef	_prim_h_
X#define	_prim_h_
X
X#ifndef _arith_h_
X#include	"arith.h"
X#endif
X
Xint	p_prim		P(( NUMBER*, int ));
Xvoid	inv		P(( NUMBER*, NUMBER*, NUMBER* ));
X
X#endif
SHAR_EOF
if test 688 -ne "`wc -c < 'prim.h'`"
then
	echo shar: "error transmitting 'prim.h'" '(should have been 688 characters)'
fi
fi
echo shar: "extracting 'rnd.c'" '(1073 characters)'
if test -f 'rnd.c'
then
	echo shar: "will not over-write existing file 'rnd.c'"
else
sed 's/^X//' << \SHAR_EOF > 'rnd.c'
X/*******************************************************************************
X*									       *
X*	Copyright (c) Martin Nicolay,  22. Nov. 1988			       *
X*									       *
X*	Wenn diese (oder sinngemaess uebersetzte) Copyright-Angabe enthalten   *
X*	bleibt, darf diese Source fuer jeden nichtkomerziellen Zweck weiter    *
X*	verwendet werden.						       *
X*									       *
X*	martin@trillian.megalon.de					       *
X*									       *
X*******************************************************************************/
X
X#include	<stdio.h>
X
X#include	"rand.h"
X
X#include	"nio.h"
X
Xvoid gen_number( len, n )
XNUMBER *n;
X{
X	char *hex = "0123456789ABCDEF" ;
X	char num[ MAXLEN*MAXBIT/4 +1 ];
X	char *p;
X	int i,l;
X	
X	p=&num[ sizeof(num) -1];
X	*p-- = '\0';
X	
X	for (l=len; l--; p-- ) {
X		i = lrand48() % 16;
X		*p = hex[ i ];
X	}
X	p++;
X	
X	while (len-- && *p == '0')
X		p++;
X	
X	num_sget( n, p );
X}
X
Xvoid init_rnd()
X{
X	long time();
X	short seed[3];
X
X	seed[0] = time((long *)0) & 0xFFFF;
X	seed[1] = getpid() & 0xFFFF;
X	seed[2] = (time((long *)0) >> 16) & 0xFFFF;
X	(void)seed48( seed );
X}	
X
SHAR_EOF
if test 1073 -ne "`wc -c < 'rnd.c'`"
then
	echo shar: "error transmitting 'rnd.c'" '(should have been 1073 characters)'
fi
fi
echo shar: "extracting 'rnd.h'" '(673 characters)'
if test -f 'rnd.h'
then
	echo shar: "will not over-write existing file 'rnd.h'"
else
sed 's/^X//' << \SHAR_EOF > 'rnd.h'
X/*******************************************************************************
X*									       *
X*	Copyright (c) Martin Nicolay,  22. Nov. 1988			       *
X*									       *
X*	Wenn diese (oder sinngemaess uebersetzte) Copyright-Angabe enthalten   *
X*	bleibt, darf diese Source fuer jeden nichtkomerziellen Zweck weiter    *
X*	verwendet werden.						       *
X*									       *
X*	martin@trillian.megalon.de					       *
X*									       *
X*******************************************************************************/
X
X#ifndef	_rnd_h_
X#define	_rnd_h_
X
X#ifndef _arith_h_
X#include	"arith.h"
X#endif
X
Xvoid	gen_number	P(( int, NUMBER* ));
Xvoid	init_rnd	P(( void ));
X
X#endif
SHAR_EOF
if test 673 -ne "`wc -c < 'rnd.h'`"
then
	echo shar: "error transmitting 'rnd.h'" '(should have been 673 characters)'
fi
fi
echo shar: "extracting 'rsa.c'" '(3178 characters)'
if test -f 'rsa.c'
then
	echo shar: "will not over-write existing file 'rsa.c'"
else
sed 's/^X//' << \SHAR_EOF > 'rsa.c'
X/*******************************************************************************
X*									       *
X*	Copyright (c) Martin Nicolay,  22. Nov. 1988			       *
X*									       *
X*	Wenn diese (oder sinngemaess uebersetzte) Copyright-Angabe enthalten   *
X*	bleibt, darf diese Source fuer jeden nichtkomerziellen Zweck weiter    *
X*	verwendet werden.						       *
X*									       *
X*	martin@trillian.megalon.de					       *
X*									       *
X*******************************************************************************/
X
X#include	<stdio.h>
X#include	<string.h>
X#include	<memory.h>
X
X#include	"arith.h"
X#include	"nio.h"
X
X#define	ENCODE	"rsaencode"
X#define	DECODE	"rsadecode"
X
Xchar *prog;
X
Xint	clear_siz;			/* clear-text blocksize		*/
Xint	enc_siz;			/* encoded blocksize		*/
X					/* clear_siz < enc_siz		*/
X
Xdo_crypt( s, d, len, e )
Xchar *s;
Xchar *d;
XNUMBER *e;
X{
X	static char hex[] = "0123456789ABCDEF";
X	NUMBER n;
X	char buf[ STRLEN + 1 ];
X	char *pb,*ph;
X	int i,c;
X	
X	ph = buf + STRLEN;
X	ph[1] = '\0';
X	
X	for (i=len; i; i--) {
X		c = *s++;
X		*ph-- = hex[ (c >> 4) & 0xF ];
X		*ph-- = hex[ c & 0xF ];
X	}
X	ph++;
X	
X	num_sget( &n, ph );
X	
X	m_exp( &n, e, &n );
X	
X	num_sput( &n, buf, STRLEN +1 );
X	
X	ph = buf + (i=strlen(buf)) -1;
X	
X	for (; len; len--) {
X		if (i-- > 0) {
X			c = (strchr( hex, *ph ) - hex) << 4;
X			ph--;
X		}
X		else
X			c=0;
X		if (i-- > 0) {
X			c |= strchr( hex, *ph ) - hex;
X			ph--;
X		}
X
X		*d++ = c;
X	}
X}
X	
X	
Xint get_clear( p )
Xchar *p;
X{
X	int n;
X	
X	n = fread( p, 1, clear_siz, stdin );
X	
X	if (n <= 0)
X		return(0);
X	
X	memset( p + n, 0, enc_siz - n );
X	
X	return(1);
X}
X
Xint get_enc( p )
Xchar *p;
X{
X	int n;
X
X	n = fread( p, 1, enc_siz, stdin );
X	
X	if (n != enc_siz)
X		return(0);
X	
X	return(1);
X}
X
Xint put_clear( p )
Xchar *p;
X{
X	int n;
X	
X	n = fwrite( p, 1, clear_siz, stdout );
X	
X	if (n != clear_siz)
X		return(0);
X
X	return(1);
X}
X
Xint put_enc( p )
Xchar *p;
X{
X	int n;
X
X	n = fwrite( p, 1, enc_siz, stdout );
X	
X	if (n != enc_siz)
X		return(0);
X	
X	return(1);
X}
X
X
Xmain( argc, argv )
Xchar **argv;
X{
X	char buf[ STRLEN*2 ];
X	NUMBER n,e;
X	FILE *keys;
X	int (*inp)() = 0;
X	int (*out)() = 0;
X	
X	if ( ! (prog=strrchr( argv[0], '/' )) )
X		prog=argv[0];
X	
X	
X	if ( ! strcmp( prog, DECODE ) ) {
X		inp = get_enc;
X		out = put_clear;
X	}
X	if ( ! strcmp( prog, ENCODE ) ) {
X		inp = get_clear;
X		out = put_enc;
X	}
X	
X	if (! inp) {
X		fprintf(stderr,"%s: don't know who i am (%s or %s)\n",prog,ENCODE,DECODE);
X		exit(1);
X	}
X	
X	if (argc != 2) {
X		fprintf(stderr,"usage: %s keyfile\n",prog);
X		exit(1);
X	}
X	if ( !( keys= fopen(argv[1],"r")) ) {
X		perror(argv[1]);
X		exit(1);
X	}
X	
X	num_fget( &n, keys ); getc(keys);
X	num_fget( &e, keys );
X	if (a_cmp(&n,&e) <= 0 || e.n_len == 0 || getc(keys) != EOF) {
X		fprintf(stderr,"%s: corrupt keyfile\n",prog);
X		fprintf(stderr,"keyfile format:\n");
X		fprintf(stderr,"\t<n in hex>\n");
X		fprintf(stderr,"\t<delimiter> (1 char)\n");
X		fprintf(stderr,"\t<e/d in hex>\n");
X		fprintf(stderr,"white spaces are ignored\n");
X		exit(1);
X	}
X	
X	enc_siz = ( n_bitlen( &n ) + 7 ) / 8;
X	clear_siz = enc_siz -1;
X	
X	m_init( &n, NUM0P );
X	
X	while ( (*inp)( buf ) ) {
X		do_crypt( buf, buf, enc_siz, &e );
X		if (! (*out)( buf ) ) {
X			perror("output");
X			exit(1);
X		}
X	}
X	
X	exit(0);
X}
SHAR_EOF
if test 3178 -ne "`wc -c < 'rsa.c'`"
then
	echo shar: "error transmitting 'rsa.c'" '(should have been 3178 characters)'
fi
fi
exit 0
#	End of shell archive


-- 
Martin Nicolay         Phone: +49 203 775679 (without carrier at 8-21 h)
Fliederstr. 23         Mail : martin@trillian.megalon.de
4100 Duisburg 1
W-Germany              WARNING: Don't trust upon my opinion - it changes :-)

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品1区2区3区| 大桥未久av一区二区三区中文| 久久久国产精品不卡| 久久99久久久久| 欧美r级在线观看| 国产一区二区三区四区五区入口 | 国产一区中文字幕| 久久理论电影网| 成人三级在线视频| 一区二区三区免费网站| 欧美一区二区三区喷汁尤物| 国模少妇一区二区三区| 中文字幕巨乱亚洲| 欧洲色大大久久| 蜜桃91丨九色丨蝌蚪91桃色| 2欧美一区二区三区在线观看视频| 福利电影一区二区| 亚洲成人免费影院| 久久午夜羞羞影院免费观看| 91在线视频观看| 日本美女一区二区三区视频| 国产日韩欧美麻豆| 欧美婷婷六月丁香综合色| 麻豆精品国产91久久久久久| 欧美韩国日本一区| 欧美日韩精品一区二区三区蜜桃| 久久99精品国产.久久久久久| 国产亚洲精久久久久久| 在线观看成人免费视频| 国产精品综合一区二区三区| 亚洲卡通欧美制服中文| 日韩精品一区二区三区中文精品 | 国产精品毛片无遮挡高清| 色婷婷av一区二区三区软件 | 在线成人高清不卡| 处破女av一区二区| 日韩av一二三| 亚洲精品免费播放| 久久久久久久久久久久电影| 欧美日韩1234| 91免费看片在线观看| 国模娜娜一区二区三区| 亚洲成人1区2区| 亚洲女子a中天字幕| 欧美va亚洲va在线观看蝴蝶网| av不卡一区二区三区| 国产美女精品在线| 久久精品国产一区二区| 亚洲综合在线免费观看| 国产精品久久久久四虎| 精品欧美一区二区久久| 欧美日韩国产在线观看| 色中色一区二区| 国产成人日日夜夜| 老鸭窝一区二区久久精品| 午夜激情综合网| 一区二区国产盗摄色噜噜| 国产精品嫩草影院av蜜臀| 精品国产一区二区三区av性色| 欧美在线三级电影| 91视频91自| 99国产精品99久久久久久| 成人中文字幕合集| 欧美丰满美乳xxx高潮www| 日本电影欧美片| 色成年激情久久综合| 色综合欧美在线| 97久久精品人人澡人人爽| 成人激情动漫在线观看| 国产精品一线二线三线精华| 精品一区二区在线观看| 麻豆免费看一区二区三区| 日本欧美在线看| 麻豆成人久久精品二区三区小说| 婷婷中文字幕综合| 免费看欧美女人艹b| 亚洲福利视频一区二区| 亚洲v中文字幕| 五月婷婷色综合| 日本色综合中文字幕| 精品在线一区二区三区| 国产一二三精品| 成人免费电影视频| 色综合久久88色综合天天6| 91无套直看片红桃| 欧美综合久久久| 制服丝袜激情欧洲亚洲| 欧美一区二区三区免费在线看| 欧美一区二区三区在线观看| 欧美一区二区精品久久911| 精品理论电影在线观看| 国产蜜臀av在线一区二区三区| 国产欧美视频在线观看| 亚洲婷婷国产精品电影人久久| 亚洲免费视频成人| 日本人妖一区二区| 国产成人精品影视| 色呦呦国产精品| 日韩一二三区视频| 久久久国产精品麻豆| 亚洲视频中文字幕| 五月激情综合婷婷| 国产伦精一区二区三区| 99re在线精品| 日韩一区二区在线观看视频| 26uuu亚洲婷婷狠狠天堂| 中文文精品字幕一区二区| 亚洲三级免费观看| 蜜桃91丨九色丨蝌蚪91桃色| 国产成人高清视频| 欧美三级韩国三级日本一级| 精品国产91乱码一区二区三区 | 久久精品一区二区三区av| 国产精品久久久久久久久免费相片| 亚洲女同女同女同女同女同69| 天堂va蜜桃一区二区三区漫画版 | 风间由美一区二区av101| 在线免费亚洲电影| 久久综合给合久久狠狠狠97色69| 国产精品入口麻豆原神| 午夜精品福利久久久| 国产999精品久久| 制服丝袜av成人在线看| 欧美激情一区二区三区四区 | 久久久久久久久久电影| 亚洲日穴在线视频| 精品一区二区免费看| 91黄色免费网站| 日本一区免费视频| 美女看a上一区| 91成人在线观看喷潮| 国产嫩草影院久久久久| 日本欧美在线观看| 中文字幕一区二区三区不卡 | 国产欧美日韩久久| 日韩在线播放一区二区| 色综合久久久久久久| 国产精品女主播av| 精品一区二区在线播放| 欧美精品aⅴ在线视频| 成人欧美一区二区三区白人| 美女视频免费一区| 欧美嫩在线观看| 亚洲女爱视频在线| 成人av在线一区二区| 欧美v亚洲v综合ⅴ国产v| 视频一区在线播放| 欧美色综合影院| 亚洲免费在线观看视频| 不卡的av在线播放| 国产欧美精品国产国产专区| 精品一区二区三区久久久| 91精品久久久久久久久99蜜臂| 亚洲精品国产视频| 91在线精品秘密一区二区| 国产欧美一区二区精品性色| 国产裸体歌舞团一区二区| 精品国产免费一区二区三区香蕉| 视频在线观看国产精品| 欧美精品久久天天躁| 亚洲第一二三四区| 欧美日韩亚洲高清一区二区| 亚洲一区在线观看视频| 91丨国产丨九色丨pron| 亚洲精品视频免费看| 色综合久久久久网| 亚洲国产中文字幕在线视频综合 | 日韩一级欧美一级| 蜜桃一区二区三区在线观看| 日韩精品一区二区在线观看| 激情综合色综合久久综合| 久久综合色播五月| 国产精品一区二区三区99| 国产免费观看久久| 色综合久久综合中文综合网| 夜夜揉揉日日人人青青一国产精品| 91激情五月电影| 三级久久三级久久| 精品国产一区二区国模嫣然| 国产精品影视天天线| 亚洲视频一二三区| 欧美乱熟臀69xxxxxx| 久久电影网电视剧免费观看| 久久久久久一二三区| 9i在线看片成人免费| 一区二区国产视频| 日韩欧美电影在线| 国产福利一区二区三区视频 | 欧美一级二级在线观看| 美女看a上一区| 国产精品毛片大码女人| 色一情一伦一子一伦一区| 日韩高清欧美激情| 久久久www免费人成精品| 99精品国产视频| 另类的小说在线视频另类成人小视频在线 | 99热精品一区二区| 日精品一区二区三区| 国产日韩欧美亚洲| 欧美日精品一区视频|