使用 LockBox 做加密解密
来源:互联网 发布:java 格式化输出 编辑:程序博客网 时间:2024/05/07 23:43
Delphi 提供的加密解密控件中,LockBox 是一套非常优秀的开源控件。其前身是 TruboPower LockBox 是一套商业控件。
LockBox 到 Version 2 的时候决定开源。因此有 LockBox2,和之前的商业控件完全一样。
后来,有人另外写了一套,叫做 LockBox3,这个版本同样开源,但代码完全不一样,用法也不一样。其采用的开源协议也不一样。
关于 LockBox2 和 LockBox3 的区别,以及为什么要另外搞一套,请看这里:http://lockbox.seanbdurkin.id.au/HomePage
下载请看这里:
LockBox2:
https://github.com/TurboPack/LockBox/
LockBox3:
https://github.com/TurboPack/LockBox3
我尝试下载 LockBox2 和 LockBox3 的 ZIP,解压缩后,安装到 Delphi 10.2 东京版。发现有一个问题:同时安装 VCL 版和 FMX 版,结果安装完后,控件面板上没看见。重启 Delphi 后,启动时说某某包加载不成功,等等。
只好卸载 FMX 版,只留 VCL 版,才能成功在 IDE 的控件面版上看到控件。写个例子程序,拖控件过来,写点测试代码,通过。
以下是拖控件过来后的测试代码:
procedure TForm2.Button1Click(Sender: TObject);var S: string;begin //这是 LockBox 2.0 控件的用法。LockBox3 完全不同了。 //这里是拖控件过来的。 Lb3DES1.GenerateKey('abcd1234'); S := Lb3DES1.EncryptString(Edit1.Text); Memo1.Lines.Add(S); Memo1.Lines.Add(''); S := Lb3DES1.DecryptString(S); Memo1.Lines.Add(S);end;procedure TForm2.Button2Click(Sender: TObject);var EncryptDataStr: string; DecodedStr: string;begin //以下是 LockBox3 的用法。Codec1 是拖控件过来的。 Codec1.PassWord := 'abc3455'; Codec1.EncryptString(Edit1.Text, EncryptDataStr, TEncoding.UTF8); Memo1.Lines.Add(EncryptDataStr); Codec1.DecryptString(DecodedStr, EncryptDataStr, TEncoding.UTF8); Memo1.Lines.Add(DecodedStr); Memo1.Lines.Add('');end;
如果不拖控件,也可以自己用代码在运行期创建对象然后使用,以下是李维用 LockBox3 写的例子代码,加密:
procedure TForm3.Button1Click(Sender: TObject);var Codec1: TCodec; CryptographicLibrary1: TCryptographicLibrary; sEncryptData : String;begin Codec1 := TCodec.Create( nil); CryptographicLibrary1 := TCryptographicLibrary.Create( nil); try Codec1.CryptoLibrary := CryptographicLibrary1; Codec1.StreamCipherId := uTPLb_Constants.BlockCipher_ProgId; Codec1.BlockCipherId := 'native.AES-256'; Codec1.ChainModeId := uTPLb_Constants.CBC_ProgId; Codec1.Password := 'This is a test for AES'; Codec1.EncryptString(Edit1.Text, sEncryptData, TEncoding.UTF8); Edit2.Text := sEncryptData; finally Codec1.Free; CryptographicLibrary1.Free; end;end;
以下是解密:
procedure TForm3.Button2Click(Sender: TObjectvar Codec1: TCodec; CryptographicLibrary1: TCryptographicLibrary; sData : String;begin Codec1 := TCodec.Create( nil); CryptographicLibrary1 := TCryptographicLibrary.Create( nil); try Codec1.CryptoLibrary := CryptographicLibrary1; Codec1.StreamCipherId := uTPLb_Constants.BlockCipher_ProgId; Codec1.BlockCipherId := 'native.AES-256'; Codec1.ChainModeId := uTPLb_Constants.CBC_ProgId; Codec1.Password := 'This is a test for AES'; Codec1.DecryptString(sData, Edit2.Text, TEncoding.UTF8); Edit3.Text := sData; finally Codec1.Free; CryptographicLibrary1.Free; end;end;
看起来,LockBox3 的使用,比 LockBox2 的使用,稍微麻烦一些。
阅读全文
0 0
- 使用 LockBox 做加密解密
- Delphi加密组件TurboPower Lockbox
- 使用异或做的简单文件加密和解密
- 使用 TurboPower LockBox 组件对数据进行 RSA 加解密和数字签名——讲义及范例程序下载
- 利用mcrypt做AES加密解密
- 使用sunjce加密解密问题解决
- c#使用ROT13加密,解密
- 使用openssl进行加密解密
- 使用DES进行加密解密
- .NET使用DES加密解密
- flex 使用as3crypto 加密解密
- JAVA 使用BASE64加密、解密
- 使用cryptojs加密/解密数据
- JAVA 使用BASE64加密、解密
- .NET使用RSA加密解密
- RSA加密解密的使用!
- 使用密钥加密、解密实例
- 使用Base64加密解密文件
- hibernate查询数据表char类型字段只返回一个字符
- 人生目标
- Mysql与Oracle存储过程语法对比
- chosen.jquery.js 搜索框实现模糊搜索 chosen-select
- 基于Xposed的通用破解签名的方法
- 使用 LockBox 做加密解密
- Android Studio找不到libs目录
- Hold住Leetcode—— Sqrt(x)
- 5.22 JLL--实习日志--Js--to be contining
- STM32可用的QRCODE二维码生成库
- lombok系列2:lombok注解详解
- 深入解读tomcat服务器:打war包、在Tomcat中注册用户角色、创建虚拟目录和域名
- 【转载】实现SmartForms的分页打印
- TCP图解