• 大小: 704KB
    文件类型: .rar
    金币: 2
    下载: 1 次
    发布日期: 2021-05-09
  • 语言: C/C++
  • 标签: x.509  x509  

资源简介

纯属上级考验,自己下的asn代码查看器,网上找的标准, 和x509证书编码规则

资源截图

代码片段和文件信息

#include “stdio.h“
#include “iostream.h“
#include “string“
#include “math.h“
using namespace std;
enum classification
{
universal
application
context_specific
privateclass
};
enum constructed
{
    simplecon
    constructed
};
//程序中未使用
enum type
{
   boolean=1 //[有两个值:false或true]
   interger //[整型值]
   BitString //[0位或多位]
   OctetString//[0字节或多字节]
   null 
   ObejectIdentifier //[相应于一个对象的独特标识数字]
   objectDescriptor //[一个对象的简称]
   External// [ASN.1没有定义的数据类型]
   Real//[实数值]
   Enumerated//[数值列表,这些数据每个都有独特的标识符,作为ASN.1定义数据类型的一部分]
   UTF8String
   Relative_oid
   Sequence//[有序数列,SEQUENCE里面的每个数值都可以是不同类型的,而SEQUENCE OF里是0个或多个类型相同的数据]
   Set  // [无序数列,SET里面的每个数值都可以是不同类型的,而SET OF里是0个或多个类型相同的数据]
   NumericString//[0-9以及空格]
   PrintableString//[A-Z、a-z、0-9、空格以及符号‘()+-./:=?]
   TeletexString//T61String
   VideotexString
   IA5String
   UTCTime //[统一全球时间格式]
   GeneralizedTime
   GraphicString
   VisibleString //ISO646String
   GeneralString
   UniversalString
   CharaterString
   BMPString
   reserved 
   version
   issuerUniqueID
   subjectUniqueID
   external
};                   



int gettype(FILE* cfile )
{
//取byte第87位数值判断 classification
unsigned char byte =fgetc(cfile);
int theclass=0thetype=0;
 theclass=byte>>6;
 thetype=(byte&31);
if(context_specific==theclass)
{
  return 32+thetype;
}
else
{
  return thetype;
}
}
bool IsMulti(unsigned char byte)
{
return (bool)(byte>>7);
}
int getSignlength(unsigned char byte)
{
return byte&127;
}
int ConvertByteToNum(unsigned char* pByteint len)
{
int i=0 tmp result=0;           
for(i=0;i {                           
tmp=pByte[len-i-1]*pow(256i);
result+=tmp;
}   
return result;         
}
int getLength(FILE* cfile)
{
unsigned char byte =fgetc(cfile);
int len=getSignlength(byte);
if(IsMulti(byte))
{
   unsigned char* pByte=new unsigned char[len];
fread(pByte1lencfile);
len=ConvertByteToNum(pBytelen);
delete pByte;
return len;
}
else
    {
     return len;
}
}

void getTypeandLen(FILE* cfileint& thetypeint& len)
{
thetype=gettype(cfile);
    len=getLength(cfile);
}

void getversion(int ver)
{
if(0x00==ver)
{cout<<“证书版本为:v1“< else if(0x01==ver)
{cout<<“证书版本为:v2“< else if(0x02==ver)
{cout<<“证书版本为:v3“<}

#define MAX_LEN 10000
#define MAX_PATH 256
void main()
{
FILE* cfile;
    char strpath[MAX_PATH];
cin>>strpath;
    cfile=fopen(strpath“rb+“);
    if(cfile==NULL)
    {
     cout<<“open cert fail“< return;
}

int thetype=0tmpint=-1len=0;
int namelen=0;
     unsigned char* pByte=NULL;
//获取证书长度字节 
getTypeandLen(cfilethetypelen);
cout<<“证书长度为:“< //获取证书主体长度字节 
    getTypeandLen(cfilethetypelen);
cout<<“证书主体长度为:“< //获取版本号 
    getTypeandLen(cfilethetypelen);
    if(32==thetype)

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       1620  2010-11-30 13:56  x.509证书取公钥\ABC.pfx

     文件        692  2012-01-30 17:22  x.509证书取公钥\Debug\My.cer

     文件     279552  2012-02-21 12:33  x.509证书取公钥\Debug\test.bsc

     文件     241719  2012-02-21 12:33  x.509证书取公钥\Debug\test.exe

     文件     315212  2012-02-21 12:33  x.509证书取公钥\Debug\test.ilk

     文件      19549  2012-02-21 12:33  x.509证书取公钥\Debug\test.obj

     文件    2259832  2012-02-21 12:29  x.509证书取公钥\Debug\test.pch

     文件     582656  2012-02-21 12:33  x.509证书取公钥\Debug\test.pdb

     文件          0  2012-02-21 12:33  x.509证书取公钥\Debug\test.sbr

     文件       7168  2012-02-02 09:08  x.509证书取公钥\Debug\test.suo

     文件      82944  2012-02-21 12:33  x.509证书取公钥\Debug\vc60.idb

     文件     110592  2012-02-21 12:33  x.509证书取公钥\Debug\vc60.pdb

     文件        692  2012-01-30 17:22  x.509证书取公钥\My.cer

     文件       4519  2012-02-21 12:33  x.509证书取公钥\test.cpp

     文件       3381  2012-02-02 09:04  x.509证书取公钥\test.dsp

     文件        516  2012-02-01 17:01  x.509证书取公钥\test.dsw

     文件      41984  2012-02-27 17:13  x.509证书取公钥\test.ncb

     文件      48640  2012-02-27 17:13  x.509证书取公钥\test.opt

     文件       1372  2012-02-21 12:33  x.509证书取公钥\test.plg

     文件        656  2012-02-02 15:01  x.509证书取公钥\xx.cer

     目录          0  2012-02-21 12:33  x.509证书取公钥\Debug

     目录          0  2012-02-27 17:13  x.509证书取公钥

----------- ---------  ---------- -----  ----

              4003296                    22


评论

共有 条评论