軟件加密狗是什么?
先說加密狗,再說客戶端/服務器。
加密狗軟件里主要的加密方式有以下幾種。
1.偽加密:修改文件夾或者文件名,設置為隱藏文件達到所謂的“加密”目的。
2.異或加密與錯位加密:依次讀取文件的每一位byte字節,通過與指定數字異或計算得到一個新字節存入文件中,解密的時候只要再挨個異或一次就行,安全性不高,但速度快。一旦軟件被反編譯,破解輕輕松。RC4流加密雖然也是異或操作,但比這個復雜。如果是英文或者數字文本,可以考慮用錯位的方式,就是ASCII碼+1那種,A變B,B變C。邏輯也很簡單,安全性極差,不多說。
3.DES加密:對稱加密。目前比較常用的加密方法。DES3代(應該是256位)比較安全些。通過一定手段可以破解,但代價比較大。沒研究過。
4.AES加密:對稱加密。AES256是目前最安全的算法之一,被軍方(米國)采用。只能通過暴力破解(隨機碰撞)的方式破解,密碼越長難度自然越高。AES加密參數有兩個,一個是IV向量,一個是密碼Key。雖然安全,但問題也很明顯,加解密速度非常慢。通常可以只加密文件的一部分達到隱藏文件的目的。之前有AES128被破解的傳聞,但也僅僅只是傳聞而已,并沒發現有什么論文或者報道發表出來。
AES加密是不怕別人知道算法的(必須有用戶的真實明文密碼才能解開)。DES可能也是吧,沒有關注過DES,就不誤導人了。
這里額外多說一句MD5的。MD5一般用來保存用戶密碼或者數據簽名。它和SHA(散列)加密方式一樣,都是不可逆的。
保存用戶密碼時,生成一個隨機鹽值(比如GUID),把這個鹽值以及MD5(key+salt)兩個數據一起保存下來。由于其不可逆性,就算你服務器被黑了,用戶的密碼也不會泄露。用戶登錄的時候,取出對應的鹽值再MD5(key+salt)一次,比對一下就知道是不是正確密碼了。
至于為什么要加鹽,如果直接MD5(key)的話,黑客使用彩虹表(就是大量已知的key—MD5對照表)還是可以查出來明文的。
游戲或者其他的C/S通訊,一般會用RSA加密(可以配合DES或者AES一起用,比如服務器證書(CA,就是帶https標志的那種網站用的啦)一般就是AES+RSA加密的)。
RSA加密:不對稱加密,即公鑰私鑰模式。它的公鑰和私鑰是一大串字符,一般保存成xml格式或者byte流,存成字符串會出錯。
RSA通常用于網絡socket通訊。私鑰由服務器保存,公鑰公開給所有的客戶端。客戶端把消息用公鑰加密,然后再傳給服務器,服務器用私鑰解開密文。反之,服務器向客戶端發消息時,會用私鑰對消息進行簽名,客戶端收到消息會用公鑰確認簽名,這樣可以確保消息是由真正的服務器傳來的,而不是其他的惡意主機。
公鑰只能用來加密數據和驗證簽名,沒有解密功能。同樣的,私鑰只能用來解密數據和生成簽名,不能用來加密數據。
也正是因為RSA加密要絕對保證私鑰的安全,所以不適合用來做文件加密軟件。軟件一被破解,完全沒有任何保護性可言。