java的DES加密、解密和MD5加密
2013-06-14 16:21
495 查看
今天需要做一个数据的加密和解密,在查看了相关的资料和代码后,初次写出了一个实例:
import java.io.UnsupportedEncodingException; import java.net.URLDecoder; import java.net.URLEncoder; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; import java.security.SecureRandom; import javax.crypto.Cipher; import javax.crypto.KeyGenerator; import javax.crypto.SecretKey; import com.sun.org.apache.xml.internal.security.utils.Base64; /** * 加密解密 工具 * * @author luosheng */ public class SecretUtil { /** * 密匙 */ private static final String ENCYPTION_KEY = "123dddd55555"; /** * 进行MD5加密 * * @param info * 要加密的信息 * @return String 加密后的字符串 */ public static String encryptToMD5(String info) { byte[] digesta = null; try { // 得到一个md5的消息摘要 MessageDigest alga = MessageDigest.getInstance("MD5"); // 添加要进行计算摘要的信息 alga.update(info.getBytes()); // 得到该摘要 digesta = alga.digest(); } catch (NoSuchAlgorithmException e) { e.printStackTrace(); } // 将摘要转为字符串 String rs = null; try { rs = URLEncoder.encode(Base64.encode(digesta), "UTF-8"); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } return rs; } /** * 创建密匙 * * @param algorithm * 加密算法,可用 DES,DESede,Blowfish * @return SecretKey 秘密(对称)密钥 */ private static SecretKey createSecretKey(String algorithm) { // 声明KeyGenerator对象 KeyGenerator keygen; // 声明 密钥对象 SecretKey deskey = null; try { // 返回生成指定算法的秘密密钥的 KeyGenerator 对象 keygen = KeyGenerator.getInstance(algorithm); keygen.init(new SecureRandom(ENCYPTION_KEY.getBytes())); // 生成一个密钥 deskey = keygen.generateKey(); } catch (NoSuchAlgorithmException e) { e.printStackTrace(); } // 返回密匙 return deskey; } /** * 进行DES加密 * * @param key * 密匙 * @param info * 要加密的信息 * @return String 加密后的信息 */ public static String encryptToDES(String info) { // 定义 加密算法,可用 DES,DESede,Blowfish String Algorithm = "DES"; // 定义要生成的密文 byte[] cipherByte = null; String cipherString = null; try { // 得到加密/解密器 Cipher c1 = Cipher.getInstance(Algorithm); // 用指定的密钥和模式初始化Cipher对象 c1.init(Cipher.ENCRYPT_MODE, createSecretKey("DES")); // 对要加密的内容进行编码处理, cipherByte = c1.doFinal(info.getBytes("UTF-8")); cipherString = new String(URLEncoder.encode(Base64.encode(cipherByte),"UTF-8")); } catch (Exception e) { e.printStackTrace(); } // 返回密文 return cipherString; } /** * 根据密匙进行DES解密 * * @param key * 密匙 * @param sInfo * 要解密的密文 * @return String 返回解密后信息 */ public static String decryptByDES(String sInfo) { // 定义 加密算法, String Algorithm = "DES"; byte[] cipherByte = null; try { // 得到加密/解密器 Cipher c1 = Cipher.getInstance(Algorithm); // 用指定的密钥和模式初始化Cipher对象 c1.init(Cipher.DECRYPT_MODE, createSecretKey("DES")); // 对要解密的内容进行编码处理 cipherByte = c1.doFinal(Base64.decode(URLDecoder.decode(sInfo,"UTF-8"))); } catch (Exception e) { e.printStackTrace(); } String res = null; try { res = new String(cipherByte,"UTF-8"); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } return res; } /** * 测试 * * @param args */ public static void main(String[] args) { // 执行MD5加密 System.out.println("经过MD5:" + SecretUtil.encryptToMD5("asdfgh")); // 用密匙加密信息 String str1 = SecretUtil.encryptToDES("sdfghjd"); System.out.println("使用des加密信息:" + str1); // 使用密匙解密 String str2 = SecretUtil.decryptByDES(str1); System.out.println("解密后为:" + str2); } }
相关文章推荐
- java实现DES加密与解密,md5加密
- Java实现DES加密与解密,md5加密以及Java实现MD5加密解密类
- October 21st, 2010 Java解密C#DES加密数据
- 基于java数组的DES加密、解密的算法实现
- java中常用的工具类(三)连接数据库的综合类,DES加密和解密,Base64,ExcelUtil工具类,
- JAVA的MD5加密与解密
- Android平台和java平台 DES加密解密互通程序及其不能互通的原因
- MD5加密、DES加密,DES解密
- java的MD5加密与解密
- java 采用MD5加密解密
- DES加密和解密PHP,Java,ObjectC统一的方法
- DES加密解密——论java和.net
- java MD5加密和解密
- Java的MD5加密和解密
- Java常用工具类封装——DES加密和解密的工具类
- des加密解密JAVA与.NET互通实例
- Java实现MD5加密及解密的代码实例分享
- 使用C# DES解密java DES加密的字符串
- JAVA实现DES加密和解密
- android或java用DES加密解密文件