You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SSHJ Java库:SFTP连接中已弃用加密套件的替代方案咨询

SSHJ中已弃用的AES加密工厂类替代方案

SSHJ库中旧的AES256CTR.Factory、AES256CBC.Factory等加密工厂类已被弃用,替代方案是使用net.schmizz.sshj.common.cipher包中标准化命名的工厂类,或者直接利用库提供的预定义加密套件常量来配置,以下是具体实现方式:

1. 使用预定义的加密套件常量(推荐)

SSHJ在net.schmizz.sshj.common.SecurityUtils中提供了符合现代安全标准的加密套件列表,可直接引用这些常量快速配置你需要的加密算法:

Config config = new DefaultConfig();
// 配置AEAD AES GCM和AES CTR系列加密套件
List<Factory.Named<Cipher>> cipherFactories = SecurityUtils.getCipherFactories(
    "aes256-gcm", "aes128-gcm",
    "aes256-ctr", "aes192-ctr", "aes128-ctr"
);
config.setCipherFactories(cipherFactories);
SSHClient client = new SSHClient(config);

2. 手动构建加密工厂列表(替代旧写法)

如果需要手动实例化工厂类,直接使用net.schmizz.sshj.common.cipher下对应算法的工厂类(类名以Cipher后缀结尾):

protected List<Factory.Named<Cipher>> initCipherFactories() {
    List<Factory.Named<Cipher>> avail = new LinkedList<>(Arrays.asList(
        // AES-CTR系列替代类
        new AES256CTRCipher.Factory(),
        new AES192CTRCipher.Factory(),
        new AES128CTRCipher.Factory(),
        // AEAD AES-GCM系列
        new AES256GCMCipher.Factory(),
        new AES128GCMCipher.Factory()
    ));
    boolean warn = false;
    // 保留JCE政策兼容性检查(针对旧Java版本)
    for (Iterator<Factory.Named<Cipher>> i = avail.iterator(); i.hasNext(); ) {
        final Factory.Named<Cipher> f = i.next();
        try {
            final Cipher c = f.create();
            final byte[] key = new byte[c.getBlockSize()];
            final byte[] iv = new byte[c.getIVSize()];
            c.init(Cipher.Mode.Encrypt, key, iv);
        } catch (Exception e) {
            warn = true;
            i.remove();
            e.printStackTrace();
        }
    }
    if (warn)
        log.warn("Disabling high-strength ciphers: cipher strengths apparently limited by JCE policy");

    return avail;
}

补充说明

  • AEAD类算法(如AES-GCM)已整合加密和消息认证,无需额外配置MAC算法;
  • 若需配置AES-CTR搭配HMAC-SHA2的组合,需同时设置对应的MAC算法:
// 配置HMAC-SHA2系列MAC算法
List<Factory.Named<MAC>> macFactories = SecurityUtils.getMACFactories(
    "hmac-sha2-512", "hmac-sha2-256"
);
config.setMACFactories(macFactories);

内容的提问来源于stack exchange,提问作者Nilesh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 22:55:38