線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1872
推到 Plurk!
推到 Facebook!

[推薦]用C++Builder建立數位簽章

 
axsoft
版主


發表:681
回覆:1056
積分:969
註冊:2002-03-13

發送簡訊給我
#1 引用回覆 回覆 發表時間:2002-07-24 16:30:12 IP:61.218.xxx.xxx 未訂閱

用C Builder創建數字簽名

作者:C Builder開發者® 2000年06月01日 站長:唐朝 參考網頁: http://bcbdev.myetang.com/bcjq/bcjq028.htm 如果你在網絡上傳遞一份數據,但卻存在著種種不安全的因素,使你對數據能否原封不動地到達目的地而心存疑惑,這時,你就可以給數據加上數字簽名,從而使對方可以通過驗證簽名來檢查你所傳過去的數據是否已被他人修改。 一、程序原理 數字簽名的工作原理還是比較簡單的,它是根據你所提供的原始數據,經過復雜的算法,產生特定的數據簽名,對方通過同樣的過程也產生簽名,如果數據已被修改,那麼就不可能得到兩份一模一樣的簽名,從而就可判斷數據已被他人修改。編程人員利用Windows的CAPI接口,就可以實現數據的加密、解密和數字簽名。 二、程序清單 下面用C++ Builder的語句來看一下它的具體實現過程。 先來創建數字簽名,假定其數據來自於一個文件。 //變量聲明: HCRYPTPROV hProv﹔ // CSP的句柄 HCRYPTHASH hHash﹔ // 散列的句柄 const int BUFFER=4096; // 緩衝區大小常數 BYTE pBuffer[BUFFER]; // 存放讀文件內容的緩衝區 BYTE pSignature[256]; // 存放簽名的緩衝區 DWORD dSignatureLen=256; // 簽名的長度 TFileStream *sourceFile﹔ // 一個文件流 if(!CryptAcquireContext(&hProv,NULL,NULL,PROV─RSA─FULL,0)) // 連接默認的CSP,接受它的句柄放入hProv { // 錯誤處理 } if(!CryptCreateHash(hProv,CALG─MD5,0,0,&hHash)) // 創建一個散列對象,得到它的句柄放入hHash { // 錯誤處理 } do { dReadLen=sourceFile->Read(pBuffer,BUFFER); if(!CryptHashData(hHash,pBuffer,dReadLen,0)) // 根據文件的內容計算散列值 { // 錯誤處理 } }while(!(dReadLenRead(pBuffer,BUFFER); if(!CryptHashData(hHash,pBuffer,dReadLen,0)) // 根據文件的內容計算散列值 { // 錯誤處理 } }while(!(dReadLen 時間就是金錢---[ 發問前請先找找舊文章]
系統時間:2024-04-19 9:43:30
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!