文章出處:http://blog.csdn.net/delphiwcdj/article/details/6298820html
具體步驟以下:多線程
(1) 下載tomcrypt
tomcrypt 1.17 VS2008+intel C++工程
http://d.download.csdn.net/down/1783339/jackyjkchen
crypt-1.17.rar (11.03 MB) 源代碼
http://www.hackchina.com/cont/118501
Tomcrypt 1.16 and manual
http://download.csdn.net/source/981828
(2) 編譯tomcrypt
用VS2008編譯tomcrypt 1.17 (第一個下載),而後生成 crypt_s.dll 和 crypt_s.lib 文件。
(3) 在本身的工程中使用tomcrypt
在咱們本身的工程中,將 crypt_s.dll 和 crypt_s.lib 文件 分別添加到咱們的工程中:
1) 將crypt_s.dll文件直接放在debug目錄下,即和工程所生成的可執行文件放在一塊兒。
2) 將crypt_s.lib加入到工程中,方法有三種,這裏使用經過代碼的方式加入。
3) 將所須要的頭文件包含到當前工程中,工程上右鍵->屬性->配置屬性->C/C++->附加包含目錄
4) 修改編譯器設置,工程上右鍵->屬性->配置屬性->C/C++->代碼生成->運行庫,設置爲:多線程 DLL (/MD),不然會提示:編譯能夠經過,可是運行報「找不到MSVCR90.dll」的錯誤。
(4) 測試:AES加密測試
/* 下面的程序實現的功能: 將字符串c1用AES方法加密放在c2中,再解密放在c3中,密鑰是myKey */ #include "tomcrypt.h" #pragma comment (lib,"crypt_s.lib") int main(int argc, char* argv[]) { unsigned char myKey[32]= "12345"; // 加密密鑰 symmetric_key skey; // 加密狀態 aes_setup(myKey, 32, 0, &skey); // 加密前初始化狀態(密鑰,密鑰長度,迭代次數(0: 使用推薦值),加密狀態) unsigned char c1[32]="csdn"; // 須要加密的字符串長度任意 unsigned char c2[32]; // 輸出長度>= 輸入長度,分段長度的倍數(這裏就是16的倍數) // 分段加密,每段長度爲16 (通常不可能只有2段,本身寫循環) aes_ecb_encrypt(&c1[0], &c2[0],&skey); aes_ecb_encrypt(&c1[16], &c2[16],&skey); unsigned char c3[32]; aes_setup(myKey, 32, 0, &skey); // 解密前初始化狀態,其實和加密的狀態是徹底一致的 // 分段解密 aes_ecb_decrypt(&c2[0], &c3[0],&skey); aes_ecb_decrypt(&c2[16], &c3[16],&skey); return 0; }
參考:
調用DLL有兩種方法:靜態調用和動態調用
http://www.cnblogs.com/c1230v/articles/1401448.html
找不到MSVCR90.dll、Debug vs Release及cppLapack
http://hi.baidu.com/wpzhao/blog/item/72dc08f77ce9be2a730eeca7.html加密
https://blog.csdn.net/lan120576664/article/details/46045831spa