32_bit_irreversible_encode.java
上传用户:design
上传日期:2022-08-04
资源大小:1k
文件大小:2k
源码类别:

加密解密

开发平台:

Java

  1. 32位不可逆加密算法Java实现  
  2.  
  3. 发布时间:2006.04.21 13:44     来源:JAVA中文站    作者:oneworld 整理 
  4. 32位不可逆加密算法Java实现 
  5. 加密后是一个32位大写字母组合形式,并且本加密方法不可逆! 
  6. public String kljm(String dm,String kl) 
  7. String mw, cmm; 
  8. int k, i, tmp, a, hf, lf, bytes = 16; 
  9. int mm[], l,rand_seed; 
  10. rand_seed = 12345; 
  11. int len=kl.length(); 
  12. if(len>=12) len=12; 
  13. mw =kl.substring(0,len) + dm.trim(); 
  14. l = mw.length(); 
  15. if (bytes > 100) bytes = 100; 
  16. if (l < bytes) 
  17. for (l = l;l<=bytes;l++) 
  18. rand_seed = (31527 * rand_seed + 3) % 32768; 
  19. a = rand_seed % 256; 
  20. if (a < 32 || a > 127) a = (int)('a'); 
  21. mw = mw + (char)(a); 
  22. mm=new int[100]; 
  23. for (l = 0;l<100;l++) 
  24. mm[l]=0; 
  25. for (l = 0;l<bytes;l++) 
  26. a = (int)mw.charAt(l); 
  27. for (i = 1;i<= 8;i++) 
  28. if (a >= 128) 
  29. a -= 128; 
  30. for (k = 0;k<bytes;k++) 
  31. rand_seed = (31527 * rand_seed + 3) % 32768; 
  32. mm[k] += rand_seed % 256; 
  33. else 
  34. for (k = 1;k<=bytes;k++) 
  35. rand_seed = (31527 * rand_seed + 3) % 32768; 
  36. a *= 2; 
  37. for (k = bytes-1;k>=0;k--) 
  38. if (k >= 1) mm[k - 1] += mm[k] / 256; 
  39. mm[k] = mm[k] % 256; 
  40. cmm = ""; 
  41. for (k = 0;k<bytes;k++) 
  42. hf = mm[k] / 16; 
  43. if (hf < 10) 
  44. cmm = cmm + (char)(hf + (short)('0')); 
  45. else 
  46. cmm = cmm + (char)(hf + (short)('A') - 10); 
  47. lf = mm[k] % 16; 
  48. if (lf < 10) 
  49. cmm = cmm + (char)(lf + (short)('0')); 
  50. else 
  51. cmm = cmm + (char)(lf + (short)('A') - 10); 
  52. return cmm; 
  53.