添加自定义加解密算法
该章节旨在指导用户通过接口实现,增加自定义加密、解密算法
自定义加解密实现流程
- 实现com.primeton.filetransfer.p2pfile.coder.IFTCorder接口加解密方法。
- 代码打包放入Agent根目录/bftagent/lib下。
- 修改Agent根目录/bftagent/config/bft-agent-corder-conf.xml。
- 数据字典中配置自定义加解密值。
- 传输策略使用加解密。
实现加密、解密方法
准备工作
- 打开ecplise,新建一个项目,mycorder。
- 导入BFT Agent根目录下bftagent/lib/com.primeton.filetransfer.p2pfile-7.5.1.0.jar到项目下
实现IFTCorder接口加密/解密算法
- 创建一个类,继承com.primeton.filetransfer.p2pfile.coder.IFTCorder接口。
IFTCorder接口中包含加密解密方法。每个方法中包含两个参数:
byte[] data:加密或解密前的数据。
String key:密钥。
- 方法的返回值则是加密或解密后的数据。示例如下:
import com.primeton.filetransfer.p2pfile.coder.IFTCorder;
public class SimpleCorder implements IFTCorder{
public byte[] decrypt(byte[] data, String key) {
//解密方法 将拼接在后面的key去除
int keylen = key.getBytes().length;
byte[] result = new byte[data.length - keylen];
for(int i=0;i<result.length;i++) {
result[i] = data[i];
}
return result;
}
public byte[] encrpyt(byte[] data, String key) {
//加密方法 将key拼接在数据后面
byte[] keybyte = key.getBytes();
byte[] result = new byte[keybyte.length+data.length];
for(int i=0;i<data.length;i++) {
result[i] = data[i];
}
for(int i=0;i<keybyte.length;i++) {
result[data.length+i] = keybyte[i];
}
return result;
}
}
- 将写好的代码进行打包,在项目上右击点击“Export...”,选择“java/JAR file”点击“Next”。
- 选择要打包的内容,按照默认就行,在“JAR file”选择输出目录,点击“Finish”。
- 将打好的jar包放置在BFT Agent根目录/bftagent/lib下。
提示:
如果项目中含有其他的依赖,也一并放入Agent根目录/bftagent/lib下。
- 完成以上步骤后需要重启Agent。
控制管理中心新加密算法定义
加密配置文件添加新算法信息
打开Agent根目录/bftagent/config/bft-agent-corder-conf.xml文件,每对
</corder>代表一个加密方式。所以需要添加自定义的 。 <corder name="mycoder" class="com.primeton.mycorder.SimpleCorder"> <enkey>KueqqWWEop</enkey> <dekey>KueqqWWEop</dekey> <sendpolicy>0</sendpolicy> <receivepolicy>0</receivepolicy> </corder>
名称 | 说明 |
---|---|
name | 自定义加密界面的名称,不区别大小写 |
class | 实现FTCorder接口类的全限定命名 |
enkey | 调用加密方法时传入的key(密钥)值 |
dekey | 调用解密方法时传入的key(密钥)值 |
enbuf | 加密前缓存大小,例如2048等用户无需填写 |
debuf | 加密后缓存大小,用户无需填写 |
sendpolicy | 发送时加密策略:0边发送边加密,1先加密后发送 |
receivepolicy | 接收是解密策略:0边接收边解密,1先接收后解密 |
说明:bft-agent-corder-conf.xml 中 enbuf、debuf,默认不填写,将在加入自定义算法,代理节
点首次运行后,由程序执行计算得出,并写入bft-agent-corder-conf.xml 文件。
字典值配置
在BFT Console中点击菜单【系统管理】→【字典码表】,如下图所示:
搜索【类型代码】“BFT_ENCRYPT”
点击【新增字典项】添加加密算法,如下图所示:
名称 | 说明 |
---|---|
字典类型 | 固定值,代表加密类型,不可填写 |
字典项代码 | 与配置文件%BFT_AGENT%\bftagent\config\bft-agent-corder-conf.xml的name保持一致 |
字典项名称 | 自定义加密的标识,可以填写通俗名称 |
排序 | 该加密类型的显示位置 |
策略中使用新增加密算法
在BFT Console中点击菜单【策略管理】->【传输策略】,右侧区域显示 “传输策略” 界面
点击 【新增】>【一对一传输】新增传输策略,在加密算法栏选择新增的加密算法