3des base64 java_Java实现MD5, SHA-1, BASE64, 3DES加解密方法

importjava.security.MessageDigest;importjavax.crypto.Cipher;importjavax.crypto.SecretKey;importjavax.crypto.spec.SecretKeySpec;importsun.misc.BASE64Decoder;importsun.misc.BASE64Encoder;/*** Java 加解密工具类

*

*@authormosesxin@gmail.com

**/

public classEncryptUtil {private static final String UTF8 = "utf-8";//定义 加密算法,可用 DES,DESede,Blowfish

private static final String ALGORITHM_DESEDE = "DESede";/*** MD5数字签名

*

*@paramsrc

*@return*@throwsException*/

public String md5Digest(String src) throwsException {//定义数字签名方法, 可用:MD5, SHA-1

MessageDigest md = MessageDigest.getInstance("MD5");byte[] b =md.digest(src.getBytes(UTF8));return this.byte2HexStr(b);

}/*** BASE64 加密

*

*@paramsrc

*@return*@throwsException*/

public String base64Encoder(String src) throwsException {

BASE64Encoder encoder= newBASE64Encoder();returnencoder.encode(src.getBytes(UTF8));

}/*** BASE64解密

*

*@paramdest

*@return*@throwsException*/

public String base64Decoder(String dest) throwsException {

BASE64Decoder decoder= newBASE64Decoder();return newString(decoder.decodeBuffer(dest), UTF8);

}/*** 3DES加密

*

*@paramsrc

*@paramkey

*@return*@throwsException*/

public String desedeEncoder(String src, String key) throwsException {

SecretKey secretKey= newSecretKeySpec(build3DesKey(key), ALGORITHM_DESEDE);

Cipher cipher=Cipher.getInstance(ALGORITHM_DESEDE);

cipher.init(Cipher.ENCRYPT_MODE, secretKey);byte[] b =cipher.doFinal(src.getBytes(UTF8));returnbyte2HexStr(b);

}/*** 3DES解密

*

*@paramdest

*@paramkey

*@return*@throwsException*/

public String desedeDecoder(String dest, String key) throwsException {

SecretKey secretKey= newSecretKeySpec(build3DesKey(key), ALGORITHM_DESEDE);

Cipher cipher=Cipher.getInstance(ALGORITHM_DESEDE);

cipher.init(Cipher.DECRYPT_MODE, secretKey);byte[] b =cipher.doFinal(str2ByteArray(dest));return newString(b, UTF8);

}/*** 字节数组转化为大写16进制字符串

*

*@paramb

*@return

*/

private String byte2HexStr(byte[] b) {

StringBuilder sb= newStringBuilder();for (int i = 0; i < b.length; i++) {

String s= Integer.toHexString(b[i] & 0xFF);if (s.length() == 1) {

sb.append("0");

}

sb.append(s.toUpperCase());

}returnsb.toString();

}/*** 字符串转字节数组

*

*@params

*@return

*/

private byte[] str2ByteArray(String s) {int byteArrayLength = s.length()/2;byte[] b = new byte[byteArrayLength];for (int i = 0; i < byteArrayLength; i++) {byte b0 = (byte) Integer.valueOf(s.substring(i*2, i*2+2), 16).intValue();

b[i]=b0;

}returnb;

}/*** 构造3DES加解密方法key

*

*@paramkeyStr

*@return*@throwsException*/

private byte[] build3DesKey(String keyStr) throwsException {byte[] key = new byte[24];byte[] temp =keyStr.getBytes(UTF8);if (key.length >temp.length) {

System.arraycopy(temp,0, key, 0, temp.length);

}else{

System.arraycopy(temp,0, key, 0, key.length);

}returnkey;

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值