
本文共 3166 字,大约阅读时间需要 10 分钟。
Ubuntu 16.04 上配置 OpenSSL 环境并使用 CodeBlocks 开发加密应用
作为一名学习信息安全的学生,我最近接触了一个基于 OpenSSL 的实验项目。虽然之前我写过一篇关于如何直接使用 OpenSSL.exe 获取 SSL 证书的博客,但这次的实验要求更高一些:需要输入明文,输出加密后的密码。因此,我决定详细记录整个配置过程,并分享给有兴趣的同学们。
一、实验环境搭建
1. 系统环境
我选择使用 Ubuntu 16.04 64 位系统。这是因为 Ubuntu 的稳定性和丰富的包仓库非常适合开发环境搭建。
2. 安装必要的开发工具
在开始之前,需要确保系统中有足够的开发环境工具。我按照以下步骤进行安装:
sudo apt-get install build-essentialsudo apt-get install gdbsudo apt-get install codeblockssudo apt-get install codeblocks-dbg
安装完成后,CodeBlocks 会自动启动。如果不需要 immediately,可以通过 codeblocks
命令启动。
3. 安装 wxWidgets
为了支持 OpenSSL 的 GUI 开发,需要先安装 wxWidgets 库。按照以下命令安装:
sudo apt-get install libwxbase2.8sudo apt-get install libwxbase2.8-devsudo apt-get install libwxgtk2.8-0sudo apt-get install libwxgtk2.8-devsudo apt-get install libwxgtk2.8-dbgsudo apt-get install wx-commonsudo apt-get install wx2.8-headerssudo apt-get install wx2.8-i18n
安装完成后,记得重启终端以确保环境变量生效。
二、配置 OpenSSL 开发环境
1. 安装 OpenSSL
由于 Ubuntu 自带的 OpenSSL 版本较旧,我需要手动安装最新版本。按照以下命令操作:
sudo add-apt-repository ppa:deadsnakes/ppasudo apt-get updatesudo apt-get install libssl-dev
安装完成后,检查 OpenSSL 版本:
openssl version -a
2. 配置 CodeBlocks 的开发环境
在 CodeBlocks 中,新建一个空白项目并命名为 openssl
。右键单击项目,选择 Build Options
,然后在 Search directories
中添加以下路径:
- Compiler Directory:
/usr/local/ssl/lib
- Linker Directory:
/usr/local/ssl/lib
和/usr/lib
在 Linker Settings
中添加以下库:
dl
ssl
crypto
将所有选中的库复制到 Release
版本中。
三、编写加密应用程序
1. 新建 C 文件
在 CodeBlocks 中创建一个新的 C 文件,代码如下:
#include#include #include int main(int argc, char** argv) { unsigned char *keystring = "your_password_here"; DES_cblock key; DES_key_schedule key_schedule; // 生成密钥 if (DES_string_to_key(keystring, &key) != 0) { printf("Failed to convert keystring to key.\n"); return -1; } // 加密明文 unsigned char input[] = "明文需要加密"; size_t len = (sizeof(input) + 7) / 8 * 8; unsigned char *output = malloc(len + 1); DES_cblock ivec; memset((char*)&ivec, 0, sizeof(ivec)); if (DES_cbc_encrypt(input, output, sizeof(input), &key_schedule, &ivec, DES_ENCRYPT) != 0) { printf("Failed to encrypt data.\n"); return -1; } // 输出加密结果 printf("加密结果:"); for (int i = 0; i < len; i++) { printf("%02x", output[i]); } printf("\n"); // 解密过程 memset((char*)&ivec, 0, sizeof(ivec)); if (DES_cbc_encrypt(output, input, len, &key_schedule, &ivec, 0) != 0) { printf("Failed to decrypt data.\n"); return -1; } printf("解密结果:%s\n", input); free(output); return 0;}
四、编译与运行
1. 运行 Build Options
在 CodeBlocks 中,右键单击项目,选择 Build Options
,确保以下设置:
- 搜索目录:添加
usr/local/ssl/lib
和usr/lib
- 链接器选项:添加
usr/local/ssl/lib
和usr/lib
将所有选中的库复制到 Release
版本中。
2. 编译项目
在 CodeBlocks 中,右键单击项目,选择 Build & Run
。如果提示路径不存在,按照提示在对应路径下新建相应的目录。
五、测试与验证
1. 输入明文
运行程序时,输入明文:
./openssl_project <明文>明文>
2. 查看加密结果
程序会输出加密后的十六进制字符串。将其解密后可以验证是否还原了明文。
六、遇到的问题与解决方案
/usr/local/include/x86_64-linux-gun
不是一个目录,可以尝试隐藏该目录并重新创建。七、总结
通过以上步骤,我们成功配置好了 Ubuntu 16.04 系统中的 OpenSSL 开发环境,并通过 CodeBlocks 编写并运行了一个简单的加密应用程序。虽然过程中遇到了不少问题,但通过查阅资料和实验,最终都能迎刃而解。如果有任何疑问或遇到问题,请随时留言,我会尽力帮助你!
发表评论
最新留言
关于作者
