黑马程序员技术交流社区

标题: 【分享】简单加密字符串 [打印本页]

作者: 滔哥    时间: 2013-3-8 16:43
标题: 【分享】简单加密字符串
1.随机位置随机长度的用指定字符替换原来字符串中的字符
2.指定字符串指定长度末尾替换

eg: 1.encryptionStr("123456", 3, true, 2, "*")  -->12345*6 or 1234**6 or 12345*
     2.encryptionStr("123456", 3, false, 2, "*")  -->12345**
演示代码:
  1. /**  

  2. 02      * @param str  

  3. 03      *            要处理的str  

  4. 04      * @param keepStart  

  5. 05      *            要保留的字符串  

  6. 06      * @param flag  

  7. 07      *            true-->随机位置随机替换 ,false-->尾部替换len个changeStr  

  8. 08      * @param num  

  9. 09      *            changeStr在str结果中的个数  

  10. 10      * @param changeStr  

  11. 11      *            替换使用changeStr,eg:"*","$","%" ....  

  12. 12      * @return  

  13. 13      */

  14. 14     public static String encryptionStr(String str, int keepStart, boolean flag,  

  15. 15             int num, String changeStr) {  

  16. 16         int lenAll = str.length();  

  17. 17         int strLen = lenAll - keepStart;  

  18. 18         if (keepStart > str.length()  

  19. 19                 || str.length() - keepStart < changeStr.length())  

  20. 20             return str;  

  21. 21         String tempStr = str.substring(keepStart, str.length());  

  22. 22         String pz = str.substring(0, keepStart);  

  23. 23         String result = "";  

  24. 24         Random r = new Random();  

  25. 25         if (flag) {  

  26. 26             num = r.nextInt(strLen - 1) + 1;  

  27. 27             int tempLen = r.nextInt(strLen);  

  28. 28             if (strLen - tempLen <= num) {  

  29. 29                 pz = str.substring(0, pz.length() + tempLen);  

  30. 30                 for (int i = 0; i < num && pz.length() < strLen + keepStart; i++) {  

  31. 31                     pz += changeStr;  

  32. 32                 }  

  33. 33                 return pz;  

  34. 34             }  

  35. 35             result = tempStr.substring(0, tempLen);  

  36. 36             for (int i = 0; i < num && pz.length() < strLen + keepStart; i++) {  

  37. 37                 result += changeStr;  

  38. 38             }  

  39. 39   

  40. 40             result += tempStr.substring(tempLen + num, strLen);  

  41. 41             pz += result;  

  42. 42         } else {  

  43. 43             pz += str.substring(pz.length(), lenAll - num);  

  44. 44             for (int i = 0; i < num; i++) {  

  45. 45                 pz += changeStr;  

  46. 46             }  

  47. 47         }  

  48. 48         return pz;  

  49. 49     }
复制代码

作者: 张卫刚    时间: 2013-3-8 17:24
这么长啊。。。吓我一跳
作者: _王涛    时间: 2013-3-19 12:56
学习了,呵呵..
作者: xinchenglong    时间: 2013-8-26 14:47
我也进来学习学习……




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2