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

AES加密 with Cryptographic Service Provider (CSP) CryptoAPI

答題得分者是:algo
boss.tw
高階會員


發表:15
回覆:109
積分:194
註冊:2005-05-17

發送簡訊給我
#1 引用回覆 回覆 發表時間:2007-07-02 12:00:33 IP:60.250.xxx.xxx 訂閱
希望研究過 AES 的高手,能給一些指點
小弟搜尋過網路後,嘗試以下流程後,處理後,看起來沒有加密,也就是跟原來的一樣

<textarea name="code" class="cpp" rows="200" cols="60"> #define CryptProvtype PROV_RSA_AES #define ENCRYPT_ALGORITHM CALG_AES_128 CryptAcquireContext( &hCryptProv, // handle to the CSP NULL, // container name NULL, // use the default provider CryptProvtype, // provider type 0) CryptCreateHash(hCryptProv, CALG_MD5, 0, 0, &hHash) CryptHashData(hHash, FilePassword, strlen(FilePassword), 0) CryptDeriveKey(hCryptProv, ENCRYPT_ALGORITHM, hHash, CRYPT_EXPORTABLE, &hKey) CryptEncrypt( hKey, 0, Final_Flag, 0, pbBuffer, &dwCount, dwBufferLen) CryptReleaseContext(hCryptProv,0) </textarea>


如果改成以下定義,處理後就真的有正常加密
#define CryptProvtype PROV_RSA_FULL
#define ENCRYPT_ALGORITHM CALG_RC4

查了一下msdn
在以下路徑發現

AES Provider Algorithms (Windows)

CALG_AES_128 AES block encryption algorithm. Key length: 128 bits.
Windows 2000/NT: This algorithm is not supported.
CALG_AES_192 AES block encryption algorithm. Key length: 192 bits.
Windows 2000/NT: This algorithm is not supported.
CALG_AES_256 AES block encryption algorithm. Key length: 256 bits.
Windows 2000/NT: This algorithm is not supported.

其中 Windows 2000/NT: This algorithm is not supported. 是為什麼
那我該如何使用呢?,查了很久,也沒說明
小弟是 #include "C:\WINDDK\3790.1830\inc\wxp\wincrypt.h"
希望有人幫忙解答,網路上這方面的資料真少呀
編輯記錄
boss.tw 重新編輯於 2007-07-02 13:15:18, 註解 無‧
boss.tw 重新編輯於 2007-07-02 13:21:00, 註解 無‧
boss.tw 重新編輯於 2007-07-02 13:24:34, 註解 無‧
boss.tw 重新編輯於 2007-07-02 13:26:10, 註解 無‧
Stallion
版主


發表:52
回覆:1600
積分:1995
註冊:2004-09-15

發送簡訊給我
#2 引用回覆 回覆 發表時間:2007-07-02 22:25:35 IP:211.22.xxx.xxx 未訂閱
boss.tw
高階會員


發表:15
回覆:109
積分:194
註冊:2005-05-17

發送簡訊給我
#3 引用回覆 回覆 發表時間:2007-07-03 00:05:40 IP:203.204.xxx.xxx 訂閱
Stallion 您好
bruce0211版大的這篇發表,小弟我也拜讀過了
也有加入收藏,無時拿出來研究
但是我還是無法從中,領悟 AES 加密的部份
還望您多多指教,感謝您的回覆
Stallion
版主


發表:52
回覆:1600
積分:1995
註冊:2004-09-15

發送簡訊給我
#4 引用回覆 回覆 發表時間:2007-07-03 00:16:21 IP:211.22.xxx.xxx 未訂閱
不好意思~
因為我看你要用CryptoAPI,所以想到Bruce0211版大有這篇文章,至於我自己沒用過CryptoAPI。
我寫過很多種這類程式,但是我都是使用單獨的函數如ElAES(For Delphi)或者Package如Turbo Power免費的LockBox(For BCB and Delphi)以及DCPCrypt2(For Delphi)。
以上都是免費函數與元件,如果不是非得用CryptoAPI的話,建議可以用看看,個人覺得還不錯!
algo
一般會員


發表:4
回覆:21
積分:10
註冊:2003-04-15

發送簡訊給我
#5 引用回覆 回覆 發表時間:2007-07-11 16:23:03 IP:59.120.xxx.xxx 訂閱
目前M$的CryptoAPI並沒有在Windows XP以下提供AES加解密,
所以在第一步取得CSP的時候就已經失敗,若您真的要測試的話
請到XP sp2下面,應該就可以正常work....

在下也使用很多加解密的library,目前在下覺得Open Source且有
經過NIST認證的Crypto 和OpenSSL都是不錯的選擇,並竟M$
的CryptoAPI太過陽春^^;

一些心得供您參考:)
------
???
boss.tw
高階會員


發表:15
回覆:109
積分:194
註冊:2005-05-17

發送簡訊給我
#6 引用回覆 回覆 發表時間:2007-08-05 11:11:39 IP:203.204.xxx.xxx 訂閱
首先感謝  Stallionalgo 的熱情回覆
過了一個多月,最後考量最接近解答
所以分數給了 algo
再次跟 Stallion 抱歉
ezkuro
一般會員


發表:2
回覆:3
積分:1
註冊:2005-09-24

發送簡訊給我
#7 引用回覆 回覆 發表時間:2007-08-12 10:30:36 IP:125.225.xxx.xxx 訂閱
請問Crypto++應該要如何正確的使用在c++ builder上面
雖然從他的網站看到是支援的
但是它需要一些lib 例如:ADVAPI32.LIB
那些lib好像是visual c 裡面的
lib的格式與c builder用的不同

[Linker Fatal Error] Fatal: Unable to open file 'ADVAPI32.LIB'
[Linker Error] 'C:\PROGRAM FILES\BORLAND\CBUILDER6\PROJECTS\CRYPTO_DH\LIB\ADVAPI32.LIB' contains invalid OMF record, type 0x21 (possibly COFF)
===================引 用 algo 文 章===================
目前M$的CryptoAPI並沒有在Windows XP以下提供AES加解密,
所以在第一步取得CSP的時候就已經失敗,若您真的要測試的話
請到XP sp2下面,應該就可以正常work....

在下也使用很多加解密的library,目前在下覺得Open Source且有
經過NIST認證的Crypto 和OpenSSL都是不錯的選擇,並竟M$
的CryptoAPI太過陽春^^;

一些心得供您參考:)
系統時間:2024-04-26 14:50:51
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!