專利名稱:一種通用安全加密接口的制作方法
技術領域:
本發(fā)明是一種計算機安全應用的通用安全加密接口。
在科學技術飛速發(fā)展的今天,計算機已廣泛運用于政治、經濟、軍事、科研、文化、教育、商業(yè)及工農業(yè)生產等各個領域,由于它是有使用方便,能快捷地轉發(fā)信息及存儲信息量大等許多優(yōu)點,因此頗受世人的青睞,但在激烈竟爭的環(huán)境下,人們對計算機之間秘密信息的存儲與通信的安全應用極為擔心,因此使用加密算法的信息安全產品便應運而生了,但目前的信息安全產品在使用加密算法時,將上層應用程序和下層的加密算法捆得較死,如果需要更換加密算法,必須要修改源代碼,重新編譯執(zhí)行。生產應用程序的廠商,往往要花精力在加密算法的實現(xiàn)上,而生產加密算法的廠商又要花精力在上層應用程序上,目前國內還沒有對上層應用程序和下層加密算法之間接口的相應規(guī)范。
本發(fā)明的目的是規(guī)范上層應用程序和下層加密算法的接口標準,對上層應用程序簡化了各種安全接口,對下層算法模塊作出了相應的規(guī)范。能做到在不修改源代碼的情況下,動態(tài),方便的替換安全應用的加密算法。
本發(fā)明的方法如
圖1所示,采用一種通用安全加密接口,將上層應用程序1和下層加密算法(軟、硬件算法模塊6與驅動程序7)結合在一起,形成一個整體。
本發(fā)明具體實施步驟如下1、設計上層應用程序應用程序1開發(fā)使用本接口2,需按照一種通用安全加密接口2提供的“Chini-appl.h”、“chini_typee.h”頭文件中提供的應用編程接口,首先調用函數(shù)Chini_start然后才能在需要加解密等處調用相應的接口函數(shù)5最后還要調用Chini-end。
2、設計加密算法模塊按照一種通用安全加密接口規(guī)范中對算法模塊接口函數(shù)5標準的規(guī)定、生產算法模塊的廠商提供加密算法實現(xiàn)的動態(tài)庫,它向一種通用安全加密接口提供統(tǒng)一的接口函數(shù)。
3、組合上層應用程序1和下層加密算法模塊6應用程序1必須通過一種通用安全加密接口2提供的Libaspi庫用配置文件管理命令3配置好配置文件4,這樣才能正確的加載算法模塊6,形成一個整體。將配置文件4放在指定的位置,將加密算法模塊6放到默認路徑“/Chini/Security/algmod/”下,并在配置文件4中正確的配置好應用程序使用的類名和加密算法模塊的庫名。
4、通過上述的操作,一個功能完善的安全應用就產生了,用戶可以照上層應用程序的普通使用方法使用即可。
5、當需要更換加密算法模塊6時,先退出運行的應用程序,然后修改配置文件4將應用程序對應的類名的加密算法模塊的庫名改換成的新的加密算法模塊的庫名,然后將新的算法模塊動態(tài)庫放在指定的位置,再啟動應用程序,這時就能使用新的加密算法進行加/解密等操作了。
本發(fā)明的接口函數(shù)5包括上層應用函數(shù)接口和下層加密算法模塊函數(shù)接口和兩個頭文件“Chini-appl.h”及“Chini_types.h”。上層應用函數(shù)接口(5-01~5-12)。下層加密算法模塊函數(shù)接口(5-13~5-22)如下密鑰數(shù)據(jù)結構ALGKEY應用程序調用API函數(shù)所有的密鑰參數(shù)都是一個該結構的指針。
<pre listing-type="program-listing"><![CDATA[typedef struct algkey_st{ unsigned char*key;密鑰指針 int key_type;密鑰類型 int key_len; 密鑰長度}ALGKEY;]]></pre>上層應用接口函數(shù)5-01.初始化Chini Sec Interface函數(shù)原型int chini_start(Tokenstruct**token,char*classname,char*instname);參數(shù)token 加密操作標識classname 調用應用的類型名instname調用應用的實例名備注從算法配置文件中根據(jù)應用的類型名、應用的實例名獲取與該應用相應的算法庫,并加載相應的算法模塊、返回一個token。在引用其它API時,應給出相應的token。
5-02.加解密函數(shù)原型int chini_enc(Tokenstruct*token,void*pDataIn,int pDataInLen,void*pDataOut,int*pDataOutLen,void*workey,void*IV,int EncMode,int EncType);參數(shù)token 加密操作標識pDatIn輸入數(shù)據(jù)pDataInLen輸入數(shù)據(jù)長度pDataOut 輸出數(shù)據(jù),應用程序申請內存,以下同pDataOutLen 輸出數(shù)據(jù)長度,由算法模塊返回,以下同workey工作密鑰結構,包括密鑰、密鑰長度、密鑰類型(1表示只有一種密鑰長度,2表示有兩種密鑰長度,3表示有三種密鑰長度)IV 初始向量,其長度與分組長度相同。
EncMode 操作模式1 ECB2 CBC3 OFB4 CFBEncType 加密/解密類型選擇1 加密0 解密備注加密/解密函數(shù),調用算法模塊中的函數(shù)_enc(pDataIn,pDataInLen,pDataOut,pDataOutLen,workey,IV EncMode,EncType)。
5-03.散列函數(shù)原型int chini_hash(Tokenstruct*token,void*pDataIn,int pDataInLen,void*pDataOut,int*pDataOutLen,void*HashIv);
參數(shù)token加密操作標識pDataIn 輸入數(shù)據(jù)pDataInLen 輸入數(shù)據(jù)長度pDataOut 輸出數(shù)據(jù)pDataOutLen 輸出數(shù)據(jù)長度HashIv 散列初始向量備注散列函數(shù),調用算法模塊中的函數(shù)_hash(pDataIn,pDataInLen,pDataOut,pDataOutLen,HashIv)。
5-04.求校驗碼函數(shù)原型int chini_mac(Tokenstruct*token,void*pDataIn,int pDataInLen,void*pDataOut,init*pDataOutLen,void*MacKey);參數(shù)token加密操作標識pDataIn 輸入數(shù)據(jù)pDataInLen 輸入數(shù)據(jù)長度pDataOut 輸出數(shù)據(jù)pDataOutLen 輸出數(shù)據(jù)長度MacKey 校驗函數(shù)密鑰結構備注計算校驗碼,調用算法模塊中的函數(shù)_mac(pDataIn,pDataInLen,pDataOut,pDataOutLen,MacKey)。
5-05.簽名函數(shù)原型int chini_sign(Tokenstruct*token,void*Message,int MLen,void*SignData,int*SignDataLen,void*Seckey);參數(shù)
token 加密操作標識Message 需要簽名的消息MLen消息的長度SignData簽名結果數(shù)據(jù)SignDataLen 簽名數(shù)據(jù)長度Seckey 簽名者的私有密鑰備注做數(shù)字簽名,調用算法模塊中的函數(shù)_sign(Message,MLen,SignData,SignDataLen,Seckey)。
5-06.驗證簽名函數(shù)原型int chini_verify(Tokenstruct*token,void*Message,int MLen,void*SignData,intSignLen,void*Pubkey);參數(shù)token 加密操作標識Message 需要驗證簽名的消息MLen消息的長度Pubkey簽名者的公開密鑰SignData簽名數(shù)據(jù)SignDataLen 簽名數(shù)據(jù)長度備注對數(shù)字簽名作驗證,調用算法模塊中的函數(shù)_verify(Message,MLen,SignData,SignDataLen,Pubkey)。
5-07.隨機數(shù)函數(shù)原型int chini_rand(Tokenstruct*token,void*RandNum,int RandLen);參數(shù)token加密操作標識RandNum產生的隨機數(shù)RandLen隨機數(shù)長度(byte)
備注隨機數(shù)函數(shù)。調用算法模塊中的函數(shù)_gerrand(RandNum,RandLen)5-08.得到工作密鑰函數(shù)原型int chini_getworkkey(TokenStruct*token,void*workkey,int*keylen,void*iv,int*ivlen,int flag)參數(shù)token 加密操作標識workkey 工作密鑰keylen 工作密鑰長度iv 初始化向量ivlen 初始化向量長度flag加解密標志備注得到工作密鑰函數(shù),包括初始化向量,調用算法模塊中的函數(shù)int_getworkkey(void*workkey,int*keylen,void*iv,int*ivlen,int flag)5-09.公鑰加密函數(shù)原型int chini_publicenc(TokenStruct*token,void*pDataIn,int pDataInLen,void*pDataOut,int*pDataOutLen,void*publickey)參數(shù)token加密操作標識pDataIn 輸入數(shù)據(jù)pDataInLen 輸入數(shù)據(jù)長度pDataOut 輸出數(shù)據(jù),應用程序申請內存,以下同pDataOutLen 輸出數(shù)據(jù)長度,由算法模塊返回,以下同publickey 公鑰備注公鑰加密函數(shù),調用算法模塊中的函數(shù)
int_publicenc(void*pDataIn,int pDataInLen,void*pDataOut,int*pDataOutLen,void*publickey)5-10.私鑰解密函數(shù)原型int chini_privatedec(TokenStruct*token,void*pDataIn,int pDataInLen,void*pDataOut,int*pDataOutLen,void*privatekey)參數(shù)token加密操作標識pDataIn 輸入數(shù)據(jù)pDataInLen 輸入數(shù)據(jù)長度pDataOut 輸出數(shù)據(jù)pDataOutLen 輸出數(shù)據(jù)長度privatekey 私鑰備注私鑰解密函數(shù),調用算法模塊中的函數(shù)int_privatedec(void*pDataIn,int pDataInLen,void*pDataOut,int*pDataOutLen,void*privatekey)5-11.算法模塊的屬性函數(shù)原型int chini_algatt(Tokenstruct*token,AttID*AttStruct);參數(shù)token加密操作標識AttStruct算法模塊的屬性算法模塊的屬性包括模塊名稱、模塊版本號、制造商、對稱算法審批號、對稱算法支持的密鑰長度列表、非對稱算法審批號、非對稱算法支持密鑰長度列表、Hash函數(shù)審批號、Hash函數(shù)初始化向量長度、MAC初始化向量長度。
算法模塊的屬性結構具體描述如下密鑰長度列表數(shù)據(jù)結構ALG_TBL由于有些加密算法有幾種密鑰長度,所以設計了該密鑰長度列表結構,它是一個鏈表數(shù)據(jù)結構。
<pre listing-type="program-listing"><![CDATA[typedef struct alg_tbl{ int byte_len; 密鑰長度 struct alg_tbl*next;}ALG TBL]]></pre>算法信息數(shù)據(jù)結構ALG_INFO包括分組算法、公開密鑰算法、HASH、MAC。
<pre listing-type="program-listing"><![CDATA[tvpedef struct alg_st{ char*alg_name; 算法名 char*alg_serial;算法審批號 int key_type; 密鑰類型值含義 1 一種密鑰長度 2 兩種密鑰長度 3 三種密鑰長度 4 任意密鑰長度intblock_byte_len;分組算法分組長度(或HASH值長度、MAC值長度)ALG_TBL key;密鑰列表結構 }ALG_INFO;]]></pre>算法模塊屬性數(shù)據(jù)結構AttID<pre listing-type="program-listing"><![CDATA[typedef struct attid_st{char *module_name; 算法模塊名char *module_ver;算法模塊版本號char *module_maker; 算法模塊生產商ALG_INFO block_alg; 分組算法 ALG_INFO pk_alg; 公開密鑰算法 ALG_INFOhash; HASH算法 ALG_INFOmac;MAC算法}AttID;]]></pre>備注算法模塊的屬性函數(shù),可獲取該算法模塊的有關信息。調用算法模塊中的函數(shù)_algatt(AttStruct)。
5-12.關閉Chini SecAPI函數(shù)原型int chini_end(Tokenstruct*token);參數(shù)token 加密操作標識備注關閉Chini SecAPI函數(shù),釋放內存。
下層加密算法模塊函數(shù)接口這些接口函數(shù)都由API中的相應函數(shù)調用,其參數(shù)含義與API中的函數(shù)相同。接口函數(shù)的名字和參數(shù)類型在每一個算法模塊中都是一樣的所有函數(shù)調用成功都返回0,其它返回值都是調用出錯。
5-13.enc(void*Message,int MsgLen,void*Output,int*OutputLen,void*Workey,void*IV,int EncMode,int EncType)這個函數(shù)完成分組密碼算法各種操作方式的加/解密運算。根據(jù)參數(shù)EncType的值決定做加密還是解密,生成加密或解密子密鑰,然后再根據(jù)參數(shù)EncMode的值選擇操作方式。
5-14.verify(void*Message,int MsgLen,void*Signature,int SignatureLen,void*Key)這個函數(shù)完成公鑰密碼算法的驗證運算,包括對消息(Message)的散列運算,用密鑰Key解密簽名值Signature,比較以上兩步的結果,相同則返回真,否則返回錯誤值。
5-15._sign(void*Message,int MsgLen,void*Signature,int*SignatureLen,void*Key)這個函數(shù)完成公鑰密碼算法的簽名運算,包括對消息(Message)的散列運算,用密鑰Key加密散列結果。
5-16._hash(void*Message,int MsgLen,void*Hash,int*HashLen,void*HashIv)這個函數(shù)完成散列運算,得到散列值。
5-17._mac(void*Message,int MsgLen,void*Output,int*OutputLen,void*MacIv)這個函數(shù)計算消息的校驗碼。
5-18._algatt(AttId*AttStruct)這個函數(shù)調用提供該算法模塊的屬性。
5-19._gerrand(void*Rand,int RandLen)這個函數(shù)調用產生隨機數(shù)。
5-20._getworkkey(void*workkey,int*keylen,void*iv,int*ivlen,int flag)這個函數(shù)完成得到對稱加解密時所需的工作密鑰和初始化向量。根據(jù)參數(shù)flag的值決定是得到加密還是解密所需的工作密鑰和初始化向量。
5-21._publicenc(void*pDataIn,int pDataInLen,void*pDataOut,int*pDataOutLen,void*publickey)這個函數(shù)完成公鑰密碼算法(非對稱密碼算法)的公鑰加密運算。使用輸入的公鑰對輸入的數(shù)據(jù)進行非對稱加密。
5-22._privatedec(void*pDataIn,int pDataInLen,void*pDataOut,int*pDataOutLen,void*privatekey)這個函數(shù)完成公鑰密碼算法(非對稱密碼算法)的私鑰解密運算。使用私鑰對用公鑰加密過的輸入數(shù)據(jù)進行非對稱解密。
說明以上接口函數(shù)中"_algatt( )"在每一個算法模塊中都必須提供,其它接口函數(shù)是可選的,并非每個算法模塊都必須提供全部的接口函數(shù)功能。
圖1、一稀通用安全加密接口功能框架圖。
1、應用程序;2、一種通用安全加密接口(API);3、配置文件管理命令;4、配置文件;5、函數(shù)接口;6、軟、硬件算法模塊;7、驅動程序。
本發(fā)明是一種編寫信息安全軟件的方法。它由一組動態(tài)庫、配置文件和對上層應用和加密算法模塊的各種安全接口的一系列規(guī)范標準組成,因此根據(jù)應用的發(fā)展、規(guī)范也將隨著發(fā)展。因為這是一種方法,一種規(guī)范標準,所以不依據(jù)于特定的操作系統(tǒng)和特定的編程語言。可以用多種編程語言實現(xiàn),如BASIC、PASCAL、FORTRAN、COBOL等,可適用于多種操作系統(tǒng),如LINUX提供了用戶空間和核心空間的接口規(guī)范、UNIX、WINDOWSNT、WINDOWS2000等,針對目前實現(xiàn)實際的情況,我們的相關文檔中都以C語言作出示例,WINDOWS操作系統(tǒng)作為操作系統(tǒng)平臺。
現(xiàn)舉一例說明設計上層應用軟件在本例中,提供了一個簡單的演示程序,該程序是用C++Builder寫的一個小的圖形化應用程序。
為了簡單起見,這里只對對稱加解密部分的源代碼設計做說明。
1、對稱加密部分源代碼<pre listing-type="program-listing"><![CDATA[……in_len=Edit1->GetTextLen(); in_len++; Edit1->GetTextBuf(enc_in,in_len);//這部分代碼,得到了輸入的要加密的數(shù)據(jù)和長度Size=Edit4->GetTextLen();Size++;Edit4->GetTextBuf(wkey,Size);//這部分代碼,得到了輸入的加密密鑰和長度for(i=Size;i<32;i++) wkey[i]=0xbb;key.key=wkey;key.key_type=1;key.key_len=16;//這部分代碼將得到的加密密鑰,轉換成要求的工作密鑰結構形式 if(chini_start(&token,DEMO_CLASS,DEMO_INSTANCE))//初始化通用加密接口{ Application->MessageBox(″初始化失敗″,″加密″,MB_OK);return; }if(chini_enc(token,enc.in,in_len,enc_out,&out_len, &key,iv,CHINI_CBC,CHINI_ENC))//加密操作{ Application->MessageBox(″加密錯誤″,″加密″,MB_OK); return;}chini_end(token);//關閉通用加密接口enc_out[out_len]=0;Edit2->Text=(char*)enc_out;//顯示加密結果Edit3->Text=NULL ……]]></pre>2.對稱解密部分源代碼<pre listing-type="program-listing"><![CDATA[…… Size=Edit4->GetTextLen();Size++;Edit4->GetTextBuf(wkey,Size);if(Size<32) ′for(i=Size;i<32;i++) wkey[i]=Oxbb; key.key=wkey; key.key_type=1; key.key_len=16;//這部分將解密密鑰轉化成要求的工作密鑰結構形式if(chini_start(&token,DEMO′_CLASS,DEMO_INSTANCE))//初始化通用加密接口 { Application->MessageBox(″初始化失敗″,″解密″,MB_OK);return }if(chini_enc(token,enc.out.out_len,dec_out,&in_len, &key,iv,CHINI_CBC,CHINI_DEC))//解密操作{ Application->MessageBox("解密錯誤″,″解密″,MB_OK); Edit3->Text=0 return; }′chini_end(token);//關閉通用加密接口Edit3->Text=(char*)dec_out;//顯示解密結果;]]></pre>下層加密算法模塊的設計本例中提供了兩個加密算法模塊,分別是twofish.dll(實現(xiàn)了twofish加密算法)和aes.dll(實現(xiàn)了AES加密算法),它們都是用VC++做的動態(tài)庫。
為了簡單起見,這里只對AES算法模塊的對稱加解密部分的實現(xiàn)源代碼設計做說明。
1、AES加/解密函數(shù)接口_enc()實現(xiàn)部分源代碼<pre listing-type="program-listing"><![CDATA[int_enc(void*pDataIn,int pDataInLen,void*pDataOut,int*pDataOutLen,void*workey,void*IV,int EncMode,int EncType) { ALGKEY*wkey=workey; int loop,ij,lastlen; short end; u4byte myIV[4],*tmp=NULL; u4byte*pIV=(u4byte*)IV;for(i=0;i<4;i++) myIV[i]=pIV[i];switch(EncMode){ case 1//ECB,沒有對這種加密模式進行實現(xiàn){ printf(″ECB is used.″); set_key((u4byte*)wkey->key,(u4byte)wkey->key_len*8); switch(EncType){ case 1 { } case 0 { } } return(1); } case 2//CBC,對這種加密模式的實現(xiàn){set_key((u4byte*)wkey->key;(u4byte)wkey->key_len*8);switch(EncType) { case 1//ENC,加密操作的實現(xiàn) { u4byte*pOut=(u4byte*)pDataOut;BYTE*p=(BYTE*)malloc(pDataInLen+16);if(!p)return-1;memcpy(p,pDataIn,pDataInLen);printf(″\nNow CBC-ENC is tarting…\n″);lastlen=pDataInLen%16;end=16-lastlen;for(i=0;i<=end-1;i++) *(p+pDataInLen+i)=end;//分組,填充 loop=(pDataInLen+end)/16;tmp=(u4byte*)p;for(i=0;i<loop;i++) { for(j=0;j<=3;j++) { tmp[j]^=(*(myIV+j));//異或運算 } encrypt(tmp,pOut);//調用AES加密函數(shù)for(j=0;j<4;j++) myIV[j]=pOut[j]; pOut+=4;tmp+=4; }*pDataOutLen=pDataInLen+end;free(p);return 0; }case 0//DEC,解密操作的實現(xiàn) {,u4byte *pOut=(u4byte*)pDataOut; if(pDataInLen%16)return-1; Printf(″\nNow CBC-DEC is starting…\n″); loop=pDataInLen/16; tmp=(u4byte*)pDataIn; for(i=0;i<loop;i++) { decrypt(tmp,pOut);//調用AES解密函數(shù) for(j=0;j<=3;j++){ pOut[j]^=myIV[j]; myIV[j]=tmp[j]; }tmp+=4;pOut+=4; } end=(BYTE)(*((BYTE*)pDataOut+pDataInLen-1)); if((end>=16)‖(end<0)) {printf(″Errorthis is end--%d\n″,end);return-1 } for(i=1;i<end;i++) if((BYTE)(*((BYTE*)pDataOut+pDataInLen-1-i))?。絜nd){ return-1; } *pDataOutLen=pDataInLen-end; return 0;} return-1; } case 3//OFB,,沒有對這種加密模式進行實現(xiàn) { printf(″ErrorOFB is not used″); return(-3); } case 4//CFB,,沒有對這種加密模式進行實現(xiàn) { printf(″ErrorCFB is not used.″); return(-4); } default return(-5); } } }]]></pre>將AES算法的加解密實現(xiàn),按通用加密接口對算法模塊的規(guī)范,封裝成_enc()的形式,這樣,上層應用就能通過一種通用加密接口,方便的使用了。
本發(fā)明可以滿足以下三種應用形式的安全需要1、計算機之間的安全實時交互通信;2、計算機之間的安全存儲轉發(fā)通信;3、計算機本地信息數(shù)據(jù)和文件在安全存儲。同時還可以讓開發(fā)、應用的軟件商專注于應用系統(tǒng)的開發(fā),無須過多的考慮算法,生產算法的廠商可專注于算法的軟、硬件實現(xiàn),無須考慮各種應用的實現(xiàn)。
本發(fā)明將上層應用簡化了各種安全接口,對下層算法模塊作出了相應的規(guī)范,可在不修改應用的情況下方便地變換加密算法。
本發(fā)明可適用于各種計算機安全運用。
權利要求
1.一種將上層應用程序(1)和下層加密算法模塊(6)結合成一個整體的方法是采用一種通用安全加密接口(2),其特征是按下列步驟實現(xiàn)的設計上層應用程序應用程序(1)開發(fā)使用本接口(2),需按照一種通用安全加密接口(2)提供的“Chim-appl.h”、“chini_typee.h”頭文件中提供的應用編程接口,首先調用函數(shù)Chini_start,然后才能在需要加解密等處調用相應的接口函數(shù)(5)最后還要調用Chini-end。設計加密算法模塊按照一種通用安全加密接口規(guī)范中對算法模塊接口函數(shù)(5)標準的規(guī)定、生產算法模塊的廠商提供加密算法實現(xiàn)的動態(tài)庫,它向一種通用安全加密接口提供統(tǒng)一的接口函數(shù)。組合上層應用程序(1)和下層加密算法模塊(6)應用程序(1)必須通過一種通用安全加密接口(2)提供的Libaspi庫用配置文件管理命令(3)配置好配置文件(4),這樣才能正確的加載算法模塊(6),形成一個整體。將配置文件(4)放在指定的位置,將加密算法模塊(6)放到默認路徑“/Chini/Security/algmod/”下,并在配置文件(4)中正確的配置好應用程序使用的類名和加密算法模塊的庫名。通過上述的操作,一個功能完善的安全應用就產生了,用戶可以照上層應用程序的普通使用方法使用即可。當需要更換加密算法模塊(6)時,先退出運行的應用程序,然后修改配置文件4將應用程序對應的類名的加密算法模塊的庫名改換成的新的加密算法模塊的庫名,然后將新的算法模塊動態(tài)庫放在指定的位置,再啟動應用程序,這時就能使用新的加密算法進行加/解密等操作了。
2.根據(jù)權利要求1所述一種通用安全加密接口,其特征是接口函數(shù)(5)是包括上層應用接口函數(shù)和下層加密算法模塊接口函數(shù)和兩個頭文件“Chini-appl.h”及“Chini_types.h”,上層應用接口函數(shù)是初始化Chini sec interface函數(shù)、加解密函數(shù)、散列函數(shù)、求校驗碼函數(shù)、簽名函數(shù)、驗證簽名函數(shù)、隨機數(shù)函數(shù)、得到工作密鑰函數(shù)、公鑰解密函數(shù)、私鑰加密函數(shù)、算法模塊的屬性函數(shù)、關閉ChinisecAPI函數(shù),下層加密算法模塊接口函數(shù)是_enc、_verify、_sign、_hash、_mac、_algatt、_gerrand、_getworkkey、_publicenc、_privatedec。
全文摘要
一種新的一種通用安全加密接口是對上層應用程序簡化了各種安全接口,對下層加密算法模塊作出了相應的規(guī)范,可滿足計算機之間的安全實時交互通信,安全存儲轉發(fā)通信,本地信息數(shù)據(jù)和文件的安全存儲。對開發(fā)應用的軟件廠商可以專注于應用系統(tǒng)的開發(fā),無需過多考慮算法,可在不修改應用的情況下方便地變換算法;生產算法的廠商可專注于算法的軟硬件實現(xiàn),無需考慮各種應用的實現(xiàn)。本發(fā)明應用于多種編程語言和各種操作系統(tǒng)的安全加密使用。
文檔編號G06F3/00GK1372192SQ0211355
公開日2002年10月2日 申請日期2002年4月2日 優(yōu)先權日2002年4月2日
發(fā)明者張建軍, 李成斌, 蔣洪志, 劉鴻力 申請人:成都三零盛安信息系統(tǒng)有限公司