开发中惯用的工具类:加密类、非法字符过滤类

开发中常用的工具类:加密类、非法字符过滤类?下面的类用于字符。有4个方法。1、将字符转化为GBK编码2、将字符转

开发中常用的工具类:加密类、非法字符过滤类

?下面的类用于字符。有4个方法。

1、将字符转化为GBK编码

2、将字符转化为GB2312编码

3、md5加密字符串

4、md5加密文件

?

[java:showcolumns] view plaincopy·········10········20········30········40········50········60········70········80········90········100·······110·······120·······130·······140·······150
  1. import?java.io.File;??import?java.io.FileInputStream;??
  2. import?java.io.IOException;??import?java.nio.MappedByteBuffer;??
  3. import?java.nio.channels.FileChannel.MapMode;??import?java.security.MessageDigest;??
  4. import?java.security.NoSuchAlgorithmException;????
  5. ??public?final?class?CodingTool??
  6. {??????/**?
  7. ?????*???????*?{将字符转化为GBK编码}?
  8. ?????*???????*?@param?str?
  9. ?????*?@return??????*?@see:?{参照的方法}?
  10. ?????*?@author:{pilove310}??????*/??
  11. ????public?static?String?convertToGBK(String?str)??????{??
  12. ??????????try??
  13. ????????{????
  14. ????????????byte[]?bytes?=?str.getBytes("ISO-8859-1");????
  15. ????????????return?new?String(bytes,?"GBK");????
  16. ????????}????
  17. ????????catch?(Exception?e)??????????{??
  18. ??????????????return?str;??
  19. ??????????}??
  20. ??????}??
  21. ??????/**?
  22. ?????*???????*?{将字符转化为GB2312编码}?
  23. ?????*???????*?@param?str?
  24. ?????*?@return??????*?@see:?{参照的方法}?
  25. ?????*?@author:{pilove310}??????*/??
  26. ????public?static?String?convertToGB2312(String?str)??????{??
  27. ??????????try??
  28. ????????{????
  29. ????????????byte[]?bytes?=?str.getBytes("ISO-8859-1");????
  30. ????????????return?new?String(bytes,?"gb2312");????
  31. ????????}????
  32. ????????catch?(Exception?e)??????????{??
  33. ??????????????return?str;??
  34. ??????????}??
  35. ??????}??
  36. ??????/**?
  37. ?????*???????*?{md5加密字符串}?
  38. ?????*???????*?@param?input?
  39. ?????*?@return??????*?@see:?{参照的方法}?
  40. ?????*?@author:{pilove310}??????*/??
  41. ????public?static?final?String?toMD5(String?input)??????{??
  42. ????????byte[]?inputByte?=?input.getBytes();??????????StringBuffer?buf?=?new?StringBuffer();??
  43. ????????MessageDigest?md;//MessageDigest包含md5、SHA等算法??????????try??
  44. ????????{??????????????//返回实现指定md5算法的?MessageDigest?对象。??
  45. ????????????md?=?MessageDigest.getInstance("md5");????????????????
  46. ????????????md.update(inputByte);????????????????
  47. ????????????byte[]?digest?=?md.digest();//通过执行诸如填充之类的最终操作完成哈希计算。????
  48. ????????????for?(int?i?=?0;?i?<?digest.length;?i++)??????????????{??
  49. ????????????????int?val?=?((int)?digest[i])?&?0xff;??????????????????if?(val?<?16)??
  50. ????????????????{??????????????????????buf.append("0");??
  51. ????????????????}??????????????????buf.append(Integer.toHexString(val));??
  52. ????????????}??????????}??
  53. ????????catch?(NoSuchAlgorithmException?e)??????????{??
  54. ??????????????e.printStackTrace();??
  55. ????????}????
  56. ????????return?buf.toString();??????}??
  57. ??????????/**?
  58. ?????*???????*?{md5加密文件的}?
  59. ?????*???????*?@param?file?
  60. ?????*?@return??????*?@throws?NoSuchAlgorithmException?
  61. ?????*?@throws?IOException??????*?@see:?{参照的方法}?
  62. ?????*?@author:{pilove310}??????*/??
  63. ????public?final?static?String?md5(File?file)?throws?NoSuchAlgorithmException,???????IOException{??
  64. ???????MessageDigest?md=MessageDigest.getInstance("md5");?????????FileInputStream?fin=new?FileInputStream(file);??
  65. ???????MappedByteBuffer?mappedByte?=?fin.getChannel().map(MapMode.READ_ONLY,???????0,?file.length());??
  66. ???????md.update(mappedByte);?????????StringBuffer?buf=new?StringBuffer();??
  67. ???????byte[]?digest?=?md.digest();?????????for(int?i=0;i<digest.length;i++){??
  68. ????????int?val=((int)digest[i])?&?0xff;??????????if(val?<?16){??
  69. ?????????buf.append("0");??????????}??
  70. ????????buf.append(Integer.toHexString(val));?????????}??
  71. ???????fin.close();?????????return?buf.toString();??
  72. ????}????
  73. }??

?

下面方法用于过滤sql注入和Xss攻击(方法过滤考虑的攻击方式有限,待完善)

?

[java] view plaincopy
  1. /**??*??
  2. ?*?<p>application?name:{系统安全工具类}</p>??*?<p>application?describing:{处理字符串,把sql注入、xss跨站等字段去除}</p>?
  3. ?*?<p>Copyright:Copyright??</p>??*?<p>company:neusoft</p>?
  4. ?*?<p>time:{时间,如2007.11.16}</p>??*?@author?{pilove310}?
  5. ?*?@version?{v1.0}??*/??
  6. public?final?class?SecTool??{??
  7. /**??*??
  8. ?*?{去除字符串中的sql注入字段}??*??
  9. ?*?@param?str?传入一个String??*?@return??返回一个不包含sql注入字段的String?
  10. ?*?@see:?{参?的方法}??*?@author:{pilove310}?
  11. ?*/??????public?static?String?filterSQLInjection(String?str)??
  12. ????{??????????String?flt?="'|and|exec|insert|select|delete|update|count|*|%|chr|mid|master|truncate|char|declare|;|or|-??
  13. ??|+|,|drop";??
  14. ????????String?filter[]?=?flt.split("|");??????????for(int?i=0;i<filter.length?;?i++)??
  15. ????????{????????????str.replace(filter[i],?"");??
  16. ????????}??????????return?str;??
  17. ????}??????/**?
  18. ?????*???????*?{去除字符串中的xss跨站字段}?
  19. ?????*???????*?@param?str?传入一个String?
  20. ?????*?@return?返回一个不包含XSS跨站字段的String??????*?@see:?{参照的方法}?
  21. ?????*?@author:{pilove310}??????*/??
  22. ????public?static?String?filterXSS(String?str)??????{??
  23. ????????String?flt="<|>|script|&|%23|/n|/0|<scirpt|<scirpt>";??????????String?filter[]?=?flt.split("|");??
  24. ???????????????????
  25. ???????//-------说明:两次循环处理是防止使用拼接进行,实现跨站代码传入-------????????????
  26. ????????for(int?i=0;i<filter.length?;?i++)??????????{??
  27. ??????????str.replace(filter[i],?"");????????????System.out.println(filter[i]+"...");??
  28. ???????????????????}??
  29. //????????for(int?i=0;i<filter.length?;?i++)??//????????{??
  30. //??????????str.replace(filter[i],?"");??//????????}??
  31. ????????return?str;??????}??
  32. }?

原文转自:http://blog.csdn.net/pilove310/article/details/4302130

?