title: Are there valid reasons for using a hardware encryption device (e.g. USB encryption dongle/keystore) over using a software library?
body: <p>If your application needs to encrypt/decrypt data (for various reasons), are there any reasons why you would use a hardware device (e.g. a USB encryption device - like a Marx CryptoBox) instead of using a software encryption library (like .net Cryptography or writing your own) and keep your keys in a safe key store?</p>
  
  <p>I am looking for some objective views on this matter.</p>
  
  <hr>
  
  <p><strong>To narrow down the question posed:</strong>  what would your opinion be if the system that used the usb encrpytion dongle was housed in a physically secure server vault and there was only one system in existence (i.e. its not a software product that is distributed and run on many desktops) ?  In very simplistic terms, the purpose of the above system is to validate (decrypt and compare) a piece of incoming encrypted data.</p>
  
  <hr>
  
  <p>Thanks so far for your great answers!</p>