jsch 升级 0.2.x 版本对 bcprov-jdk 的依赖分析
背景某应用使用 jsch 0.1.x 版本进行 SFTP 操作某主机上连接时出现了com.jcraft.jsch.JSchException: Algorithm negotiation fail算法协商异常解决思路是升级 jsch 为 0.2.x 版本但是工程中又有两种 org.bouncycastle.crypto 包的实现一种是第三方 bcprov-jdk一种是自定义封装类种打包了 bcprov-jdk* 的内容。结果直接更换为高版本的 jar 工程还是报错只是异常原因在于这个包冲突。到底这个包和 bcprov-jdk 是什么关系呢使用 Opus4.5 模型分析这个目录 /Users/xxx/Downloads/jsch-0.2.24.jar 来分析它是否依赖了bcprov-jdk15on分析结果根据分析 jsch-0.2.24.jar结论jsch-0.2.24 对 bcprov-jdk 是可选依赖optional不是必需依赖。证据MANIFEST.MF 中的 Import-Packageorg.bouncycastle.crypto;version“[1.79,2)”;resolution:optionalorg.bouncycastle.crypto.digests;version“[1.79,2)”;resolution:optionalorg.bouncycastle.pqc.crypto.ntruprime;version“[1.79,2)”;resolution:optional…所有 BouncyCastle 包都标记为 resolution:optionalJAR 包结构- com/jcraft/jsch/jce/ - 使用标准 JCE 的实现AES, TripleDES 等- com/jcraft/jsch/bc/ - 使用 BouncyCastle 的实现Ed25519, ChaCha20 等需要 BouncyCastle 的功能Ed25519/Ed448 签名X25519/X448 密钥交换ChaCha20-Poly1305 加密SNTRUP761、ML-KEM 后量子加密Twofish、CAST128 等非标准算法不需要 BouncyCastle 的功能RSA、ECDSA 签名AES、3DES 加密标准 Diffie-Hellman 密钥交换如果你的 SSH 服务器只使用标准算法可以不添加 bcprov 依赖。分析过程由于包冲突想把自定义封装中的 SM4 工具算法重写一下用 Claude Code 的 sonnet4.5 模型重写工具并兼容之前自定义算法的内容写了一下午出来的结果都不对无法兼容之前版本加密的内容的解密。核心是 SM4 算法的密钥要求16byte128bit自定义封装的算法中密钥给了 64byte 的但是能正常加密和解密。Sonnet4.5 写的代码总是不能做好这个密钥长度的统一。今天切换成 Opus4.5 后给昨天一样的命令一次就写出来了 SM4 工具而且能完美兼容旧版本。感觉提示词思路是一样的「实现一个加解密的工具类实现加密和解密。要求如下密钥是 64字节的字符串xxx能兼容之前加密的结果。 」现在我理解了实现方式。让我创建 SM4Utils 工具类使用Bouncycastle项目已有依赖来实现与 Xxx.jar 兼容的 SM4 加密解密。确实实现了而且还顺手把依赖这个工具类的空白引用给加上了。启示录安装了 OpenClaw 使用的是 MiniMax 的模型ClaudeCode 使用的是 Sonnet 模型相同的编码问题问这两种 Agent Claude Code 更胜一筹尤其是脚本编写Claude Code 写的代码更严谨。此外使用 OpenClaw 总感觉不安全它没有任何中间过程的输出然后就把事情给完成了中间有没有失控看不到相比之下ClaudeCode 每一步都有输出有确认更有掌控感
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2412591.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!