最近我們感動的是從Windows 2003到Windows Server 2012是否與Tamir.SharpSSH Windows Server 2012兼容?
使用Tamir.SharpSSH在測試我們的應用程序的SFTP功能,我們收到此錯誤的應用程序:
{「Session.connect:系統.NullReferenceException:未將對象引用設置爲對象的實例。\ r \ n在Tamir.SharpSsh.jsch.jce.HMACMD5.update(Byte [] foo,Int32 s,Int32 l)\ r \ n at Tamir.SharpSsh .jsch.jce.HMACMD5.update(Int32 i)\ r \ n at Tamir.SharpSsh.jsch.Session.read(Buffer buf)\ r \ n at Tamir.SharpSsh.jsch.UserAuth.start(Session session)\ r \ n在Tamir.SharpSsh.jsch.UserAuthNone.start(會話會話)\ r \ n在Tamir.SharpSsh.jsch.Session.connect(Int32 connectTimeout)「}
我檢查以確保符合FIPS標準的算法被禁用,並且它們是。
然後,我們從項目中移除了對Tamir.SharpSSH的DLL引用,並將源代碼項目添加到了我們現在可以進入代碼的位置,以更具體地確定SharpSSH庫中發生故障的位置。
誤差以cs.Write(FOO,S,L)在更新()方法存在的,如下所示:
public void update(byte[] foo, int s, int l) { cs.Write(foo, s, l); }
這是因爲CS對象引用是NULL。
cs對象引用應該在HMACMD5.cs(最後一行)的init()方法中設置,但是不會顯示此方法正在調用。
public void init(byte[] key)
{
if(key.Length>bsize)
{
byte[] tmp=new byte[bsize];
Array.Copy(key, 0, tmp, 0, bsize);
key=tmp;
}
// SecretKeySpec skey=new SecretKeySpec(key, "HmacMD5");
// mac=Mac.getInstance("HmacMD5");
// mac.init(skey);
mentalis_mac = new Org.Mentalis.Security.Cryptography.HMAC(new System.Security.Cryptography.MD5CryptoServiceProvider(), key);
cs = new System.Security.Cryptography.CryptoStream(System.IO.Stream.Null, mentalis_mac, System.Security.Cryptography.CryptoStreamMode.Write);
}
我不確定爲什麼init()方法沒有被調用。
有沒有人遇到類似這樣的事情?
我想知道它是否可能是Windows Server 2012兼容性問題。
在此先感謝。