隨筆 - 251  文章 - 504  trackbacks - 0
          <2006年8月>
          303112345
          6789101112
          13141516171819
          20212223242526
          272829303112
          3456789

          本博客系個(gè)人收集材料及學(xué)習(xí)記錄之用,各類“大俠”勿擾!

          留言簿(14)

          隨筆分類

          收藏夾

          My Favorite Web Sites

          名Bloger

          非著名Bloger

          搜索

          •  

          積分與排名

          • 積分 - 202865
          • 排名 - 284

          最新評(píng)論

          首先
          ???我看到很多貼子,上面描述MD5加密解密等話題,因此寫此文章為了把MD5加密問(wèn)題簡(jiǎn)單的說(shuō)個(gè)透徹,并且給大家已經(jīng)實(shí)踐過(guò)的代碼。

          其次
          ???MD5加密并不是把原文加密,這個(gè)大家得注意,既然沒(méi)有把原文加密何來(lái)的解密呢?簡(jiǎn)直是個(gè)笑話。MD5的用途就是把一段原文數(shù)據(jù)通過(guò)一定的算法生成16字節(jié)的密文,通過(guò)這個(gè)密文我們可以檢查原文的數(shù)據(jù)是否被修改過(guò)。常用在網(wǎng)絡(luò)中明文數(shù)據(jù)傳輸,防止傳輸過(guò)程中內(nèi)容被惡意修改。典型的應(yīng)用協(xié)議為radius,radius協(xié)議中有16byte就是MD5所留的,把用戶的密碼加在報(bào)文尾部進(jìn)行MD5,把結(jié)果存在網(wǎng)絡(luò)中,所以明文部分看不到用戶的密碼,當(dāng)服務(wù)器收到此包,用同樣的方法進(jìn)行MD5,如果加密出來(lái)的16byte一樣,說(shuō)明是有效的未被惡意修改的網(wǎng)絡(luò)包。

          最后
          附上實(shí)現(xiàn)的代碼

          1. import?java.security.*;
          2. public?class?MD5?{
          3. ??/**
          4. ???*?MD5
          5. ???*
          6. ???*?@author?Dreamer
          7. ???*/
          8. ??public?MD5()?{
          9. ??}
          10. ??public?static?byte[]?md5(byte[]?in)?{
          11. ????MessageDigest?md?=?null;
          12. ????byte[]?out?=?new?byte[16];
          13. ????try?{
          14. ??????md?=?MessageDigest.getInstance("MD5");
          15. ????}
          16. ????catch?(NoSuchAlgorithmException?ex)?{
          17. ??????System.out.println(ex.toString());
          18. ????}
          19. ????md.reset();
          20. ????md.update(in);
          21. ????out?=?md.digest();
          22. ????return?out;
          23. ??}
          24. ??public?static?byte[]?md5(byte[]?in,?int?len)?{
          25. ????MessageDigest?md?=?null;
          26. ????byte[]?out?=?new?byte[16];
          27. ????try?{
          28. ??????md?=?MessageDigest.getInstance("MD5");
          29. ????}
          30. ????catch?(NoSuchAlgorithmException?ex)?{
          31. ??????System.out.println(ex.toString());
          32. ????}
          33. ????md.reset();
          34. ????md.update(in,?0,?len);
          35. ????out?=?md.digest();
          36. ????return?out;
          37. ??}
          38. }
          posted on 2006-08-10 09:51 matthew 閱讀(288) 評(píng)論(0)  編輯  收藏 所屬分類: 基礎(chǔ)編程篇
          主站蜘蛛池模板: 玛曲县| 九台市| 信丰县| 巴彦县| 鲁甸县| 瓮安县| 宣汉县| 博乐市| 湘西| 封开县| 鹰潭市| 翁牛特旗| 松桃| 宁乡县| 台北县| 龙南县| 互助| 尚志市| 普安县| 东海县| 邢台市| 长沙市| 伊宁县| 怀来县| 灵璧县| 安化县| 尼木县| 无极县| 铜鼓县| 广汉市| 天柱县| 合山市| 阳西县| 从化市| 正阳县| 射阳县| 馆陶县| 海丰县| 平阳县| 宁夏| 安平县|