2014-06-17 138 views
1

最近我們感動的是從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兼容性問題。

在此先感謝。

回答

3

我發現我缺少對Org.Mentalis.Security的引用。

只要我補充說,一切工作正常。

謝謝

1

我遇到過這種情況,這是因爲服務器有組策略啓用FIPS加密。爲了解決這個問題,我只是在app.config文件中添加了以下幾行代碼:

<runtime> 
<enforceFIPSPolicy enabled="false"/> 
</runtime> 

這使其禁用並且程序運行得很好。

相關問題