添加自定义加解密算法

该章节旨在指导用户通过接口实现,增加自定义加密、解密算法

自定义加解密实现流程

  1. 实现com.primeton.filetransfer.p2pfile.coder.IFTCorder接口加解密方法。
  2. 代码打包放入Agent根目录/bftagent/lib下。
  3. 修改Agent根目录/bftagent/config/bft-agent-corder-conf.xml。
  4. 数据字典中配置自定义加解密值。
  5. 传输策略使用加解密。

IFTCorder

实现加密、解密方法

准备工作

  1. 打开ecplise,新建一个项目,mycorder。
  2. 导入BFT Agent根目录下bftagent/lib/com.primeton.filetransfer.p2pfile-7.5.1.0.jar到项目下

实现IFTCorder接口加密/解密算法

  1. 创建一个类,继承com.primeton.filetransfer.p2pfile.coder.IFTCorder接口。

corder3

IFTCorder接口中包含加密解密方法。每个方法中包含两个参数:
byte[] data:加密或解密前的数据。
String key:密钥。
  1. 方法的返回值则是加密或解密后的数据。示例如下:
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;
    }
}
  1. 将写好的代码进行打包,在项目上右击点击“Export...”,选择“java/JAR file”点击“Next”。

corder4

  1. 选择要打包的内容,按照默认就行,在“JAR file”选择输出目录,点击“Finish”。

corder5

  1. 将打好的jar包放置在BFT Agent根目录/bftagent/lib下。

corder6

提示:
如果项目中含有其他的依赖,也一并放入Agent根目录/bftagent/lib下。
  1. 完成以上步骤后需要重启Agent。

控制管理中心新加密算法定义

  1. 加密配置文件添加新算法信息

    打开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 文件。
  1. 字典值配置

    在BFT Console中点击菜单【系统管理】→【字典码表】,如下图所示:

    搜索【类型代码】“BFT_ENCRYPT”

    corder7

    点击【新增字典项】添加加密算法,如下图所示:

    corder8

名称 说明
字典类型 固定值,代表加密类型,不可填写
字典项代码 与配置文件%BFT_AGENT%\bftagent\config\bft-agent-corder-conf.xml的name保持一致
字典项名称 自定义加密的标识,可以填写通俗名称
排序 该加密类型的显示位置

策略中使用新增加密算法

在BFT Console中点击菜单【策略管理】->【传输策略】,右侧区域显示 “传输策略” 界面

点击 【新增】>【一对一传输】新增传输策略,在加密算法栏选择新增的加密算法

corder9

results matching ""

    No results matching ""