`

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

阅读更多

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

1、将字符转化为GBK编码

2、将字符转化为GB2312编码

3、md5加密字符串

4、md5加密文件

 

[java:showcolumns] view plain copy
·········10········20········30········40········50········60········70········80········90········100·······110·······120·······130·······140·······150
  1. import  java.io.File;  
  2. import  java.io.FileInputStream;  
  3. import  java.io.IOException;  
  4. import  java.nio.MappedByteBuffer;  
  5. import  java.nio.channels.FileChannel.MapMode;  
  6. import  java.security.MessageDigest;  
  7. import  java.security.NoSuchAlgorithmException;  
  8.   
  9.   
  10. public   final   class  CodingTool  
  11. {  
  12.     /**  
  13.      *   
  14.      * {将字符转化为GBK编码}  
  15.      *   
  16.      * @param str  
  17.      * @return  
  18.      * @see: {参照的方法}  
  19.      * @author:{pilove310}  
  20.      */   
  21.     public   static  String convertToGBK(String str)  
  22.     {  
  23.   
  24.         try   
  25.         {  
  26.   
  27.             byte [] bytes = str.getBytes( "ISO-8859-1" );  
  28.   
  29.             return   new  String(bytes,  "GBK" );  
  30.   
  31.         }  
  32.   
  33.         catch  (Exception e)  
  34.         {  
  35.   
  36.             return  str;  
  37.   
  38.         }  
  39.   
  40.     }  
  41.   
  42.     /**  
  43.      *   
  44.      * {将字符转化为GB2312编码}  
  45.      *   
  46.      * @param str  
  47.      * @return  
  48.      * @see: {参照的方法}  
  49.      * @author:{pilove310}  
  50.      */   
  51.     public   static  String convertToGB2312(String str)  
  52.     {  
  53.   
  54.         try   
  55.         {  
  56.   
  57.             byte [] bytes = str.getBytes( "ISO-8859-1" );  
  58.   
  59.             return   new  String(bytes,  "gb2312" );  
  60.   
  61.         }  
  62.   
  63.         catch  (Exception e)  
  64.         {  
  65.   
  66.             return  str;  
  67.   
  68.         }  
  69.   
  70.     }  
  71.   
  72.     /**  
  73.      *   
  74.      * {md5加密字符串}  
  75.      *   
  76.      * @param input  
  77.      * @return  
  78.      * @see: {参照的方法}  
  79.      * @author:{pilove310}  
  80.      */   
  81.     public   static   final  String toMD5(String input)  
  82.     {  
  83.         byte [] inputByte = input.getBytes();  
  84.         StringBuffer buf = new  StringBuffer();  
  85.         MessageDigest md;//MessageDigest包含md5、SHA等算法   
  86.         try   
  87.         {  
  88.             //返回实现指定md5算法的 MessageDigest 对象。   
  89.             md = MessageDigest.getInstance("md5" );  
  90.               
  91.             md.update(inputByte);  
  92.               
  93.             byte [] digest = md.digest(); //通过执行诸如填充之类的最终操作完成哈希计算。   
  94.   
  95.             for  ( int  i =  0 ; i < digest.length; i++)  
  96.             {  
  97.                 int  val = (( int ) digest[i]) &  0xff ;  
  98.                 if  (val <  16 )  
  99.                 {  
  100.                     buf.append("0" );  
  101.                 }  
  102.                 buf.append(Integer.toHexString(val));  
  103.             }  
  104.         }  
  105.         catch  (NoSuchAlgorithmException e)  
  106.         {  
  107.   
  108.             e.printStackTrace();  
  109.         }  
  110.   
  111.         return  buf.toString();  
  112.     }  
  113.       
  114.     /**  
  115.      *   
  116.      * {md5加密文件的}  
  117.      *   
  118.      * @param file  
  119.      * @return  
  120.      * @throws NoSuchAlgorithmException  
  121.      * @throws IOException  
  122.      * @see: {参照的方法}  
  123.      * @author:{pilove310}  
  124.      */   
  125.     public   final   static  String md5(File file)  throws  NoSuchAlgorithmException,   
  126.     IOException{  
  127.        MessageDigest md=MessageDigest.getInstance("md5" );  
  128.        FileInputStream fin=new  FileInputStream(file);  
  129.        MappedByteBuffer mappedByte = fin.getChannel().map(MapMode.READ_ONLY,   
  130.     0 , file.length());  
  131.        md.update(mappedByte);  
  132.        StringBuffer buf=new  StringBuffer();  
  133.        byte [] digest = md.digest();  
  134.        for ( int  i= 0 ;i<digest.length;i++){  
  135.         int  val=(( int )digest[i]) &  0xff ;  
  136.         if (val <  16 ){  
  137.          buf.append("0" );  
  138.         }  
  139.         buf.append(Integer.toHexString(val));  
  140.        }  
  141.        fin.close();  
  142.        return  buf.toString();  
  143.     }  
  144.   
  145. }  

 

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

 

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

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

 

分享到:
评论

相关推荐

    springBoot-java敏感词语过滤类

    这个"springBoot-java敏感词语过滤类"是一个实用的工具类,用于帮助开发者实现在Java环境中对用户输入或者系统文本进行安全审查,防止不适当、非法或者有害的信息传播。这个工具类通常会包含一系列的方法,用于匹配...

    199个常用PHP源码

    首先,"工具类"通常指的是包含各种通用功能的类库,它们可以被开发者在多个项目中复用。例如,可能会有以下几种工具类: 1. **字符串处理类**:包含对字符串的各种操作,如格式化、加密解密、拼接、截取等。 2. **...

    明日科技C#开发入门及项目实战

    实例085 自动删除textbox控件中的非法字符 实例086 在richtextbox控件中替换文本文字 实例087 利用richtextbox控件实现文字定位与标示 实例088 将数据表中的字段添加到combobox控件中 实例089 对listbox控件中的数据...

    教你破解电脑中的“达·芬奇密码”

    它们将需要加密的文件移动到含有特殊字符的隐藏文件夹中,使得普通用户在资源管理器中无法轻易访问这些文件。 - **安全性评估**:虽然这种方式对普通用户来说具有一定的隐蔽性,但对于有一定技术背景的人来说,通过...

    Java开发实战1200例(第1卷).(清华出版.李钟尉.陈丹丹).part3

    实例001 下载JDK开发工具包 3 实例002 把JDK工具包安装到指定磁盘 4 实例003 设置JDK的环境变量 6 实例004 验证Java开发环境 7 实例005 下载并安装JRE执行环境 8 实例006 编程输出星号组成的等腰三角形 9 1.2 开发...

    Filter驱动开发笔记

    - **链表使用**:链表是驱动程序中常用的数据结构之一,用于组织和管理数据。 - **应用场景**:数据包队列、缓存管理等。 #### 36. 使用DeviceIoControl通信 - **DeviceIoControl**:用于与设备驱动程序进行交互。...

    基于PHP面向对象的自定义MVC框架高级项目开发12天视频

    - 输入验证:使用filter_var等函数过滤非法字符。 - SQL注入防护:使用预处理语句或ORM操作数据库。 - 密码加密:使用bcrypt等算法存储密码。 #### 六、总结 本系列视频教程详细介绍了如何使用PHP语言构建一个...

    Java安全与质量编码规范.docx

    - **关键数据管理:** 对敏感数据进行加密处理,确保即使数据库被非法访问也无法直接获取到明文数据。 - **防止SQL注入:** 使用预编译语句或ORM框架等手段来避免SQL注入攻击。 - **数据库数据分级存储管理:** ...

    SQL攻击与防御

    - 示例:使用自动化工具定期扫描代码中的漏洞。 7. **安全意识培训**:提高员工的安全意识,特别是对于开发人员来说尤为重要。 - 示例:定期组织安全培训课程。 8. **更新与打补丁**:及时更新数据库管理系统和...

    PHP安全SDK及编码规范

    1. **输入验证**:提供预定义的函数或类,用于验证用户输入,例如检查邮箱格式、过滤非法字符等,避免恶意数据进入系统。 2. **SQL安全**:提供预处理语句或参数绑定功能,以防止SQL注入。这些函数可以确保即使用户...

    util-java:项目中常使用的工具收集

    总之,"util-java"项目为开发者提供了丰富的工具类,涵盖了安全和验证等多个方面,可以广泛应用于各种Java项目中,提高代码的可复用性和安全性。通过合理地使用这些工具类,开发者可以更加专注于业务逻辑的实现,而...

    JAVA源码JAVA基于局域网的聊天室系统(源代码+论文)

    过滤非法字符输入,预防SQL注入等攻击手段。 #### 知识点五:扩展功能与未来发展 除了基本的聊天功能外,还可以考虑增加一些高级特性来提升用户体验,例如: - **多媒体支持**:允许用户发送图片、音频甚至视频...

    c#开发的成绩管路系统

    开发过程中,单元测试和集成测试是必不可少的,确保每个功能的正确性。性能测试则能发现潜在的瓶颈,以便进行代码优化。 10. **持续集成与部署** 使用持续集成工具如Jenkins或Visual Studio Team Services,可以...

Global site tag (gtag.js) - Google Analytics