随机加密方法

  1. importjava.security.MessageDigest;
  2. importjava.security.NoSuchAlgorithmException;
  3. importjava.util.Random;
  4. importjavax.crypto.Cipher;
  5. importjavax.crypto.SecretKey;
  6. importjavax.crypto.SecretKeyFactory;
  7. importjavax.crypto.spec.PBEKeySpec;
  8. importjavax.crypto.spec.PBEParameterSpec;
  9. publicclassSecurityUtil{
  10. char[]passwd="mykey".toCharArray();
  11. byte[]salt;
  12. //加密,即使明文一样每次加密的密文都不一样。
  13. publicbyte[]encrypt(Stringtext)throwsException{
  14. //
  15. PBEKeySpecpbks=newPBEKeySpec(passwd);
  16. //由口令生成密钥
  17. SecretKeyFactorykf=SecretKeyFactory.getInstance("PBEWithMD5AndDES");
  18. SecretKeyk=kf.generateSecret(pbks);
  19. //生成随机数盐
  20. salt=newbyte[8];
  21. Randomr=newRandom();
  22. r.nextBytes(salt);
  23. //创建并初始化密码器
  24. Ciphercp=Cipher.getInstance("PBEWithMD5AndDES");
  25. PBEParameterSpecps=newPBEParameterSpec(salt,1000);
  26. cp.init(Cipher.ENCRYPT_MODE,k,ps);
  27. //获取明文,执行加密
  28. byte[]ptext=text.getBytes();
  29. returncp.doFinal(ptext);
  30. }
  31. //解密
  32. publicStringdecrypt(byte[]ctext,byte[]salt)throwsException{
  33. //
  34. PBEKeySpecpbks=newPBEKeySpec(passwd);
  35. //由口令生成密钥
  36. SecretKeyFactorykf=SecretKeyFactory.getInstance("PBEWithMD5AndDES");
  37. SecretKeyk=kf.generateSecret(pbks);
  38. //创建并初始化密码器
  39. Ciphercp=Cipher.getInstance("PBEWithMD5AndDES");
  40. PBEParameterSpecps=newPBEParameterSpec(salt,1000);
  41. cp.init(Cipher.DECRYPT_MODE,k,ps);
  42. byte[]ptext=cp.doFinal(ctext);
  43. returnnewString(ptext);
  44. }
  45. /**
  46. *@returnReturnsthesalt.
  47. */
  48. publicbyte[]getSalt(){
  49. returnsalt;
  50. }
  51. //MD5加密,每次加密都是固定的。
  52. publicStringMD5(StringplainText)throwsNoSuchAlgorithmException{
  53. MessageDigestmd=MessageDigest.getInstance("MD5");
  54. md.update(plainText.getBytes());
  55. byteb[]=md.digest();
  56. inti;
  57. StringBufferbuf=newStringBuffer("");
  58. for(intoffset=0;offset<b.length;offset++){
  59. i=b[offset];
  60. if(i<0)
  61. i+=256;
  62. if(i<16)
  63. buf.append("0");
  64. buf.append(Integer.toHexString(i));
  65. }
  66. returnbuf.toString();//32位的加密
  67. }
  68. }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值