Java 訊息摘要演算法

2021-07-23 18:45:15 字數 2784 閱讀 9374

一、md5

因為在訊息摘要演算法中,md5應該最常用的,所以放在最前面。另外md家族中除了md5外,還有md2和md4,md2和md5在jdk中已經有實現,md4則是在bouncy castle有實現。

public abstract class md5 catch (nosuchalgorithmexception e)

}/**

* 訊息摘要處理,返回byte陣列

* * @param data

* @return

*/public static byte encode2bytes(byte data) catch (exception e)

return null;

}/**

* 訊息摘要處理,返回字串

* * @param algorithm

* @param data

*/public static string encode2string(byte data)

return null;

}/**

* 檔案摘要處理

* * @param file

* @return

*/public static byte encode2bytes(file file)

}messagedigest md = dis.getmessagedigest();

return md.digest();

} catch (exception e) finally catch (ioexception e)

dis = null;}}

return null;

}/**

* 訊息摘要處理,返回字串

* * @param file

* @return

* @throws exception

*/public static string encode2string(file file)

return null;

}/**

* * @param data

* @return

*/public static byte encode2bytes(string data)

/*** 

* @param data

* @return

*/public static string encode2string(string data)

二、sha

sha家族主要有sha1、sha224、sha256、sha384和sha256,其中sha224比較特殊一點,在bouncy castle有實現,其它的jdk中均有實現,使用與md5儲存一致。

public abstract class sha1 catch (nosuchalgorithmexception e)

}.....

}三、mac

mac可以說是綜合的md和sha的優點,增加了金鑰支付,所以相對來說會更加安全。由於是綜合md和sha,所以mac家族主要有hmacmd2、hmacmd4、hmacmd5、hmacsha1、hmacsha224、hmacsha256、hmacsha384、hmacsha512,其中hmacmd2、hmacmd4和hmacsha224在在bouncy castle有實現。

public abstract class hmacsha256

}} catch (nosuchalgorithmexception e)

return null;

}/**

* 生成金鑰

* * @return

*/public static string getkeystring()

/*** 

* @param data

* @param keybytes

* @return

*/public static byte encode2bytes(byte data, byte keybytes)

try catch (exception e)

return null;

}/**

* 訊息摘要處理,返回byte陣列

* */

public static byte encode2bytes(byte data, string key) catch (exception e)

return null;

}/**

* 訊息摘要處理,返回字串

*/public static string encode2string(byte data, byte keybytes)

return null;

}/**

* 訊息摘要處理,返回字串

*/public static string encode2string(byte data, string key)

return null;

}/**

* * @param data

* @return

*/public static byte encode2bytes(string data, byte keybytes)

/*** 

* @param data

* @return

*/public static string encode2string(string data, string key)

}四、其它

md、sha和mac是訊息摘要的主流,但還有一些其它的非主流演算法,如ripemd、tiger等,當然這些演算法在jdk均沒有實現,有一部分可以在bouncy castle中找到。

附(兩個工具類):

訊息摘要演算法 數字摘要

為了保證檔案或值的安全性,因為使用訊息摘要生成的值是不可篡改的 特點 準備工作 string input 訊息摘要 string algorithm md5 public static void main string args throws exception 建立乙個訊息摘要物件messaged...

訊息摘要演算法簡介

訊息摘要演算法簡介 一 什麼是訊息摘要演算法 訊息摘要演算法的主要特徵是加密過程不需要金鑰,並且經過加密的資料無法被解密,只有輸入相同的明文資料經過相同的訊息摘要演算法才能得到相同的密文。訊息摘要演算法不存在金鑰的管理與分發問題,適合於分布式網路相同上使用。由於其加密計算的工作量相當可觀,所以以前的...

訊息摘要演算法 HMAC演算法

hmac是一種使用單向雜湊函式來構造訊息認證碼的方法,其中hmac中的h就是hash的意思,以乙個金鑰和乙個訊息為輸入,生成乙個訊息摘要作為輸出。或者簡單點說,hmac就是資訊在hash的時候,按照一定規則在資訊裡新增了一些關鍵字,增加了hash破解的難度。hmac中所使用的單向雜湊函式並不僅限於一...