MD5鍔犲瘑绠楁硶
鍙戝竷: 2008-7-15 14:46 | 浣滆: 缃戠粶杞浇 | 鏉ユ簮: 缃戠粶杞浇 | 鏌ョ湅: 48娆
浠嬬粛MD5鍔犲瘑绠楁硶鍩烘湰鎯呭喌MD5鐨勫叏绉版槸Message-Digest Algorithm 5锛屽湪90骞翠唬鍒濈敱MIT鐨勮绠楁満绉戝瀹為獙瀹ゅ拰RSA Data Security Inc鍙戞槑锛岀粡MD2銆丮D3鍜孧D4鍙戝睍鑰屾潵銆
Message-Digest娉涙寚瀛楄妭涓(Message)鐨凥ash鍙樻崲锛屽氨鏄妸涓涓换鎰忛暱搴︾殑瀛楄妭涓插彉鎹㈡垚涓瀹氶暱鐨勫ぇ鏁存暟銆傝娉ㄦ剰鎴戜娇鐢ㄤ簡"瀛楄妭涓"鑰屼笉鏄"瀛楃涓"杩欎釜璇嶏紝鏄洜涓鸿繖绉嶅彉鎹㈠彧涓庡瓧鑺傜殑鍊兼湁鍏筹紝涓庡瓧绗﹂泦鎴栫紪鐮佹柟寮忔棤鍏炽
MD5灏嗕换鎰忛暱搴︾殑"瀛楄妭涓"鍙樻崲鎴愪竴涓128bit鐨勫ぇ鏁存暟锛屽苟涓斿畠鏄竴涓笉鍙嗙殑瀛楃涓插彉鎹㈢畻娉曪紝鎹㈠彞璇濊灏辨槸锛屽嵆浣夸綘鐪嬪埌婧愮▼搴忓拰绠楁硶鎻忚堪锛屼篃鏃犳硶灏嗕竴涓狹D5鐨勫煎彉鎹㈠洖鍘熷鐨勫瓧绗︿覆锛屼粠鏁板鍘熺悊涓婅锛屾槸鍥犱负鍘熷鐨勫瓧绗︿覆鏈夋棤绌峰涓紝杩欐湁鐐硅薄涓嶅瓨鍦ㄥ弽鍑芥暟鐨勬暟瀛﹀嚱鏁般
MD5鐨勫吀鍨嬪簲鐢ㄦ槸瀵逛竴娈礛essage(瀛楄妭涓)浜х敓fingerprint(鎸囩汗)锛屼互闃叉琚"绡℃敼"銆備妇涓緥瀛愶紝浣犲皢涓娈佃瘽鍐欏湪涓涓彨readme.txt鏂囦欢涓紝骞跺杩欎釜readme.txt浜х敓涓涓狹D5鐨勫煎苟璁板綍鍦ㄦ锛岀劧鍚庝綘鍙互浼犳挱杩欎釜鏂囦欢缁欏埆浜猴紝鍒汉濡傛灉淇敼浜嗘枃浠朵腑鐨勪换浣曞唴瀹癸紝浣犲杩欎釜鏂囦欢閲嶆柊璁$畻MD5鏃跺氨浼氬彂鐜般傚鏋滃啀鏈変竴涓涓夋柟鐨勮璇佹満鏋勶紝鐢∕D5杩樺彲浠ラ槻姝㈡枃浠朵綔鑰呯殑"鎶佃禆"锛岃繖灏辨槸鎵璋撶殑鏁板瓧绛惧悕搴旂敤銆
MD5杩樺箍娉涚敤浜庡姞瀵嗗拰瑙e瘑鎶鏈笂锛屽湪寰堝鎿嶄綔绯荤粺涓紝鐢ㄦ埛鐨勫瘑鐮佹槸浠D5鍊硷紙鎴栫被浼肩殑鍏跺畠绠楁硶锛夌殑鏂瑰紡淇濆瓨鐨勶紝鐢ㄦ埛Login鐨勬椂鍊欙紝绯荤粺鏄妸鐢ㄦ埛杈撳叆鐨勫瘑鐮佽绠楁垚MD5鍊硷紝鐒跺悗鍐嶅幓鍜岀郴缁熶腑淇濆瓨鐨凪D5鍊艰繘琛屾瘮杈冿紝鑰岀郴缁熷苟涓"鐭ラ亾"鐢ㄦ埛鐨勫瘑鐮佹槸浠涔堛
涓浜涢粦瀹㈢牬鑾疯繖绉嶅瘑鐮佺殑鏂规硶鏄竴绉嶈绉颁负"璺戝瓧鍏"鐨勬柟娉曘傛湁涓ょ鏂规硶寰楀埌瀛楀吀锛屼竴绉嶆槸鏃ュ父鎼滈泦鐨勭敤鍋氬瘑鐮佺殑瀛楃涓茶〃锛屽彟涓绉嶆槸鐢ㄦ帓鍒楃粍鍚堟柟娉曠敓鎴愮殑锛屽厛鐢∕D5绋嬪簭璁$畻鍑鸿繖浜涘瓧鍏搁」鐨凪D5鍊硷紝鐒跺悗鍐嶇敤鐩爣鐨凪D5鍊煎湪杩欎釜瀛楀吀涓绱€
鍗充娇鍋囪瀵嗙爜鐨勬渶澶ч暱搴︿负8锛屽悓鏃跺瘑鐮佸彧鑳芥槸瀛楁瘝鍜屾暟瀛楋紝鍏26+26+10=62涓瓧绗︼紝鎺掑垪缁勫悎鍑虹殑瀛楀吀鐨勯」鏁板垯鏄疨(62,1)+P(62,2)....+P(62,8)锛岄偅涔熷凡缁忔槸涓涓緢澶╂枃鐨勬暟瀛椾簡锛屽瓨鍌ㄨ繖涓瓧鍏稿氨闇瑕乀B绾х殑纾佺洏缁勶紝鑰屼笖杩欑鏂规硶杩樻湁涓涓墠鎻愶紝灏辨槸鑳借幏寰楃洰鏍囪处鎴风殑瀵嗙爜MD5鍊肩殑鎯呭喌涓嬫墠鍙互銆
鍦ㄥ緢澶氱數瀛愬晢鍔″拰绀惧尯搴旂敤涓紝绠$悊鐢ㄦ埛鐨凙ccount鏄竴绉嶆渶甯哥敤鐨勫熀鏈姛鑳斤紝灏界寰堝Application Server鎻愪緵浜嗚繖浜涘熀鏈粍浠讹紝浣嗗緢澶氬簲鐢ㄥ紑鍙戣呬负浜嗙鐞嗙殑鏇村ぇ鐨勭伒娲绘ц繕鏄枩娆㈤噰鐢ㄥ叧绯绘暟鎹簱鏉ョ鐞嗙敤鎴凤紝鎳掓儼鐨勫仛娉曟槸鐢ㄦ埛鐨勫瘑鐮佸線寰浣跨敤鏄庢枃鎴栫畝鍗曠殑鍙樻崲鍚庣洿鎺ヤ繚瀛樺湪鏁版嵁搴撲腑锛屽洜姝よ繖浜涚敤鎴风殑瀵嗙爜瀵硅蒋浠跺紑鍙戣呮垨绯荤粺绠$悊鍛樻潵璇村彲浠ヨ姣棤淇濆瘑鍙█锛屾湰鏂囩殑鐩殑鏄粙缁峂D5鐨凧ava Bean鐨勫疄鐜帮紝鍚屾椂缁欏嚭鐢∕D5鏉ュ鐞嗙敤鎴风殑Account瀵嗙爜鐨勪緥瀛愶紝杩欑鏂规硶浣垮緱绠$悊鍛樺拰绋嬪簭璁捐鑰呴兘鏃犳硶鐪嬪埌鐢ㄦ埛鐨勫瘑鐮侊紝灏界浠栦滑鍙互鍒濆鍖栧畠浠備絾閲嶈鐨勪竴鐐规槸瀵逛簬鐢ㄦ埛瀵嗙爜璁剧疆涔犳儻鐨勪繚鎶
MD鍔犲瘑绠楁硶鐨凧AVA鎻忚堪涓猴細
import java.security.*;
import java.security.spec.*;
class Md5{
public final static String MD5(String s){
char hexDigits[] = {
'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'};
try {
byte[] strTemp = s.getBytes();
MessageDigest mdTemp = MessageDigest.getInstance("MD5");
mdTemp.update(strTemp);
byte[] md = mdTemp.digest();
int j = md.length;
char str[] = new char[j * 2];
int k = 0;
for (int i = 0; i < j; i++) {
byte byte0 = md[i];
str[k++] = hexDigits[byte0 >>> 4 & 0xf];
str[k++] = hexDigits[byte0 & 0xf];
}
return new String(str);
}
catch (Exception e){
return null;
}
}
public static void main(String[] args){
System.out.print(MD5.Md5("XX"));
}




发表于 2009-1-5 19:48
| 











