我试图使用Silver隧道netlib连接到tor隐藏服务,但我仍然得到了相同的异常:
线程"org.silvertunnel.netlib.layer.tor.directory.DirectoryManagerThread“java.lang.NoSuchMethodError: org.bouncycastle.asn1.ASN1InputStream.readObject()Lorg/bouncycastle/asn1/DERObject;中的异常在org.bouncycastle.openssl.PEMReader.readRSAPublicKey(PEMReader.java:193) at org.bouncycastle.openssl.PEMReader.readObject(PEMReader.java:110) at org.silvertunnel.netlib.layer.tor.util.Encryption.extractPublicRSAKey(Encryption.java:342) at org.silvertunnel.netlib.layer.tor.directory.AuthorityKeyCertificate.(AuthorityKeyCertificate.java:104) at org.silvertunnel.netlib.layer.tor.directory.AuthorityKeyCertificates.(AuthorityKeyCertificates.java:100) atorg.silvertunnel.netlib.layer.tor.directory.AuthorityKeyCertificates.(AuthorityKeyCertificates.java:80) at org.silvertunnel.netlib.layer.tor.directory.Directory.getAuthorityKeyCertificates(Directory.java:492) at org.silvertunnel.netlib.layer.tor.directory.Directory.updateNetworkStatusNew(Directory.java:324) at org.silvertunnel.netlib.layer.tor.directory.Directory.refreshListOfServers(Directory.java:287) at org.silvertunnel.netlib.layer.tor.directory.DirectoryManagerThread.updateDirectory(DirectoryManagerThreadorg.silvertunnel.netlib.layer.tor.directory.DirectoryManagerThread.run(DirectoryManagerThread.java:76) ( .java:60)
我试过不同版本的赏金城堡,但我就是不能让它发挥作用。有人知道问题出在哪里吗?
这是我的密码:
String host = "some_site.onion";
int port = 7878;
TcpipNetAddress remoteAddress = new TcpipNetAddress(host, port);
NetLayer netLayer = NetFactory.getInstance().getNetLayerById(NetLayerIDs.TOR);
netLayer.waitUntilReady();
NetSocket netSocket = netLayer.createNetSocket(null, null, remoteAddress);
BufferedReader br = new BufferedReader(new InputStreamReader(netSocket.getInputStream()));
System.out.println(br.readLine());
br.close();
netSocket.close();发布于 2016-01-19 02:02:27
您的java安装中可能有一个bouncy城堡的版本,而导致此错误的原因是一个版本试图调用另一个版本。检查您的JAVA_HOME/jre/lib/ext/和JAVA_HOME/lib目录,查找其名称以"bcprov“开头的文件。
好吧,既然你说这不管用,我仍然认为你的类路径上有多种版本的赏金城堡。具体地说,我认为您有一个不同版本的bcprov和bcpkix jars。因此,让我们编写一个简短的java程序来找到它们:
import java.net.URL;
import java.util.Enumeration;
public class FindBouncy {
static void printResources(String n) throws Exception {
Enumeration<URL> e = FindBouncy.class.getClassLoader().getResources(n);
if (!e.hasMoreElements()) {
System.out.println(n + " not found!");
} else {
System.out.println(n + " found as:");
while(e.hasMoreElements()) {
System.out.println(" " + e.nextElement());
}
}
}
public static void main(String argv[]) throws Exception {
printResources("org/bouncycastle/openssl/PEMReader.class");
printResources("org/bouncycastle/asn1/ASN1InputStream.class");
}
}在eclipse中运行它,并查找"PEMReader“类(在bcpkix的旧版本中的旧类)和"ASN1InputStream”类(应该在旧的和更新的bcprov jars中的类)来自何处。使用那些相互匹配的罐子的版本。
https://stackoverflow.com/questions/34840297
复制相似问题