如何用Microsoft Visual C++6.0编写程序

如何用Microsoft Visual C++6.0编写程序,第1张

用Microsoft Visual C++6.0编写程序,以hello world为例:

1、打开VC6.0,如下图

2、点击菜单:File - News,d出New对话框,如下图:选择Files选项卡,然后在下面的列表里选择C++ SourceFile,File框中输入main.c,这里要特别注意,名字可以随意起,但后缀一定是.c,然后在右边Location框中选择我们事先建立好的路径D:程序练习Hello,然后点击OK按钮进行确定。

3、然后就可以进行代码输入了,然后点击Compile按钮进行编译,在d出的对话框中点击确定,如下图:

4、按“Execute Program”运行一下程序,如下图:

#include <iostream.h>

using namespace std

int main()

{

int FirstNum,SecondNum

int i,evenSum=0,odd2Sum=0

cout<<"请输入2个整数:"<<endl

cin>>FirstNum>>SecondNum

cout<<"奇数包括:"

for(i=FirstNumi<=SecondNumi++)

{

if(i%2==0)

{

evenSum+=i

}

else

{

odd2Sum+=i*i

cout<<i<<" "

}

}

cout<<endl

cout<<"偶数的和="<<evenSum<<endl

cout<<"奇数的平方和="<<odd2Sum<<endl

cin.get()

cin.get()

return 0

}

#include <openssl/rsa.h>

#include <openssl/sha.h>

intmain()

{

RSA *r

int bits=1024,ret,len,flen,padding,i

unsigned long e=RSA_3

BIGNUM *bne

unsigned char*key,*p

BIO *b

unsigned charfrom[500],to[500],out[500]

bne=BN_new()

ret=BN_set_word(bne,e)

r=RSA_new()

ret=RSA_generate_key_ex(r,bits,bne,NULL)

if(ret!=1)

{

printf("RSA_generate_key_ex err!\n")

return -1

}

/* 私钥i2d */

b=BIO_new(BIO_s_mem())

ret=i2d_RSAPrivateKey_bio(b,r)

key=malloc(1024)

len=BIO_read(b,key,1024)

BIO_free(b)

b=BIO_new_file("rsa.key","w")

ret=i2d_RSAPrivateKey_bio(b,r)

BIO_free(b)

/* 私钥d2i */

/* 公钥i2d */

/* 公钥d2i */

/* 私钥加密 */

flen=RSA_size(r)

printf("please select private enc padding : \n")

printf("1.RSA_PKCS1_PADDING\n")

printf("3.RSA_NO_PADDING\n")

printf("5.RSA_X931_PADDING\n")

scanf("%d",&padding)

if(padding==RSA_PKCS1_PADDING)

flen-=11

else if(padding==RSA_X931_PADDING)

flen-=2

else if(padding==RSA_NO_PADDING)

flen=flen

else

{

printf("rsa not surport !\n")

return -1

}

for(i=0i<fleni++)

memset(&from[i],i,1)

len=RSA_private_encrypt(flen,from,to,r,padding)

if(len<=0)

{

printf("RSA_private_encrypt err!\n")

return -1

}

len=RSA_public_decrypt(len,to,out,r,padding)

if(len<=0)

{

printf("RSA_public_decrypt err!\n")

return -1

}

if(memcmp(from,out,flen))

{

printf("err!\n")

return -1

}

/* */

printf("please select public enc padding : \n")

printf("1.RSA_PKCS1_PADDING\n")

printf("2.RSA_SSLV23_PADDING\n")

printf("3.RSA_NO_PADDING\n")

printf("4.RSA_PKCS1_OAEP_PADDING\n")

scanf("%d",&padding)

flen=RSA_size(r)

if(padding==RSA_PKCS1_PADDING)

flen-=11

else if(padding==RSA_SSLV23_PADDING)

flen-=11

else if(padding==RSA_X931_PADDING)

flen-=2

else if(padding==RSA_NO_PADDING)

flen=flen

else if(padding==RSA_PKCS1_OAEP_PADDING)

flen=flen-2 * SHA_DIGEST_LENGTH-2

else

{

printf("rsa not surport !\n")

return -1

}

for(i=0i<fleni++)

memset(&from[i],i+1,1)

len=RSA_public_encrypt(flen,from,to,r,padding)

if(len<=0)

{

printf("RSA_public_encrypt err!\n")

return -1

}

len=RSA_private_decrypt(len,to,out,r,padding)

if(len<=0)

{

printf("RSA_private_decrypt err!\n")

return -1

}

if(memcmp(from,out,flen))

{

printf("err!\n")

return -1

}

printf("test ok!\n")

RSA_free(r)

return 0

}

上述程序中当采用公钥RSA_SSLV23_PADDING加密,用私钥RSA_SSLV23_PADDING解密时会报错,原因是openssl源代码错误:

rsa_ssl.c函数RSA_padding_check_SSLv23有:

if (k == -1) /* err */

{

RSAerr(RSA_F_RSA_PADDING_CHECK_SSLV23,RSA_R_SSLV3_ROLLBACK_ATTACK)

return (-1)

}

修改为k!=-1即可。

各种padding对输入数据长度的要求:

私钥加密:

RSA_PKCS1_PADDING RSA_size-11

RSA_NO_PADDINGRSA_size-0

RSA_X931_PADDING RSA_size-2

公钥加密

RSA_PKCS1_PADDING RSA_size-11

RSA_SSLV23_PADDING RSA_size-11

RSA_X931_PADDING RSA_size-2

RSA_NO_PADDINGRSA_size-0

RSA_PKCS1_OAEP_PADDING RSA_size-2 * SHA_DIGEST_LENGTH-2


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/12006351.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-20
下一篇2023-05-20

发表评论

登录后才能评论

评论列表(0条)

    保存