文章出处:http://blog.csdn.net/delphiwcdj/article/details/6298820

具体步骤如下:

(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[]= "";      // 加密密钥
symmetric_key skey;              // 加密状态 aes_setup(myKey, , , &skey);       
    // 加密前初始化状态(密钥,密钥长度,迭代次数(0: 使用推荐值),加密状态) unsigned char c1[]="csdn";         // 需要加密的字符串长度任意
unsigned char c2[];           
    // 输出长度>= 输入长度,分段长度的倍数(这里就是16的倍数) // 分段加密,每段长度为16 (一般不可能只有2段,自己写循环)
aes_ecb_encrypt(&c1[], &c2[],&skey);
aes_ecb_encrypt(&c1[], &c2[],&skey); unsigned char c3[];
aes_setup(myKey, , , &skey);      
    // 解密前初始化状态,其实和加密的状态是完全一致的 // 分段解密
aes_ecb_decrypt(&c2[], &c3[],&skey);
aes_ecb_decrypt(&c2[], &c3[],&skey);
return ;
}

参考: 
调用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/46045831

VS2008下LibTomCrypt 1.17的编译和使用《转》的更多相关文章

  1. Windows7+VS2008 下编译Subversion 1.8.3

    一.需要的软件包 1.python-2.7.5.msi  http://www.python.org/ 2.ActivePerl-5.8.8.822-MSWin32-x86-280952.msi  h ...

  2. linux(以ubuntu为例)下Android利用ant自动编译、修改配置文件、批量多渠道,打包生成apk文件

    原创,转载请注明:http://www.cnblogs.com/ycxyyzw/p/4555328.html  之前写过一篇<windows下Android利用ant自动编译.修改配置文件.批量 ...

  3. Windows下使用Visual Studio 2010编译ffmpeg全过程

    在visual studio 2010中调用ffmpeg http://blog.sina.com.cn/s/blog_4178f4bf01018wqh.html Windows下使用Visual S ...

  4. Linux下搭建 Cocos2d-x-2.1.4 编译环境

    [tonyfield 2013.09.04 ] 参考 Linux下搭建 Cocos2d-x-2.1.4 编译环境 导入 HelloCpp 例程 1. Java 入口 HelloCpp.java Hel ...

  5. 用C写一个web服务器(三) Linux下用GCC进行项目编译

    .container { margin-right: auto; margin-left: auto; padding-left: 15px; padding-right: 15px } .conta ...

  6. 配置 Windows 下的 nodejs C++ 模块编译环境 安装 node-gyp

    配置 Windows 下的 nodejs C++ 模块编译环境 根据 node-gyp 指示的 Windows 编译环境说明, 简单一句话就是 "Python + VC++ 编译环境&quo ...

  7. ubuntu16.04下笔记本自带摄像头编译运行PTAM

    ubuntu16.04下笔记本自带摄像头编译运行PTAM 转载请注明链接:https://i.cnblogs.com/EditPosts.aspx?postid=9014147 个人邮箱:feifan ...

  8. 联盛德 HLK-W806 (一): Ubuntu20.04下的开发环境配置, 编译和烧录说明

    目录 联盛德 HLK-W806 (一): Ubuntu20.04下的开发环境配置, 编译和烧录说明 联盛德 HLK-W806 (二): Win10下的开发环境配置, 编译和烧录说明 联盛德 HLK-W ...

  9. 联盛德 HLK-W806 (二): Win10下的开发环境配置, 编译和烧录说明

    目录 联盛德 HLK-W806 (一): Ubuntu20.04下的开发环境配置, 编译和烧录说明 联盛德 HLK-W806 (二): Win10下的开发环境配置, 编译和烧录说明 联盛德 HLK-W ...

随机推荐

  1. java23种设计模式专攻:生产者-消费者模式的三种实现方式

    公司的架构用到了dubbo.带我那小哥也是个半吊子,顺便就考我生产者消费者模式,顺便还考我23种java设计模式,

  2. UniChat-软件工程小组-第一次作业-选题

    软件工程小组项目文档 小组成员:赵有为.张天善.宋春雨.郭凯璐.孙楠.冯韵瑶 Uni-Chat项目文档 需求分析Need ​ 日常生活中我们在使用Ubuntu等系统时都会因为QQ等聊天工具对基于Lin ...

  3. spring常用的事务传播属性说明

    事务Transaction,就是一组操作数据库的动作集合.事务是现代数据库理论中的核心概念之一.如果一组处理步骤或者全部发生或者一步也不执行,我们称该组处理步骤为一个事务.当所有的步骤像一个操作一样被 ...

  4. Codeforces C. A Simple Task(状态压缩dp)

    题目描述:  A Simple Task time limit per test 2 seconds memory limit per test 256 megabytes input standar ...

  5. P1052 过河[DP]

    题目描述 在河上有一座独木桥,一只青蛙想沿着独木桥从河的一侧跳到另一侧.在桥上有一些石子,青蛙很讨厌踩在这些石子上.由于桥的长度和青蛙一次跳过的距离都是正整数,我们可以把独木桥上青蛙可能到达的点看成数 ...

  6. c++的标准流入流出和使用例子

    参考链接 标准输出流(cout) 预定义的对象 cout 是 iostream 类的一个实例.cout 对象"连接"到标准输出设备,通常是显示屏.cout 是与流插入运算符 < ...

  7. mock工具:mock.js 和vscode faker,moco

    参考:https://www.jianshu.com/p/8453b045544f mock.js主要用于模仿接口返回,可与原生ajax一起使用. 参考:https://www.jianshu.com ...

  8. Oracle-分析函数之排序值rank()和dense_rank()

    聚合函数RANK 和 dense_rank 主要的功能是计算一组数值中的排序值. 在9i版本之前,只有分析功能(analytic ),即从一个查询结果中计算每一行的排序值,是基于order_by_cl ...

  9. Redis-3.2.1集群内网部署

    摘要: Redis-3.2.1集群内网部署 http://rubygems.org国内连不上时的一种Redis集群部署解决方案.不足之处,请广大网友指正,谢谢! 一. 关于redis cluster  ...

  10. vs2010出现红色波浪错误提示但运行通过

    1.环境:xp+VS2010 2.问题:突然发现编辑器里的代码在没有错误的地方提示很多不存在的错误,显示红色波浪线,但能顺利编译运行. 3.解决: 对于32位机来说,先查看注册表: [HKEY_CLA ...