如何让JSCh / JCE与Java 1.4一起使用?

根据
http://www.jcraft.com/jsch/,JSch是纯Java,但它依赖于Java Cryptography Extension(JCE).众所周知,JSch可以与J2SE 1.4.0或更高版本一起使用(不需要额外的库).

在任何人建议我升级之前(这确实会让我的生活变得更轻松),这不是一个选择:我必须在Java 1.4.2下使用它.

所以,我下载了JSch 0.1.54源代码(以及JZLib 1.1.3源代码),并在这里和那里修复了一些小问题.剩下的绊脚石是JCE.没有它,缺少以下类(在Java 1.5开头的java.security.interfaces下找到):

Error:(40, 3) java: cannot find symbol
  symbol:   class ECFieldFp
  symbol:   class ECGenParameterSpec
  symbol:   class ECParameterSpec
  symbol:   class ECPoint
  symbol:   class ECPrivateKey
  symbol:   class ECPrivateKeySpec
  symbol:   class ECPublicKey
  symbol:   class ECPublicKeySpec
  symbol:   class EllipticCurve

满足这种需求的JCE源或罐子在哪里? Bouncy Castle页面(https://www.bouncycastle.org/latest_releases.html)似乎是解决方案的一部分,但Java 1.4的下载选择令人眼花缭乱.我试过lcrypto-jdk14-157,但它对上面的列表不完整:它只提供ECPoint和ECPrivateKey.

最佳答案 根据
change log,自版本0.1.52以来添加了支持.这些类在com / jcraft / jsch / jce / KeyPairGenECDSA.java,KeyPairECDSA.java,ECDH.hava,SignatureECDSA.java和其他新文件中使用,以支持ECDSA密钥.

如果您不必连接仅支持ECDSA密钥的服务器.解决方案是从sourceforge.net下载源代码,使用JDK 1.4.2构建jar文件.有一个兼容的问题:

jsch-0.1.51/src/main/java/com/jcraft/jsch/Util.java:490: replace(char,char) in java.
lang.String cannot be applied to (java.lang.String,java.lang.String)
    str = str.replace("~", System.getProperty("user.home"));

你只需要解决这个错误.

点赞