两个人的电影免费视频_国产精品久久久久久久久成人_97视频在线观看播放_久久这里只有精品777_亚洲熟女少妇二三区_4438x8成人网亚洲av_内谢国产内射夫妻免费视频_人妻精品久久久久中国字幕

一種通用安全加密接口的制作方法

文檔序號:6575667閱讀:430來源:國知局
專利名稱:一種通用安全加密接口的制作方法
技術(shù)領(lǐng)域
本發(fā)明是一種計算機安全應(yīng)用的通用安全加密接口。
在科學(xué)技術(shù)飛速發(fā)展的今天,計算機已廣泛運用于政治、經(jīng)濟、軍事、科研、文化、教育、商業(yè)及工農(nóng)業(yè)生產(chǎn)等各個領(lǐng)域,由于它是有使用方便,能快捷地轉(zhuǎn)發(fā)信息及存儲信息量大等許多優(yōu)點,因此頗受世人的青睞,但在激烈竟爭的環(huán)境下,人們對計算機之間秘密信息的存儲與通信的安全應(yīng)用極為擔心,因此使用加密算法的信息安全產(chǎn)品便應(yīng)運而生了,但目前的信息安全產(chǎn)品在使用加密算法時,將上層應(yīng)用程序和下層的加密算法捆得較死,如果需要更換加密算法,必須要修改源代碼,重新編譯執(zhí)行。生產(chǎn)應(yīng)用程序的廠商,往往要花精力在加密算法的實現(xiàn)上,而生產(chǎn)加密算法的廠商又要花精力在上層應(yīng)用程序上,目前國內(nèi)還沒有對上層應(yīng)用程序和下層加密算法之間接口的相應(yīng)規(guī)范。
本發(fā)明的目的是規(guī)范上層應(yīng)用程序和下層加密算法的接口標準,對上層應(yīng)用程序簡化了各種安全接口,對下層算法模塊作出了相應(yīng)的規(guī)范。能做到在不修改源代碼的情況下,動態(tài),方便的替換安全應(yīng)用的加密算法。
本發(fā)明的方法如

圖1所示,采用一種通用安全加密接口,將上層應(yīng)用程序1和下層加密算法(軟、硬件算法模塊6與驅(qū)動程序7)結(jié)合在一起,形成一個整體。
本發(fā)明具體實施步驟如下1、設(shè)計上層應(yīng)用程序應(yīng)用程序1開發(fā)使用本接口2,需按照一種通用安全加密接口2提供的“Chini-appl.h”、“chini_typee.h”頭文件中提供的應(yīng)用編程接口,首先調(diào)用函數(shù)Chini_start然后才能在需要加解密等處調(diào)用相應(yīng)的接口函數(shù)5最后還要調(diào)用Chini-end。
2、設(shè)計加密算法模塊按照一種通用安全加密接口規(guī)范中對算法模塊接口函數(shù)5標準的規(guī)定、生產(chǎn)算法模塊的廠商提供加密算法實現(xiàn)的動態(tài)庫,它向一種通用安全加密接口提供統(tǒng)一的接口函數(shù)。
3、組合上層應(yīng)用程序1和下層加密算法模塊6應(yīng)用程序1必須通過一種通用安全加密接口2提供的Libaspi庫用配置文件管理命令3配置好配置文件4,這樣才能正確的加載算法模塊6,形成一個整體。將配置文件4放在指定的位置,將加密算法模塊6放到默認路徑“/Chini/Security/algmod/”下,并在配置文件4中正確的配置好應(yīng)用程序使用的類名和加密算法模塊的庫名。
4、通過上述的操作,一個功能完善的安全應(yīng)用就產(chǎn)生了,用戶可以照上層應(yīng)用程序的普通使用方法使用即可。
5、當需要更換加密算法模塊6時,先退出運行的應(yīng)用程序,然后修改配置文件4將應(yīng)用程序?qū)?yīng)的類名的加密算法模塊的庫名改換成的新的加密算法模塊的庫名,然后將新的算法模塊動態(tài)庫放在指定的位置,再啟動應(yīng)用程序,這時就能使用新的加密算法進行加/解密等操作了。
本發(fā)明的接口函數(shù)5包括上層應(yīng)用函數(shù)接口和下層加密算法模塊函數(shù)接口和兩個頭文件“Chini-appl.h”及“Chini_types.h”。上層應(yīng)用函數(shù)接口(5-01~5-12)。下層加密算法模塊函數(shù)接口(5-13~5-22)如下密鑰數(shù)據(jù)結(jié)構(gòu)ALGKEY應(yīng)用程序調(diào)用API函數(shù)所有的密鑰參數(shù)都是一個該結(jié)構(gòu)的指針。
<pre listing-type="program-listing"><![CDATA[typedef struct algkey_st{ unsigned char*key;密鑰指針 int key_type;密鑰類型 int key_len; 密鑰長度}ALGKEY;]]></pre>上層應(yīng)用接口函數(shù)5-01.初始化Chini Sec Interface函數(shù)原型int chini_start(Tokenstruct**token,char*classname,char*instname);參數(shù)token 加密操作標識classname 調(diào)用應(yīng)用的類型名instname調(diào)用應(yīng)用的實例名備注從算法配置文件中根據(jù)應(yīng)用的類型名、應(yīng)用的實例名獲取與該應(yīng)用相應(yīng)的算法庫,并加載相應(yīng)的算法模塊、返回一個token。在引用其它API時,應(yīng)給出相應(yīng)的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ù),應(yīng)用程序申請內(nèi)存,以下同pDataOutLen 輸出數(shù)據(jù)長度,由算法模塊返回,以下同workey工作密鑰結(jié)構(gòu),包括密鑰、密鑰長度、密鑰類型(1表示只有一種密鑰長度,2表示有兩種密鑰長度,3表示有三種密鑰長度)IV 初始向量,其長度與分組長度相同。
EncMode 操作模式1 ECB2 CBC3 OFB4 CFBEncType 加密/解密類型選擇1 加密0 解密備注加密/解密函數(shù),調(diào)用算法模塊中的函數(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ù),調(diào)用算法模塊中的函數(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ù)密鑰結(jié)構(gòu)備注計算校驗碼,調(diào)用算法模塊中的函數(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簽名結(jié)果數(shù)據(jù)SignDataLen 簽名數(shù)據(jù)長度Seckey 簽名者的私有密鑰備注做數(shù)字簽名,調(diào)用算法模塊中的函數(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ù)字簽名作驗證,調(diào)用算法模塊中的函數(shù)_verify(Message,MLen,SignData,SignDataLen,Pubkey)。
5-07.隨機數(shù)函數(shù)原型int chini_rand(Tokenstruct*token,void*RandNum,int RandLen);參數(shù)token加密操作標識RandNum產(chǎn)生的隨機數(shù)RandLen隨機數(shù)長度(byte)
備注隨機數(shù)函數(shù)。調(diào)用算法模塊中的函數(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ù),包括初始化向量,調(diào)用算法模塊中的函數(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ù),應(yīng)用程序申請內(nèi)存,以下同pDataOutLen 輸出數(shù)據(jù)長度,由算法模塊返回,以下同publickey 公鑰備注公鑰加密函數(shù),調(diào)用算法模塊中的函數(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ù),調(diào)用算法模塊中的函數(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初始化向量長度。
算法模塊的屬性結(jié)構(gòu)具體描述如下密鑰長度列表數(shù)據(jù)結(jié)構(gòu)ALG_TBL由于有些加密算法有幾種密鑰長度,所以設(shè)計了該密鑰長度列表結(jié)構(gòu),它是一個鏈表數(shù)據(jù)結(jié)構(gòu)。
<pre listing-type="program-listing"><![CDATA[typedef struct alg_tbl{ int byte_len; 密鑰長度 struct alg_tbl*next;}ALG TBL]]></pre>算法信息數(shù)據(jù)結(jié)構(gòu)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;密鑰列表結(jié)構(gòu) }ALG_INFO;]]></pre>算法模塊屬性數(shù)據(jù)結(jié)構(gòu)AttID<pre listing-type="program-listing"><![CDATA[typedef struct attid_st{char *module_name; 算法模塊名char *module_ver;算法模塊版本號char *module_maker; 算法模塊生產(chǎn)商ALG_INFO block_alg; 分組算法 ALG_INFO pk_alg; 公開密鑰算法 ALG_INFOhash; HASH算法 ALG_INFOmac;MAC算法}AttID;]]></pre>備注算法模塊的屬性函數(shù),可獲取該算法模塊的有關(guān)信息。調(diào)用算法模塊中的函數(shù)_algatt(AttStruct)。
5-12.關(guān)閉Chini SecAPI函數(shù)原型int chini_end(Tokenstruct*token);參數(shù)token 加密操作標識備注關(guān)閉Chini SecAPI函數(shù),釋放內(nèi)存。
下層加密算法模塊函數(shù)接口這些接口函數(shù)都由API中的相應(yīng)函數(shù)調(diào)用,其參數(shù)含義與API中的函數(shù)相同。接口函數(shù)的名字和參數(shù)類型在每一個算法模塊中都是一樣的所有函數(shù)調(diào)用成功都返回0,其它返回值都是調(diào)用出錯。
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,比較以上兩步的結(jié)果,相同則返回真,否則返回錯誤值。
5-15._sign(void*Message,int MsgLen,void*Signature,int*SignatureLen,void*Key)這個函數(shù)完成公鑰密碼算法的簽名運算,包括對消息(Message)的散列運算,用密鑰Key加密散列結(jié)果。
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ù)調(diào)用提供該算法模塊的屬性。
5-19._gerrand(void*Rand,int RandLen)這個函數(shù)調(diào)用產(chǎn)生隨機數(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、應(yīng)用程序;2、一種通用安全加密接口(API);3、配置文件管理命令;4、配置文件;5、函數(shù)接口;6、軟、硬件算法模塊;7、驅(qū)動程序。
本發(fā)明是一種編寫信息安全軟件的方法。它由一組動態(tài)庫、配置文件和對上層應(yīng)用和加密算法模塊的各種安全接口的一系列規(guī)范標準組成,因此根據(jù)應(yīng)用的發(fā)展、規(guī)范也將隨著發(fā)展。因為這是一種方法,一種規(guī)范標準,所以不依據(jù)于特定的操作系統(tǒng)和特定的編程語言。可以用多種編程語言實現(xiàn),如BASIC、PASCAL、FORTRAN、COBOL等,可適用于多種操作系統(tǒng),如LINUX提供了用戶空間和核心空間的接口規(guī)范、UNIX、WINDOWSNT、WINDOWS2000等,針對目前實現(xiàn)實際的情況,我們的相關(guān)文檔中都以C語言作出示例,WINDOWS操作系統(tǒng)作為操作系統(tǒng)平臺。
現(xiàn)舉一例說明設(shè)計上層應(yīng)用軟件在本例中,提供了一個簡單的演示程序,該程序是用C++Builder寫的一個小的圖形化應(yīng)用程序。
為了簡單起見,這里只對對稱加解密部分的源代碼設(shè)計做說明。
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;//這部分代碼將得到的加密密鑰,轉(zhuǎn)換成要求的工作密鑰結(jié)構(gòu)形式 if(chini_start(&amp;token,DEMO_CLASS,DEMO_INSTANCE))//初始化通用加密接口{ Application->MessageBox(″初始化失敗″,″加密″,MB_OK);return; }if(chini_enc(token,enc.in,in_len,enc_out,&amp;out_len, &amp;key,iv,CHINI_CBC,CHINI_ENC))//加密操作{ Application->MessageBox(″加密錯誤″,″加密″,MB_OK); return;}chini_end(token);//關(guān)閉通用加密接口enc_out[out_len]=0;Edit2->Text=(char*)enc_out;//顯示加密結(jié)果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;//這部分將解密密鑰轉(zhuǎn)化成要求的工作密鑰結(jié)構(gòu)形式if(chini_start(&amp;token,DEMO′_CLASS,DEMO_INSTANCE))//初始化通用加密接口 { Application->MessageBox(″初始化失敗″,″解密″,MB_OK);return }if(chini_enc(token,enc.out.out_len,dec_out,&amp;in_len, &amp;key,iv,CHINI_CBC,CHINI_DEC))//解密操作{ Application->MessageBox("解密錯誤″,″解密″,MB_OK); Edit3->Text=0 return;   }′chini_end(token);//關(guān)閉通用加密接口Edit3->Text=(char*)dec_out;//顯示解密結(jié)果;]]></pre>下層加密算法模塊的設(shè)計本例中提供了兩個加密算法模塊,分別是twofish.dll(實現(xiàn)了twofish加密算法)和aes.dll(實現(xiàn)了AES加密算法),它們都是用VC++做的動態(tài)庫。
為了簡單起見,這里只對AES算法模塊的對稱加解密部分的實現(xiàn)源代碼設(shè)計做說明。
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);//調(diào)用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);//調(diào)用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()的形式,這樣,上層應(yīng)用就能通過一種通用加密接口,方便的使用了。
本發(fā)明可以滿足以下三種應(yīng)用形式的安全需要1、計算機之間的安全實時交互通信;2、計算機之間的安全存儲轉(zhuǎn)發(fā)通信;3、計算機本地信息數(shù)據(jù)和文件在安全存儲。同時還可以讓開發(fā)、應(yīng)用的軟件商專注于應(yīng)用系統(tǒng)的開發(fā),無須過多的考慮算法,生產(chǎn)算法的廠商可專注于算法的軟、硬件實現(xiàn),無須考慮各種應(yīng)用的實現(xiàn)。
本發(fā)明將上層應(yīng)用簡化了各種安全接口,對下層算法模塊作出了相應(yīng)的規(guī)范,可在不修改應(yīng)用的情況下方便地變換加密算法。
本發(fā)明可適用于各種計算機安全運用。
權(quán)利要求
1.一種將上層應(yīng)用程序(1)和下層加密算法模塊(6)結(jié)合成一個整體的方法是采用一種通用安全加密接口(2),其特征是按下列步驟實現(xiàn)的設(shè)計上層應(yīng)用程序應(yīng)用程序(1)開發(fā)使用本接口(2),需按照一種通用安全加密接口(2)提供的“Chim-appl.h”、“chini_typee.h”頭文件中提供的應(yīng)用編程接口,首先調(diào)用函數(shù)Chini_start,然后才能在需要加解密等處調(diào)用相應(yīng)的接口函數(shù)(5)最后還要調(diào)用Chini-end。設(shè)計加密算法模塊按照一種通用安全加密接口規(guī)范中對算法模塊接口函數(shù)(5)標準的規(guī)定、生產(chǎn)算法模塊的廠商提供加密算法實現(xiàn)的動態(tài)庫,它向一種通用安全加密接口提供統(tǒng)一的接口函數(shù)。組合上層應(yīng)用程序(1)和下層加密算法模塊(6)應(yīng)用程序(1)必須通過一種通用安全加密接口(2)提供的Libaspi庫用配置文件管理命令(3)配置好配置文件(4),這樣才能正確的加載算法模塊(6),形成一個整體。將配置文件(4)放在指定的位置,將加密算法模塊(6)放到默認路徑“/Chini/Security/algmod/”下,并在配置文件(4)中正確的配置好應(yīng)用程序使用的類名和加密算法模塊的庫名。通過上述的操作,一個功能完善的安全應(yīng)用就產(chǎn)生了,用戶可以照上層應(yīng)用程序的普通使用方法使用即可。當需要更換加密算法模塊(6)時,先退出運行的應(yīng)用程序,然后修改配置文件4將應(yīng)用程序?qū)?yīng)的類名的加密算法模塊的庫名改換成的新的加密算法模塊的庫名,然后將新的算法模塊動態(tài)庫放在指定的位置,再啟動應(yīng)用程序,這時就能使用新的加密算法進行加/解密等操作了。
2.根據(jù)權(quán)利要求1所述一種通用安全加密接口,其特征是接口函數(shù)(5)是包括上層應(yīng)用接口函數(shù)和下層加密算法模塊接口函數(shù)和兩個頭文件“Chini-appl.h”及“Chini_types.h”,上層應(yīng)用接口函數(shù)是初始化Chini sec interface函數(shù)、加解密函數(shù)、散列函數(shù)、求校驗碼函數(shù)、簽名函數(shù)、驗證簽名函數(shù)、隨機數(shù)函數(shù)、得到工作密鑰函數(shù)、公鑰解密函數(shù)、私鑰加密函數(shù)、算法模塊的屬性函數(shù)、關(guān)閉ChinisecAPI函數(shù),下層加密算法模塊接口函數(shù)是_enc、_verify、_sign、_hash、_mac、_algatt、_gerrand、_getworkkey、_publicenc、_privatedec。
全文摘要
一種新的一種通用安全加密接口是對上層應(yīng)用程序簡化了各種安全接口,對下層加密算法模塊作出了相應(yīng)的規(guī)范,可滿足計算機之間的安全實時交互通信,安全存儲轉(zhuǎn)發(fā)通信,本地信息數(shù)據(jù)和文件的安全存儲。對開發(fā)應(yīng)用的軟件廠商可以專注于應(yīng)用系統(tǒng)的開發(fā),無需過多考慮算法,可在不修改應(yīng)用的情況下方便地變換算法;生產(chǎn)算法的廠商可專注于算法的軟硬件實現(xiàn),無需考慮各種應(yīng)用的實現(xiàn)。本發(fā)明應(yīng)用于多種編程語言和各種操作系統(tǒng)的安全加密使用。
文檔編號G06F3/00GK1372192SQ0211355
公開日2002年10月2日 申請日期2002年4月2日 優(yōu)先權(quán)日2002年4月2日
發(fā)明者張建軍, 李成斌, 蔣洪志, 劉鴻力 申請人:成都三零盛安信息系統(tǒng)有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
信丰县| 顺昌县| 宁城县| 景德镇市| 莱芜市| 乐山市| 增城市| 工布江达县| 西吉县| 东阿县| 德保县| 论坛| 赤峰市| 普宁市| 铁岭县| 本溪| 兴文县| 乾安县| 桃江县| 高平市| 呼伦贝尔市| 敦化市| 南郑县| 沈阳市| 临湘市| 屯留县| 枝江市| 宁乡县| 都江堰市| 麻城市| 视频| 罗城| 龙江县| 辽阳市| 南华县| SHOW| 瓮安县| 吉隆县| 长寿区| 泸西县| 萨迦县|