-
使用 OpenSSL 的 EVP 介面進行 DES128 加密的邏輯流程如下:
初始化上下文資料結構,指定演算法 (EVP des ede CBC)、金鑰 (key) 和初始化向量 (initvector)。
evp_cipher_ctx_init(&ctx);
新增數字的中間過程呼叫 evp encryptupdate、pinbuffer 和 insize 指定要加密的明文和長度。
該函式從 poutbuffer,outsize 返回加密的密文和長度。
您可以重複呼叫該介面對多個資料塊進行加密。 請注意,當返回值 0 時,所有 EVP 函式都將失敗。
if (0 == ret) goto errorexit;
所有資料塊加密後,呼叫 final 函式獲取最終對齊資料。
if (0 == ret) goto errorexit;
最後返回時不要忘記釋放資源。
errorexit:
evp_cipher_ctx_cleanup(&ctx);
return ret;
解密過程同上,但中間呼叫的函式分別變為 evp decryptinit ex、evp decryptupdate 和 evp decryptfinal。
-
我忘記了密碼,我選擇了匿名,鬱悶。。。
-
因為故障是加密的,會被分組,所以子樑組的長度取決於你的金鑰長度,不足之處將被填補。 因此,加密的字串將大於或等於加密前的長度。
相反,解密字串將小於或等於解密前字串的長度。 渣滓毀了。
-
使用 VS2005 下的 Visual Studio 2005 命令提示符進入控制台模式(自動設定各種環境變數)。
解壓縮 OpenSSL 包並轉到 OpenSSL 目錄。
perl configure vc-win32
嘗試在此目錄下執行命令,否則找不到配置檔案,或指定完整的配置檔案路徑。
ms\do_ms
在解壓目錄下執行ms do ms命令。
在openSSL解壓目錄下執行nmake -f ms的編譯後,編譯完成後。 輸出檔案位於 out32dll 中,包括應用程式可執行檔案、lib 檔案和 dll 檔案。
注意:執行第五步時,CL 編譯器會報錯。 Crypto des ENC 檔案的 Read 是 Posix Name for This Item is Deprecated,建議使用 Read。
呵呵,我不想把OpenSSL中所有的讀取函式都改成讀取。 檢視 CL 錯誤 ** 錯誤 C2220,因此請轉到 MSDN 檢視:
warning treated as error - no object file generated
wx tells the compiler to treat all warnings as errors. since an error occurred, no object or executable file was generated.
這是因為 wx 選項設定為將所有警告視為錯誤,因此...
因此,在 openssl 目錄下開啟 ms 目錄中的檔案,刪除 cflag 的 wx 選項,並儲存它。
-
我好像沒看到它附帶的東西。。。多關注演算法... 等待大牛清除。
-
不需要手動新增,DES的金鑰是八位數字,可以12345678。
-
phrase: 31 32 33 34 35 36 37 38key: 31 32 33 34 35 36 37 38iv:
31 31 31 31 31 31 31 31des_cbc_encrypt cipher: 6e 8b 79 29 82 6f ae de
des_cbc_decrypt phrase: 31 32 33 34 35 36 37 38
以上資料以十六進製數字表示。
你的結果不應該是正確的。
宣告應該放在呼叫的前面,這樣編譯器就知道函式被呼叫的時候是什麼樣子的,如果定義放在呼叫之前,就不能宣告,如果定義放在呼叫之後,沒有宣告,呼叫時會報錯, 並且宣告但不定義編譯好,操作會出錯,例如。 >>>More
執行緒函式應該定義為控制項所在的父視窗類的“靜態成員函式”,並且它的引數應該作為視窗類的物件指標給出,在呼叫 createthread 建立執行緒時,因為執行緒函式的引數不是 void*,所以腔體需要強制執行緒函式為 lpthread start 例程型別, 並且可以通過引數傳入的視窗指標訪問其中的控制項。 >>>More