(中行雷威2018.10.6)
(同一个世界,同一个梦想,交流学习C++Builder XE10,传承c++builder的魅力!欢迎各地朋友加入我的QQ群484979943,进群密码“BCB”,同时也请将该群号广为宣传,希望能够广集各方高手,共同进步。如需下载开发工具及源代码请加入我的QQ群。)
【阅读倡议】
1、有问题请留言;
2、没问题请点赞;
3、看连载请加群;
4、下源码请加群;
【开发工具】
1、C++Builder10.2.3 tokyo
2、FMSoft_uniGUI_Complete_Professional_1.10.0build1471(正版)
3、本案例资源下载https://download.csdn.net/download/dlboy2018/10703751
4、也可访问我的QQ文件共享:A02-源代码 下载
背景:
本博客曾在 (15)uniGUI for C++ builder下如何实现AES加解密 介绍了如何混合编译实现AES加密和解密,近日发现(15)中的代码不支持64位项目,因此找到了“爱吃猪头肉”网友提供的各种加解密delphi代码,本文将详细介绍如何配置unigui的64位环境,如何调用AES加解密混合编译成64位项目。
一、安装unigui
1、以默认方式安装FMSoft_uniGUI_Complete_Professional_1.10.0.1471.exe,我是win7 64位系统,安装到C:\Program Files (x86)\FMSoft目录下,然后在C:\Program Files (x86)\FMSoft\Framework\uniGUI下创建win32和win64两个子目录。
2、用delphi开发环境打开C:\Program Files (x86)\FMSoft\Framework\uniGUI下uniGUI_D10_2_Tokyo_PlusGroup.groupproj项目,详见右侧,如下图,逐个选择每个bpl项目,右键,选择options
选择output c/c++,如下图修改。
再逐个选择每个bpl项目,右键选择build;然后再如下图逐个选择带图标的四个项目,右键选择install。
此时已经完成32项目的安装,如果你只需开发32位项目,则关闭保存delphi环境,打开cbuilder开始开发项目了。
3、右键逐个选择各个项目(除了上图带图标的四个bpl项目包),右键options,如下图设置。
再右键逐个选择每个(除了带图标的四个bpl项目包)项目包,分别在平台上右键添加64位平台,再选择64位平台,将其设为**状态,再右键选择bpl包将其右键build.,此时已经完成了64位的编译安装。
二、开发64位项目
1、新建一个项目,保存在D:\myAesCBuilder
2、Project-》options
1)c++ linker->linkwith dynamit RTL=false
2)runtime packages=false
3)c++(shared options) include path:
4)c++(shared options) lib path:
3、将爱吃猪头肉网友的delphi加解密代码拷贝到你的项目根目录下
FlyUtils.AES.ElAES.pas、FlyUtils.AES.pas、FlyUtils.CnXXX.Common.pas(本文仅演示AES加解密,因此只拷贝了AES相关两个代码和一个公共代码),Project-》add to project,将三个代码添加到项目中。然后将本项目添加一个64位平台支持,并将其**位当前输出平台。右键选择Project1.exe,build,将*.pas编译成*.hpp代码。
4、设计主窗口MainForm
UniEdit1用于输入秘钥
UniMemo1用于输入要加密的明文
UniMemo2用于显示加密UniMemo1后的结果
UniMemo3用户显示解密UniMemo2后的结果
Main.cpp开头添加
/*自定义*/
#include "FlyUtils.AES.hpp";
#include "FlyUtils.AES.ElAES.hpp";
#include "FlyUtils.CnXXX.Common.hpp"
void __fastcall TMainForm::UniBitBtn1Click(TObject *Sender)
{
//128位AES加密
TKeyBit KeyBit;
TPaddingMode APaddingMode;
KeyBit=kb128;
APaddingMode=pmZeroPadding;
UniMemo2->Text=AESEncryptStrToHex(UniMemo1->Text.Trim(), UniEdit1->Text, TEncoding::ANSI, TEncoding::UTF8,
KeyBit, UniEdit1->Text, APaddingMode, false,rlCRLF, rlCRLF);
}
//---------------------------------------------------------------------------
void __fastcall TMainForm::UniBitBtn2Click(TObject *Sender)
{
//128位AES解密
TKeyBit KeyBit;
TPaddingMode APaddingMode;
KeyBit=kb128;
APaddingMode=pmZeroPadding;
UniMemo3->Text=AESDecryptStrFromHex(UniMemo2->Text.Trim(), UniEdit1->Text, TEncoding::ANSI, TEncoding::UTF8,
KeyBit, UniEdit1->Text, APaddingMode, false,rlCRLF, rlCRLF);
}
//---------------------------------------------------------------------------
三、运行结果
打开浏览器,输入http://127.0.0.1:8077,如下图所示,左侧是爱吃猪头肉的加解密演示,由图可见,功能很强大,右侧是本例的简单调用演示。本例子采用的AESECB加密128位方式,如果你需要更复杂的加密代码,请参考爱吃猪头肉的综合加解密代码包。
郑重声明:加解密代码版权归网友爱吃猪头肉所有。