程序要求如下:
1. 从IE任意导出一个X.509证书(DER格式,Base64格式,PKCS#7格式均可)
2. 编程实现该证书的解析,结果可以与asn1view工具对比
3. 得到证书中的公钥信息
4. 输入输出可以使用文本界面或者图形界面
5. 程序不能都放到一个源文件中(比如,c语言至少有俩个源文件,一个头文件)
#include<stdio.h>
void main()
{
void file1();
void file2();
file1();
file2();
}
/************************************************/
void file1() /*输出公约函数*/
{
FILE *fp;
int i;
char A[300];
if((fp=fopen("043220.cer","rb"))==NULL)
{
printf("can not open the file\n");
return;
} /*打开文件*/
fseek(fp,223l,0); /*把文件指针指向公约的起始位置*/
fread(A,271,1,fp); /*将公约的内容读入到数组中*/
printf("the gongyue is:\n");
for(i=0;i<=270;i++)
{
printf("%x",A[i]);
if(i%5==0)
printf("\n");
} /*输出数组即公约内容*/
printf("\n");
fclose(fp); /*关闭文件*/
}
/***************************************************/
void file2()
{
FILE *fp;
int i;
char B[650];
if((fp=fopen("043220.cer","rb"))==NULL)
{
printf("can not open the file\n");
return;
} /*打开文件*/
fseek(fp,8l,0);
fread(B,611,1,fp);
printf("the first stage is:\n");
for(i=0;i<=610;i++)
{
printf("%x",B[i]);
if(i%5==0)printf("\n");
} /*输出的一段*/
printf("\n");
fseek(fp,2,1);
fread(B,13,1,fp);
printf("the second stage is:\n");
for(i=0;i<=12;i++)
{
printf("%x",B[i]);
if(i%5==0)
printf("\n");
} /*输出第二段*/
printf("\n");
fseek(fp,4l,1);
fread(B,257,1,fp);
printf("the third stage is:\n");
for(i=0;i<=256;i++)
{
printf("%x",B[i]);
if(i%5==0)
printf("\n");
} /*输出第三段*/
fclose(fp);
}
/**********************************************************/
这只是其中一个特例,要求是任意一个x.509证书文件
----------------解决方案--------------------------------------------------------