package com.joyveb.common.utils;
import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;
import java.security.spec.InvalidKeySpecException;
import javax.crypto.Cipher;
import javax.crypto.SecretKey;
import javax.crypto.SecretKeyFactory;
import javax.crypto.spec.DESKeySpec;
import org.apache.commons.codec.binary.Base64;
import com.joyveb.common.exception.DesException;
public class DESCoder {
private final static String CHARSET = "utf-8";
/**
* 对cipherText进行DES解密
*
* @param cipherText
* @return
* @throws DesException
*/
public static String desDecrypt(String cipherText, String desKey)
throws DesException {
String decryptStr = null;
try {
// 解密
Cipher cipher = Cipher.getInstance("DES/ECB/PKCS5Padding");
byte[] input = Base64.decodeBase64(cipherText.trim().getBytes(
CHARSET));
cipher.init(Cipher.DECRYPT_MODE, genSecretKey(desKey));
byte[] output = cipher.doFinal(input);
decryptStr = new String(output, CHARSET);
} catch (Exception e) {
throw new DesException("DES解密发生异常!", e);
}
return decryptStr;
}
/**
* 对message进行DES加密
*
* @param message
* @return
* @throws DesException
*/
public static String desEncrypt(String message, String desKey)
throws DesException {
String encryptStr = null;
byte encryptByte[];
try {
// 加密
Cipher cipher = Cipher.getInstance("DES/ECB/PKCS5Padding");
cipher.init(Cipher.ENCRYPT_MODE, genSecretKey(desKey));
byte[] cipherText = cipher
.doFinal(message.trim().getBytes(CHARSET));
encryptByte = Base64.encodeBase64(cipherText);
encryptStr = new String(encryptByte, CHARSET);
encryptStr = encryptStr.replaceAll("\r\n", "").replaceAll("\n", "");
} catch (Exception e) {
throw new DesException("des加密发生异常!", e);
}
return encryptStr;
}
private static SecretKey genSecretKey(String key)
throws InvalidKeyException, NoSuchAlgorithmException,
InvalidKeySpecException {
DESKeySpec desKeySpec = new DESKeySpec(hexStringToByte(key));
SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES");
SecretKey secretKey = keyFactory.generateSecret(desKeySpec);
return secretKey;
}
private static byte[] hexStringToByte(String hex) {
int len = (hex.length() / 2);
byte[] result = new byte[len];
char[] achar = hex.toCharArray();
for (int i = 0; i < len; i++) {
int pos = i * 2;
result[i] = (byte) (toByte(achar[pos]) << 4 | toByte(achar[pos + 1]));
}
return result;
}
private static byte toByte(char c) {
byte b = (byte) "0123456789ABCDEF".indexOf(c);
return b;
}
}
分享到:
相关推荐
小程序 DES加密 + 小程序 util包,增加小程序访问安全性
利用Java进行3DES的加密算法,包含字符串密钥,偏移量加密字符串,数组密钥,偏移量加密数组,数组密钥加密数组,字符串密钥加密字符串。如果对你有帮助,麻烦给个好评吧!
在做java的des加密时,总是很难找到base64的包,所以放在这里方便大家使用。附带 java和php对接的des加密算法。
import java.util.*; import java.security.*; public class EncryptionExample { protected String calg = "Blowfish"; // AES. DES, Blowfish protected int keyLen = 128; // 128 for AES, Blowfish, 64 ...
3des md5 base64 util 常用加密算法对称加密和不对称加密
Java实现Des加密(不用加载包),有完整S盒子。 部分代码如下: ackage desJava; import java.util.*; public class Des { byte[] bytekey; public Des(String strKey) { this.bytekey = strKey.getBytes();...
Des加密工具类
先不管3DES加密的方法对不对,方法都是网上的,在运行的时候报了个错,把小弟整死了。找来找去终于自己摸出了方法。 <?php /** * * PHP版3DES加解密类 * * 可与java的3DES(DESede)加密方式兼容 * * @Author: Luo...
java各种util整理-包含: AES加解密,Date时间处理,Des加解密,Emoji表情,Http请求,Json处理,MD5加密,FastDfs文件服务器,RSA加解密加解签名,线程工具类;
/** Created by liu on 2015/7/27. */ import java.security.Key; ...DES算法,加密 @param data 待加密字符串 @param key 加密私钥,长度不能够小于8位 @return 加密后的字节数组,一般结合Bas
java 常用工具类,暂时包括MD5、SHA1、HMAC、3DES加密,进制转换
1.散列类型:MD5, SHA1, SHA256, SHA384, SHA512, RIPEMD160, CRC32, HMACMD5, HMACSHA1, HMACSHA...2.对称类型(含文件加/解密):DES, TripleDES, AES 3.非对称类型(含文件加/解密):RSA, DSA, ECDSA, ECDiffieHellman
java 版本的AESUtil 工具类,高级加密标准(英语:Advanced Encryption Standard,缩写:AES),是一种区块加密标准。这个标准用来替代原先的DES,已经被多方分析且广为全世界所使用。
写在前面: 1.此工具类为整理工具类,可能会有重复,大家可一起维护整理,添加和删除一些常用的工具类,并写上注释. 2.希望大家积极整理维护,争取创建一个强大的android工具类. ... DES加密工具类 ImageUtil新
com.lawyee.wenshuapp.util.Encrypt //3DES加解密 .HttpTask // 网络请求 com.lawyee.wenshuapp.vo.WenShuListVO // 列表bean,可以找到数字对应的键名称 .EncryptVO //加密后bean 里面进行解密操作
3.常用加密算法工具类,包括MD5、SHA、DES、HMAC、Base64等 4.RSA加解密,RSA签名、签名验证类 5.文件处理工具类,实现文件的复制、移动、查找、追加内容等。支持自动识别文件编码,解决中文乱码问题 6.扩展Properties...
DES加密工具类。 DeviceUtil.java 设备信息获取工具类,获得设备型号、设备生产厂商、屏幕尺寸、GPS状态、wifi状态等。 DialogUtil.java 弹窗工具...
程序全文如下: 代码如下:package com.neusoft.test.util.crypt; import java.io.IOException; import java.io.UnsupportedEncodingException;... import java.util.Calendar; import javax.crypto.Ci
Java非对称加密源程序代码实例,本例中使用RSA加密技术,定义加密算法可用 DES,DESede,Blowfish等。 设定字符串为“张三,你好,我是李四” 产生张三的密钥对(keyPairZhang) 张三生成公钥(publicKeyZhang...
Java非对称加密源程序代码实例,本例中使用RSA加密技术,定义加密算法可用 DES,DESede,Blowfish等。 设定字符串为“张三,你好,我是李四” 产生张三的密钥对(keyPairZhang) 张三生成公钥(publicKeyZhang...