當前位置:成語大全網 - 書法字典 - 文件傳輸加密的幾種基本算法

文件傳輸加密的幾種基本算法

MD5算法

介紹MD5加密算法的基本情況。MD5的全稱是Message-Digest Algorithm 5,由麻省理工學院計算機科學實驗室和RSA數據安全公司在90年代初發明,由MD2、MD3和MD4發展而來。

消息摘要(Message-Digest)壹般指消息的哈希變換,即把任意長度的字節串變換成壹定長度的大整數。請註意,我使用了“字節串”這個詞,而不是“字符串”,因為這種轉換只與字節的值有關,與字符集或編碼方法無關。

MD5將任意長度的“字節串”轉換成128bit的大整數,是壹種不可逆的字符串轉換算法。換句話說,即使妳看到了源程序和算法的描述,妳也無法將壹個MD5值轉換回原來的字符串。從數學上講,是因為有無限個原串,有點像沒有反函數的數學函數。

MD5的典型應用是為消息(字節串)生成指紋,以防止其被篡改。例如,如果您在壹個名為readme.txt的文件中寫了壹段話,並為這個readme.txt生成壹個MD5值並記錄下來,那麽您就可以將這個文件傳播給他人。如果其他人修改了文件中的任何內容,當您重新計算該文件的MD5時,您會發現它。如果有第三方認證機構,MD5還可以防止文檔作者的“否認”,也就是所謂的數字簽名應用。

MD5也廣泛應用於加密和解密技術。在很多操作系統中,用戶的密碼是以MD5值的形式保存的(或者類似的其他算法)。當用戶登錄時,系統將用戶輸入的密碼計算為MD5值,然後與系統中保存的MD5值進行比較,但系統並不“知道”用戶的密碼是什麽。

壹些黑客破解這個密碼的方式是壹種叫做“運行字典”的方法。字典的獲取方式有兩種,壹種是日常收集的用作密碼的字符串表,另壹種是通過排列組合的方法生成的。首先用MD5程序計算這些字典項的MD5值,然後在這個字典中查找目標的MD5值。

即使密碼的最大長度是8,並且密碼只能是字母和數字,***26+26+10=62個字符,字典中的條目數也是P (62,1)+P (62,2)...+P (62,8)。

在許多電子商務和社區應用中,管理用戶帳戶是最常用的基本功能之壹。盡管許多應用服務器提供了這些基本組件,但許多應用程序開發人員更喜歡使用關系數據庫來管理用戶,以獲得更大的管理靈活性。懶惰的方法是,用戶的密碼通常在經過純文本或簡單轉換後直接存儲在數據庫中。所以這些用戶的密碼對於軟件開發者或者系統管理員來說,可以說已經不是什麽秘密了。本文的目的是介紹Java Bean的MD5的實現,同時給出壹個用MD5處理用戶帳號密碼的例子。這種方法使得管理員和程序員無法看到用戶的密碼,盡管他們可以初始化密碼。但重要的壹點是保護用戶的密碼設置習慣。

MD加密算法的JAVA描述是:

導入Java . security . *;

導入Java . security . spec . *;

Md5類{

公共最終靜態字符串MD5(字符串s){

char hexDigits[] = {

0 '、' 1 '、' 2 '、' 3 '、' 4 '、' 5 '、' 6 '、' 7 '、' 8 '、' a '、' b '、' c '、' d '、' e '、' f ' };

嘗試{

byte[]strTemp = s . getbytes();

message digest MD temp = message digest . getinstance(" MD5 ");

MD temp . update(strTemp);

byte[]MD = MD temp . digest();

int j = md.length

char str[]= new char[j * 2];

int k = 0;

for(int I = 0;我& ltj;i++) {

byte byte 0 = MD[I];

str[k++]= hex digits[byte 0 & gt;& gt& gt4 & amp0xf];

str[k++]= hex digits[byte 0 & amp;0xf];

}

返回新字符串(str);

}

捕捉(異常e){

返回null

}

}

公共靜態void main(String[] args){

System.out.print(MD5。MD5(" XX "));

}