欢迎来到天天文库
浏览记录
ID:17936510
大小:208.00 KB
页数:15页
时间:2018-09-11
《【每日一步】java加密技术(二)》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、除了DES,我们还知道有DESede(TripleDES,就是3DES)、AES、Blowfish、RC2、RC4(ARCFOUR)等多种对称加密方式,其实现方式大同小异,这里介绍对称加密的另一个算法——PBEPBEPBE——Password-basedencryption(基于密码加密)。其特点在于口令由用户自己掌管,不借助任何物理媒体;采用随机数(这里我们叫做盐)杂凑多重加密等方法保证数据的安全性。是一种简便的加密方式。通过java代码实现如下:Java代码1importjava.security.Key;2importjava.util.Random;34importjava
2、x.crypto.Cipher;5importjavax.crypto.SecretKey;6importjavax.crypto.SecretKeyFactory;7importjavax.crypto.spec.PBEKeySpec;8importjavax.crypto.spec.PBEParameterSpec;910/**11*PBE安全编码组件12*13*@author梁栋14*@version1.015*@since1.016*/17publicabstractclassPBECoderextendsCoder{18/**19*支持以下任意一种算法20*21*
3、>22*PBEWithMD5AndDES23*PBEWithMD5AndTripleDES24*PBEWithSHA1AndDESede25*PBEWithSHA1AndRC2_4026*
4、m();8random.nextBytes(salt);9returnsalt;10}1112/**13*转换密钥14*15*@parampassword16*@return17*@throwsException18*/19privatestaticKeytoKey(Stringpassword)throwsException{20PBEKeySpeckeySpec=newPBEKeySpec(password.toCharArray());21SecretKeyFactorykeyFactory=SecretKeyFactory.getInstance(ALGORITHM
5、);22SecretKeysecretKey=keyFactory.generateSecret(keySpec);2324returnsecretKey;25}2627/**28*加密29*30*@paramdata31*数据32*@parampassword33*密码34*@paramsalt35*盐36*@return37*@throwsException38*/39publicstaticbyte[]encrypt(byte[]data,Stringpassword,byte[]salt)40throwsException{4142Keykey=toKey(password
6、);4344PBEParameterSpecparamSpec=newPBEParameterSpec(salt,100);1Ciphercipher=Cipher.getInstance(ALGORITHM);2cipher.init(Cipher.ENCRYPT_MODE,key,paramSpec);34returncipher.doFinal(data);56}78/**9*解密10*11*@paramdata12*数据13*@parampassword14*密码15*@paramsalt16*盐17*@return18*@throwsException19*/20publ
7、icstaticbyte[]decrypt(byte[]data,Stringpassword,byte[]salt)21throwsException{2223Keykey=toKey(password);2425PBEParameterSpecparamSpec=newPBEParameterSpec(salt,100);26Ciphercipher=Cipher.getInstance(ALGORITHM);27cipher.init(Cipher.DECRYP
此文档下载收益归作者所有