[英]Need algorithm to protect string with password?
我正在尋找一種簡單且快速的算法來使用密碼對字符串(長度約為128個字節)進行加密/解密。
有什么好的算法嗎?
添加:自定義算法絕對可以。 占用更少的內存-更好(就我而言)。 沒有額外的課程-完美。
AES Algorithm
: Implementation
AES是用於私鑰或對稱密碼的聯邦標准。 它支持鍵,塊大小分別為128、192和256的組合。
IDEA - International Data Encryption Algorithm
如何?
IDEA是獲得專利且通用的塊加密算法的名稱,該算法可有效保護傳輸和存儲的數據,防止第三方未經授權的訪問。
參見實現: How to implement IDEA?
AES或3DES是相當“標准”的對稱密鑰加密。 河豚是另一種。
例如,檢查http://java.sun.com/developer/technicalArticles/Security/AES/AES_v1.html,了解是否將AES與Java結合使用。
旁注:如果這是為了保護密碼之類的東西,則應改為使用單向哈希方法(例如MD5或類似方法)。 除非絕對必須能夠解密文本,否則單向散列會更安全。 例如,當將密碼存儲在數據庫中時,您將對密碼進行哈希處理(使用MD5之類的東西)並將其存儲。 然后,通過對用戶輸入進行哈希處理並將其與存儲在數據庫中的哈希值進行比較來驗證登錄名。
參見Java Crypto! 用於Encryption and Decryption
有微小的加密算法( http://en.wikipedia.org/wiki/XXTEA )。
它非常簡單,快速(用於加密算法),並且有Java實現。
這是一種簡單的加密/解密方法。 它非常薄弱,因此我出於教育目的而提出 :
public static String encDec(String input, String password) {
byte[] in = input.getBytes();
byte[] key = password.getBytes();
byte[] result = new byte[in.length];
int k = 0;
for (int i = 0; i < in.length; i++) {
result[i] = (byte)(in[i] ^ key[k]);
k++;
if (k == key.length)
k=0;
}
return new String(result);
}
它只是將短語的字節與密碼的字節進行異或運算。 可以使用相同的方法進行加密和解密。 順便說一句,對於加密分析師來說,這不是一個很大的挑戰,但是如果您只需要混淆一些數據,那么這是一個輕松的開始。
為了使它更好一點:不要傳遞密碼字符串,而是傳遞帶有隨機值的字節數組。 但是您想要一個帶有密碼的方法,這就是為什么我以這種方式實現的原因;)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.