Java 使用服务器&x27;在JSch库中设置指纹,而不是设置公钥文件

Java 使用服务器&x27;在JSch库中设置指纹,而不是设置公钥文件,java,ssh,coldfusion,sftp,jsch,Java,Ssh,Coldfusion,Sftp,Jsch,在我的ColdFusion应用程序中,我使用的是Java库JSch。SFTP服务器是BitVise个人版(用于测试)。目前,我正在强制执行一个strichHostKeyChecking,为此,我使用以下方法从文件名创建一个主机密钥存储库 public void setKnownHosts(String filename) throws JSchException 有没有办法设置服务器的指纹(比如2b:16:18:83:7b:c6:5e:49:f2:f0:8

在我的ColdFusion应用程序中,我使用的是Java库JSch。SFTP服务器是BitVise个人版(用于测试)。目前,我正在强制执行一个
strichHostKeyChecking
,为此,我使用以下方法从文件名创建一个主机密钥存储库

public void setKnownHosts(String filename)
                   throws JSchException
有没有办法设置服务器的指纹(比如
2b:16:18:83:7b:c6:5e:49:f2:f0:8e:e2:dc:64:da:1a
)而不是在JSch库中使用公钥

样本公钥参考,如果需要:

本地主机ssh rsa 一个2岁的研究发现了一个2岁的研究发现了一个2岁的一个2岁的一个2岁的一个2岁的一个2岁的一个2岁的一个2岁的研究,一个2岁的一个2岁的研究,一个2岁的研究,一个2岁的研究,一个2岁的一个2岁的研究,一个2岁的研究,一个2岁的研究,一个2 2岁的研究,一个2岁的研究,一个2岁的一个2岁的研究一个2岁的研究,一个非非非非非一个2岁的2岁的2岁的2岁的2岁的研究,一个非非非非非非非一个2岁的2岁的2岁的2岁的一个2岁的研究,一个2岁的2岁的研究,一个非非非非非非非非非非非非非非2岁的2岁的非非非非非非非非非非非非非非非Yraxhmohyzpexif/iA79EX8aHNayVkDOh42MlX+CYB3L3THZA0G+NajkloJ8KYJ9IOYMQDYXNGLA8M2E+UnQ9OOznJ6ZzopnlSPQ2rygAGOW2TCHYFh+91S0=

通过将从
key
参数计算的指纹与已知指纹进行比较的方式实现您自己的指纹

public class HostKeyFingerprintRepository implements HostKeyRepository
{
    int check(String host, byte[] key)
    {
        // Based on KeyExchange.getFingerPrint
        Class c = Class.forName(jsch.getConfig("md5"));
        HASH hash = (HASH)(c.newInstance());
        // Based on Util.getFingerPrint
        hash.init();
        hash.update(key, 0, key.length);
        byte[] foo=hash.digest();
        StringBuffer sb=new StringBuffer();
        int bar;
        for(int i=0; i<foo.length;i++){
          bar=foo[i]&0xff;
          sb.append(chars[(bar>>>4)&0xf]);
          sb.append(chars[(bar)&0xf]);
          if(i+1<foo.length)
            sb.append(":");
        }
        String fingerprint = sb.toString();
        if (fingerprint.equals("2b:16:18:83:7b:c6:5e:49:f2:f0:8e:e2:dc:64:da:1a"))
        {
            return OK;
        }
        else
        {
            return NOT_INCLUDED;
        }
    } 

    // dummy implementations of the other methods
}
公共类hostKeyFingerRepository实现HostKeyRepository
{
整数检查(字符串主机,字节[]键)
{
//基于KeyExchange.getFingerPrint
Class c=Class.forName(jsch.getConfig(“md5”);
HASH HASH=(HASH)(c.newInstance());
//基于Util.getFingerPrint
hash.init();
hash.update(key,0,key.length);
字节[]foo=hash.digest();
StringBuffer sb=新的StringBuffer();
int-bar;
对于(int i=0;i>>4)和0xf]);
sb.附加(字符[(条)和0xf]);

如果(我+1不明白该线程是如何关联的。因此,我们需要实现接口来实现这一权利??似乎没有其他方式???。此外,我只是想让自己放心,jsch库只能与sftp协议一起使用,而不能与ftp协议一起使用???。我知道这个问题在这里没有任何关联…但对m有帮助为了让自己放心,我可以找到一些ftp协议的替代方案。Imo,这是最简单的方法。+是的,JSch不支持ftp。还有其他使用内置方法的方法吗?我已经写过,Imo,这是最简单的方法。有什么问题吗?更正…创建一个CFC,按照Martin使用createDynamicP建议的方法roxy而不是java代码。