Как заставить JSCh/JCE работать с Java 1.4?
Согласно http://www.jcraft.com/jsch/, JSch is in pure Java, but it depends on Java Cryptography Extension (JCE). JSch has been known to work with J2SE 1.4.0 or later (no additional libraries required).
Прежде чем кто-либо предложит мне обновить (что действительно облегчит мою жизнь), это не вариант: я должен заставить это работать под Java 1.4.2.
Итак, я скачал исходный код JSch 0.1.54 (и исходный код JZLib 1.1.3) и исправил несколько мелких проблем здесь и там. Остальным камнем преткновения является JCE. Без него следующие классы (найдены под java.security.interfaces
начиная с Java 1.5) отсутствуют:
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
,
1 ответ
Согласно журналу изменений, поддержка была добавлена начиная с версии 0.1.52. Эти классы используются в com/jcraft/jsch/jce/KeyPairGenECDSA.java
, KeyPairECDSA.java
, ECDH.hava
, SignatureECDSA.java
и другие новые файлы для поддержки ECDSA
ключ.
Если вам не нужно подключать только поддерживаемый сервер ECDSA
ключ. Решением является загрузка исходного кода с sourceforge.net, сборка файла JAR с использованием JDK 1.4.2. Есть одна совместимая проблема:
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"));
Все, что вам нужно, это исправить эту ошибку.