在MFC中调用NTL库 的例子哪位高手有
在MFC中调用NTL库 的例子谁有?
我编译总是出错 不知为何
#include "stdafx.h"
#include "5_12.h"
#include "5_12Dlg.h"
#include <openssl/err.h>
#include <openssl/bio.h>
#include <openssl/rsa.h>
#include <zz.h>
#include <windows.h>
#include <string.h>
#include <time.h>
一个按钮控制的函数算法:
void CMy5_12Dlg::Onchushihua()
{
ZZ n,p1,p2,e,d,q,g;
ZZ fn,fn1,fn2,fn3,pr,ii,mm,fnn,b;
int i=2;
RSA *r;//定义一个RSA 结构体
int bits=1024;
char errbuf[256];
unsigned long ee=RSA_F4;//e=65537
do
{
r=RSA_generate_key(bits,ee,NULL,NULL);//RSA生成密钥函数
if(r==NULL)//差错控制语句
{
unsigned long errorcode=ERR_get_error();
ERR_error_string(errorcode,errbuf);
}
char *strn=BN_bn2dec(r->n);//将16进制字符串转变为10进制字符串
n=to_ZZ(strn);//将字符串转变为ZZ数据类型
char *strp1=BN_bn2dec(r->p);
p1=to_ZZ(strp1);
char *strp2=BN_bn2dec(r->q);
p2=to_ZZ(strp2); // n p1 p2
}while(p1%4!=3||p2%4!=3);//p1=p2=3 mod 4
char *stre=BN_bn2dec(r->e);
e=to_ZZ(stre); //e
char *strd=BN_bn2dec(r->d);
d=to_ZZ(strd); //d
fn=(p1-1)*(p2-1);//O(n)=(p1-1)*(p2-1);
do
{
do
{pr=RandomBnd(p1-1)+1;
fn1=PowerMod(pr,fn/p1,n);
fn2=PowerMod(pr,fn/p2,n);}while(fn1==1||fn2==1);//pr为模n的任一原根
do {q=fn/i;
fnn=q*i;
ii=ProbPrime(q,10);
i++;
}while(ii==0&&(fn!=fnn));b=fn/q;//q为g的任一阶
g=PowerMod(pr,b,n);//g为n的生成元
}while(Jacobi(g,p1)!=1||Jacobi(g,p2)!=1);//控制g属于模n的平方剩余集合QRn x2=g%n
}
报错:
e:\program files\microsoft visual studio\vc98\include\ntl\tools.h(152) : error C2062: type 'int' unexpected
e:\program files\microsoft visual studio\vc98\include\ntl\tools.h(152) : error C2062: type 'int' unexpected
e:\program files\microsoft visual studio\vc98\include\ntl\tools.h(152) : error C2059: syntax error : ')'
e:\program files\microsoft visual studio\vc98\include\ntl\tools.h(152) : error C2143: syntax error : missing ';' before '{'
e:\program files\microsoft visual studio\vc98\include\ntl\tools.h(152) : error C2447: missing function header (old-style formal list?)
e:\program files\microsoft visual studio\vc98\include\ntl\tools.h(153) : error C2062: type 'int' unexpected
e:\program files\microsoft visual studio\vc98\include\ntl\tools.h(153) : error C2062: type 'int' unexpected
e:\program files\microsoft visual studio\vc98\include\ntl\tools.h(153) : error C2059: syntax error : ')'
e:\program files\microsoft visual studio\vc98\include\ntl\tools.h(153) : error C2143: syntax error : missing ';' before '{'
e:\program files\microsoft visual studio\vc98\include\ntl\tools.h(153) : error C2447: missing function header (old-style formal list?)
e:\program files\microsoft visual studio\vc98\include\ntl\tools.h(155) : error C2062: type 'long' unexpected
e:\program files\microsoft visual studio\vc98\include\ntl\tools.h(155) : error C2062: type 'long' unexpected
e:\program files\microsoft visual studio\vc98\include\ntl\tools.h(155) : error C2059: syntax error : ')'
e:\program files\microsoft visual studio\vc98\include\ntl\tools.h(155) : error C2143: syntax error : missing ';' before '{'
e:\program files\microsoft visual studio\vc98\include\ntl\tools.h(155) : error C2447: missing function header (old-style formal list?)
e:\program files\microsoft visual studio\vc98\include\ntl\tools.h(156) : error C2062: type 'long' unexpected
e:\program files\microsoft visual studio\vc98\include\ntl\tools.h(156) : error C2062: type 'long' unexpected
e:\program files\microsoft visual studio\vc98\include\ntl\tools.h(156) : error C2059: syntax error : ')'
e:\program files\microsoft visual studio\vc98\include\ntl\tools.h(156) : error C2143: syntax error : missing ';' before '{'
e:\program files\microsoft visual studio\vc98\include\ntl\tools.h(156) : error C2447: missing function header (old-style formal list?)
e:\program files\microsoft visual studio\vc98\include\ntl\tools.h(158) : error C2062: type 'int' unexpected
e:\program files\microsoft visual studio\vc98\include\ntl\tools.h(158) : error C2062: type 'long' unexpected
e:\program files\microsoft visual studio\vc98\include\ntl\tools.h(158) : error C2059: syntax error : ')'
我编译总是出错 不知为何
#include "stdafx.h"
#include "5_12.h"
#include "5_12Dlg.h"
#include <openssl/err.h>
#include <openssl/bio.h>
#include <openssl/rsa.h>
#include <zz.h>
#include <windows.h>
#include <string.h>
#include <time.h>
一个按钮控制的函数算法:
void CMy5_12Dlg::Onchushihua()
{
ZZ n,p1,p2,e,d,q,g;
ZZ fn,fn1,fn2,fn3,pr,ii,mm,fnn,b;
int i=2;
RSA *r;//定义一个RSA 结构体
int bits=1024;
char errbuf[256];
unsigned long ee=RSA_F4;//e=65537
do
{
r=RSA_generate_key(bits,ee,NULL,NULL);//RSA生成密钥函数
if(r==NULL)//差错控制语句
{
unsigned long errorcode=ERR_get_error();
ERR_error_string(errorcode,errbuf);
}
char *strn=BN_bn2dec(r->n);//将16进制字符串转变为10进制字符串
n=to_ZZ(strn);//将字符串转变为ZZ数据类型
char *strp1=BN_bn2dec(r->p);
p1=to_ZZ(strp1);
char *strp2=BN_bn2dec(r->q);
p2=to_ZZ(strp2); // n p1 p2
}while(p1%4!=3||p2%4!=3);//p1=p2=3 mod 4
char *stre=BN_bn2dec(r->e);
e=to_ZZ(stre); //e
char *strd=BN_bn2dec(r->d);
d=to_ZZ(strd); //d
fn=(p1-1)*(p2-1);//O(n)=(p1-1)*(p2-1);
do
{
do
{pr=RandomBnd(p1-1)+1;
fn1=PowerMod(pr,fn/p1,n);
fn2=PowerMod(pr,fn/p2,n);}while(fn1==1||fn2==1);//pr为模n的任一原根
do {q=fn/i;
fnn=q*i;
ii=ProbPrime(q,10);
i++;
}while(ii==0&&(fn!=fnn));b=fn/q;//q为g的任一阶
g=PowerMod(pr,b,n);//g为n的生成元
}while(Jacobi(g,p1)!=1||Jacobi(g,p2)!=1);//控制g属于模n的平方剩余集合QRn x2=g%n
}
报错:
e:\program files\microsoft visual studio\vc98\include\ntl\tools.h(152) : error C2062: type 'int' unexpected
e:\program files\microsoft visual studio\vc98\include\ntl\tools.h(152) : error C2062: type 'int' unexpected
e:\program files\microsoft visual studio\vc98\include\ntl\tools.h(152) : error C2059: syntax error : ')'
e:\program files\microsoft visual studio\vc98\include\ntl\tools.h(152) : error C2143: syntax error : missing ';' before '{'
e:\program files\microsoft visual studio\vc98\include\ntl\tools.h(152) : error C2447: missing function header (old-style formal list?)
e:\program files\microsoft visual studio\vc98\include\ntl\tools.h(153) : error C2062: type 'int' unexpected
e:\program files\microsoft visual studio\vc98\include\ntl\tools.h(153) : error C2062: type 'int' unexpected
e:\program files\microsoft visual studio\vc98\include\ntl\tools.h(153) : error C2059: syntax error : ')'
e:\program files\microsoft visual studio\vc98\include\ntl\tools.h(153) : error C2143: syntax error : missing ';' before '{'
e:\program files\microsoft visual studio\vc98\include\ntl\tools.h(153) : error C2447: missing function header (old-style formal list?)
e:\program files\microsoft visual studio\vc98\include\ntl\tools.h(155) : error C2062: type 'long' unexpected
e:\program files\microsoft visual studio\vc98\include\ntl\tools.h(155) : error C2062: type 'long' unexpected
e:\program files\microsoft visual studio\vc98\include\ntl\tools.h(155) : error C2059: syntax error : ')'
e:\program files\microsoft visual studio\vc98\include\ntl\tools.h(155) : error C2143: syntax error : missing ';' before '{'
e:\program files\microsoft visual studio\vc98\include\ntl\tools.h(155) : error C2447: missing function header (old-style formal list?)
e:\program files\microsoft visual studio\vc98\include\ntl\tools.h(156) : error C2062: type 'long' unexpected
e:\program files\microsoft visual studio\vc98\include\ntl\tools.h(156) : error C2062: type 'long' unexpected
e:\program files\microsoft visual studio\vc98\include\ntl\tools.h(156) : error C2059: syntax error : ')'
e:\program files\microsoft visual studio\vc98\include\ntl\tools.h(156) : error C2143: syntax error : missing ';' before '{'
e:\program files\microsoft visual studio\vc98\include\ntl\tools.h(156) : error C2447: missing function header (old-style formal list?)
e:\program files\microsoft visual studio\vc98\include\ntl\tools.h(158) : error C2062: type 'int' unexpected
e:\program files\microsoft visual studio\vc98\include\ntl\tools.h(158) : error C2062: type 'long' unexpected
e:\program files\microsoft visual studio\vc98\include\ntl\tools.h(158) : error C2059: syntax error : ')'