安装LockBox 3.7.0,用LockBox加密解密!
LockBox 官 方 网 站:http://lockbox.seanbdurkin.id.au/HomePage
LockBox的Github 网址:https://github.com/SeanBDurkin/tplockbox
LockBox 3.7.0 下 载:https://github.com/SeanBDurkin/tplockbox/archive/master.zip
LockBox3.7.0的安装:
1,解压缩下载的LockBox3.7.0压缩包,把压缩包内所有东西放入你想要放的目录中,我放到了:“C:\DelphiLib\LockBox3.7.0”中。
2,把“C:\DelphiLib\LockBox3.7.0\run”加入你的Delphi的"library"中。点击菜单“Tools”->"Options",在随手弹出的对话框中,选择左侧的“Delphi Options”->"Library",随后点击右侧“Library path”下面右侧的按钮,随后加入上面的目录。注意:这个目录是我自己存放LockBox3.7.0的地方,你应该换成你自己存放LockBox3.7.0的对应目录!
3,编译和安装LockBox3.7.0。
A,打开你使用的Delphi对应的运行时工程目录,我使用Delphi XE8,对应的目录是“C:\DelphiLib\LockBox3.7.0\packages\XE8”,随后把工程组文件直接拖入Delphi XE8里面。
B,鼠标右键工程组,随后点击右键菜单“Build ALL”。
注意:如果这个时候出错了,查看出错的关键字,我第一次编译时候出错了,这个关键字不对,随后我添加上面的路径到library里面后,再次编译,发现关键字被修改错误了,改正成Delphi正确的关键字就可以了。下图我列举了我当时出现的错误状况,就是关键字被篡改了!!
C,安装LockBox,鼠标右键“dclTP_LockBox3_XE8.bpl”,点击“install”,如果一切顺利,你应该安装上了。
到现在,我们就已经成功安装了LockBox3.7.0了,如果你不去修改先前版本LockBox的代码,直接使用没有问题,如果你想修改先前版本LockBox的代码,一大堆问题,先看看问题,随后我告诉你如何解决!!
错误截图:
解决方法:
1,查看“C:\DelphiLib\LockBox3.7.0\work-products\ephemeral\dcu\XE8\Win32”目录中DCU文件名称,发现都是“TPLB3.Codec.dcu”这样的格式了,和Delphi目前最新的单元名称是不是一样?
2,把所有有错误的单元文件名修改成“TPLB3.”+原来下划线后面的单元文件名,例如:原单元文件名“uTPLb_Signatory”,修改成“TPLB3.Signatory”,马上错误消失,一直按照这样方法修改所有错误,随后编译,完全正确!
加密解密演示例子:
完整例子下载:http://download.csdn.net/detail/sunylat/9728033
unit Unit1; interface uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants,
System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.ExtCtrls; type
TForm2 = class(TForm)
Panel1: TPanel;
Panel2: TPanel;
clearLogBtn: TButton;
logMemo: TMemo;
Splitter1: TSplitter;
Panel3: TPanel;
Button2: TButton;
Memo1: TMemo;
Button1: TButton;
Memo2: TMemo;
procedure clearLogBtnClick(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private declarations } // 加密字符串
procedure EncryptString(keyStr, Plaintext: string; var CipherText: String); // 解密字符串
procedure DecryptString(keyStr: string; var Plaintext: string;
CipherText: String); public
{ Public declarations }
procedure MyLog(tempLog: string); // log方法
end; const
EncryptKey = 'lockBoxKey'; // 测试用的加密解密key,你可以换成任意你想用的key var
Form2: TForm2; logInfo: string; // log信息 implementation {$R *.dfm} uses
TPLB3.Signatory, TPLB3.Codec, TPLB3.BaseNonVisualComponent,
TPLB3.CryptographicLibrary, TPLB3.Constants; // 加密字符串
procedure TForm2.EncryptString(keyStr, Plaintext: string;
var CipherText: String);
var
Codec2: TCodec;
CryptographicLibrary2: TCryptographicLibrary;
begin
try
Codec2 := TCodec.Create(nil);
CryptographicLibrary2 := TCryptographicLibrary.Create(nil);
Codec2.CryptoLibrary := CryptographicLibrary2;
// 这是动态创建对象能够工作的关键
Codec2.StreamCipherId := TPLB3.Constants.BlockCipher_ProgId; Codec2.BlockCipherId := TPLB3.Constants.DES_ProgId;
Codec2.ChainModeId := TPLB3.Constants.ECB_ProgId; // 设置密码
Codec2.Password := Trim(keyStr); // 加密字符串
Codec2.EncryptString(Plaintext, CipherText, TEncoding.Default); finally
Codec2.Free;
CryptographicLibrary2.Free;
end;
end; // 解密字符串
procedure TForm2.DecryptString(keyStr: string; var Plaintext: string;
CipherText: String);
var
Codec2: TCodec;
CryptographicLibrary2: TCryptographicLibrary;
begin
try
Codec2 := TCodec.Create(nil);
CryptographicLibrary2 := TCryptographicLibrary.Create(nil);
Codec2.CryptoLibrary := CryptographicLibrary2;
// 这是动态创建对象能够工作的关键
Codec2.StreamCipherId := TPLB3.Constants.BlockCipher_ProgId; Codec2.BlockCipherId := TPLB3.Constants.DES_ProgId;
Codec2.ChainModeId := TPLB3.Constants.ECB_ProgId; // 设置密码
Codec2.Password := Trim(keyStr); // 加密字符串
Codec2.DecryptString(Plaintext, CipherText, TEncoding.Default); finally
Codec2.Free;
CryptographicLibrary2.Free;
end;
end; procedure TForm2.Button1Click(Sender: TObject);
var
Plaintext: string; // 未加密信息变量
CipherText: string; // 加密后信息变量
begin
if Trim(logMemo.Text) <> '' then
begin
// 得到解密内容
CipherText := Trim(logMemo.Text); // 解密
self.DecryptString(EncryptKey, Plaintext, CipherText); // 显示解密内容
Memo2.Text := Plaintext; if Trim(Memo1.Text) <> '' then
begin
if Trim(Memo1.Text) = Trim(Memo2.Text) then
begin
showmessage('解密完全正确!!');
end
else
begin
showmessage('解密结果和加密前的内容不一致!!!');
end; end; end
else
begin
showmessage('对不起,要解密内容不能为空!');
end; end; procedure TForm2.Button2Click(Sender: TObject);
var
Plaintext: string; // 未加密信息变量
CipherText: string; // 加密后信息变量
begin // 要加密信息
Plaintext := Trim(Memo1.Text); if Plaintext = '' then
begin
showmessage('对不起,要加密内容不能为空!');
end
else
begin
// 加密
self.EncryptString(EncryptKey, Plaintext, CipherText); // 显示加密信息
logMemo.Text := CipherText;
end; end; procedure TForm2.clearLogBtnClick(Sender: TObject);
begin
logMemo.Clear;
end; procedure TForm2.FormCreate(Sender: TObject);
begin end; // log方法
procedure TForm2.MyLog(tempLog: string);
var
temp: string;
oldLog: string;
begin
if Trim(tempLog) <> '' then
begin oldLog := Trim(logMemo.Text);
logMemo.Clear; temp := FormatDateTime('yyyy-mm-dd hh:mm:ss', now) + ' ' + Trim(tempLog);
if oldLog = '' then
begin
logMemo.Lines.Add(temp);
logMemo.Lines.Add('');
end
else
begin
logMemo.Lines.Add(temp);
logMemo.Lines.Add('');
logMemo.Lines.Add(oldLog);
end; end; end; end.
安装LockBox 3.7.0,用LockBox加密解密!的更多相关文章
- mysql 安装流程 兼容8.0.0以上版本 解决修改密码规则问题
背景介绍: 第一次安装mysql服务端,版本8.0.6 遇到了问题:1:不知道流程:2:8.0以上版本密码加密规则修改的解决方案: 1:下载mysql 服务端 https://dev.mysql. ...
- 使用 kubeadm 安装 kubernetes v1.16.0
近日通过kubeadm 安装 kubernetes v1.16.0,踩过不少坑,现记录下安装过程. 安装环境: 系 统:CentOS Linux release 7.6 Docke ...
- 在windows 10中使用pip安装psutil 4.3.0
环境版本:windows + python 2.7/3.5共存 使用的python是使用exe安装的,默认已经有pip并确保PATH设置正确,默认安装psutil 4.3.0 1:使用cmd安装2.7 ...
- CentOS 6 中安装Node.js 4.0 版本或以上
如果想在CentOS 6 中安装Node.js >4.0,如果通过以往的方式安装: wget http://nodejs.org/dist/v4.0.0/node-v4.0.0.tar.gz t ...
- ELK——安装 logstash 2.2.0、elasticsearch 2.2.0 和 Kibana 3.0
本文内容 Elasticsearch logstash Kibana 参考资料 本文介绍安装 logstash 2.2.0 和 elasticsearch 2.2.0,操作系统环境版本是 CentOS ...
- Win10安装.net framework 4.0失败提示已是操作系统一部分如何解决
有位用户因为工作需求,所以想在win10系统电脑中安装microsoft .net framework 4.0.可是在安装过程中却失败了,还遇到提示"Microsoft.net framew ...
- Ubuntu14.04安装和配置Tomcat8.0.12(转)
Ubuntu14.04长的好看,所以一时间很感兴趣,研究各种软件的安装和开发环境的配置.今天先把安装的tomcat 8.0.12的教程分享给大家.如果你需要,请收藏!!! 工具/原料 系统环境:U ...
- 如何在Ubuntu/CentOS上安装Linux内核4.0
大家好,今天我们学习一下如何从Elrepo或者源代码来安装最新的Linux内核4.0.代号为‘Hurr durr I'm a sheep’的Linux内核4.0是目前为止最新的主干内核.它是稳定版3. ...
- linux centos安装编译phantomjs 2.0的方法
phantomjs 2.0最新版的官方不提供编译好的文件下载,只能自己编译,有教程但是过于简单,特别是服务器上要安装N多的支持.折腾到现在终于装好了并且能正常运行了,截图mark一下: linux c ...
随机推荐
- UI控件
1.布局:一个Activity相当于一个手机屏幕默认和手机屏幕的宽高相同LinearLayout.RelativeLayout等布局继承了ViewGroup,ViewGroup是View的子类,可以容 ...
- linux和windows共享文件
开发板的文档上说可以使用nfs共享文件夹,提供的命令如下: mount –t nfs –o nolock 192.168.1.244:/usr/ /mnt/ 因此我在我的win10上设了共享文件夹,然 ...
- 使用 OAuth2-Server-php 在 Yii 框架上搭建 OAuth2 Server
原文转自 http://www.cnblogs.com/ldms/p/4565547.html Yii 有很多 extension 可以使用,在查看了 Yii 官网上提供的与 OAuth 相关的扩展后 ...
- ThinkPHP 3.2 获取页面运行时间
在ThinkPHP中,可以通过在config.php中配置'SHOW_PAGE_TRACE' =>true,打开页面调试,实现页面载入时间的显示.但显示在页面右下角TP的LOGO显然不能适用于我 ...
- 【转】使用Eclipse搭建Python开发环境
因为要进行自动化测试,所以要搭建Python开发环境.这里将使用Eclipse+pyDev进行搭建,在此作为笔记记录下来. 需要的组件: 1.Eclipse SDK 3.7(这里将不再叙述Eclips ...
- ViewStub的简单用法和说明
最近无意间知道了ViewStub,所以特地的去了解了一下 都知道ViewStub是一个不可见的,大小为0的View,实际上跟include差不多,但是ViewStub要更加节约资源.被称为是" ...
- 之前想搞一个nim但因为是自用我会持续修复完善
异步方式的优点:客户端和服务端互相解耦,双方可以不产生依赖.缺点是:由于引入了消息中间件,在编程的时候会增加难度系数.此外,消息中间件的可靠性.容错性.健壮性往往成为这类架构的决定性因素. 幸运的是程 ...
- 你应该知道的那些Android小经验
原文出处:http://jayfeng.com/ 做Android久了,就会踩很多坑,被坑的多了就有经验了,闲暇之余整理了部分,现挑选一些重要或者偏门的“小”经验做个记录. 查看SQLite日志 ad ...
- Codeforces Round #341 Div.2 B. Wet Shark and Bishops
题意:处在同一对角线上的主教(是这么翻译没错吧= =)会相互攻击 求互相攻击对数 由于有正负对角线 因此用两个数组分别保存每个主教写的 x-y 和 x+y 然后每个数组中扫描重复数字k ans加上kC ...
- 在Visual Studio中设置多核并行编译
VS是一款非常强大实用的IDE,是在Windows环境下学习编程的首选软件. 有些时候大一点的工程项目编译要耗时挺长时间,随便修改一下代码就可能要编译将近一分钟,甚至更多.即便在开启的增量编译的情况下 ...