Primeton BFT Primeton BFT
Primeton BFT7.6GA文档库
  • 添加自定义加解密算法
  • 自定义加解密实现流程
  • 实现加密、解密方法
  • 准备工作
  • 实现IFTCorder接口加密/解密算法
  • 控制管理中心新加密算法定义
  • 策略中使用新增加密算法

# 添加自定义加解密算法

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

# 自定义加解密实现流程

  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.6.0.jar到项目下

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

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

    IFTCorder接口中包含加密解密方法。每个方法中包含两个参数:
    byte[] data:加密或解密前的数据。
    String key:密钥。
    
  2. 方法的返回值则是加密或解密后的数据。示例如下:

    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;
        }
    }
    
  3. 将写好的代码进行打包。

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

    corder6

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

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

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

    打开Agent根目录/bftagent/config/bft-agent-corder-conf.xml文件,每对代表一个加密方式。所以需要添加自定义的 。

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

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

    搜索【类型代码】“BFT_ENCRYPT”

    corder7

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

    corder8

​

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

# 策略中使用新增加密算法

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

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

corder9

← 角色授权 添加压缩解压缩算法 →