Base64加密和解密解决方案(个人项目经验)
2016-01-05 11:28
531 查看
在使用base64加密的时候会出现很多问题,在这里给大家分享一下,下面就是base64加密和解密代码,仅供参考。
在Base64Testl.java类中书写以下代码:
上面的代码直接运行main方法加密和解密接可以了。
在Base64Testl.java类中书写以下代码:
package com.millery.base64.utils; import java.net.URLDecoder; import java.net.URLEncoder; import javax.crypto.Cipher; import javax.crypto.spec.IvParameterSpec; import javax.crypto.spec.SecretKeySpec; import org.apache.commons.codec.binary.Base64; /** * * @项目名称:millery-base64 * @类名称:Base64Test * @类描述:base64加密解密工具类 * @创建人:millery * @创建时间:2016年1月5日 上午10:25:04 * @version: */ public class Base64Test { private final static String HEX = "0123456789EFGHIJ"; //这里IV和myKey必须是8位,超过或者少于8位会报错 private final static byte[] IV = { 0, 2, 4, 5, 6, 7, 9 }; private static String myKey = "miller+u"; /** * * @描述:base64加密 * @创建人:millery * @创建时间:2016年1月5日 上午10:26:56 * @param prePassword * @param secret * @return * @throws Exception */ public static String encrypt(String prePassword, String secret) throws Exception { SecretKeySpec key = new SecretKeySpec(secret.getBytes(), "DES"); Cipher cipher = Cipher.getInstance("DES/CBC/PKCS5Padding"); cipher.init(Cipher.ENCRYPT_MODE, key, new IvParameterSpec(IV)); byte[] results = cipher.doFinal(prePassword.getBytes()); return Base64.encodeBase64String(results); } /** * * @描述:base64解密 * @创建人:millery * @创建时间:2016年1月5日 上午10:27:15 * @param buf * @return */ public static String decrypt(String encStr, String secret) throws Exception { SecretKeySpec key = new SecretKeySpec(secret.getBytes(), "DES"); Cipher cipher = Cipher.getInstance("DES/CBC/PKCS5Padding"); cipher.init(Cipher.DECRYPT_MODE, key, new IvParameterSpec(IV)); byte[] result = cipher.doFinal(Base64.decodeBase64(encStr)); return new String(result); } public static String toHex(byte[] buf) { if (buf == null) return ""; StringBuilder result = new StringBuilder(2 * buf.length); for (int i = 0; i < buf.length; i++) { result.append(HEX.charAt((buf[i] >> 4) & 0x0f)).append( HEX.charAt(buf[i] & 0x0f)); } return result.toString(); } public static byte[] toByte(String hexString) { int len = hexString.length() / 2; byte[] result = new byte[len]; for (int i = 0; i < len; i++) result[i] = Integer.valueOf(hexString.substring(2 * i, 2 * i + 2), 16).byteValue(); return result; } /** * * @描述:base64加密 * @创建人:millery * @创建时间:2016年1月5日 上午9:35:38 * @param plainText * @return */ public static String encrypt(String plainText) { try { String enKey = encrypt(plainText, myKey); // 为了防止加密后出现特殊字符,比如"+",参数是传递不过去的 enKey = URLEncoder.encode(enKey, "utf-8"); return enKey; } catch (Exception e) { e.printStackTrace(); } return null; } /** * * @描述:base64解密 * @创建人:millery * @创建时间:2015年12月28日 下午2:57:54 * @param encryptedText * @return */ public static String decrypt(String encryptedText) { try { if (encryptedText.indexOf("%") != -1) { encryptedText = URLDecoder.decode(encryptedText, "utf-8"); } return MyCodec.decrypt(encryptedText, myKey); } catch (Exception e) { return "false"; } } /** * * @描述:测试主方法 * @创建人:millery * @创建时间:2016年1月5日 上午9:35:24 * @param args */ public static void main(String[] args) { String str = encrypt("123456789"); System.out.println(str); System.out.println(decrypt(str)); } }
上面的代码直接运行main方法加密和解密接可以了。
相关文章推荐
- C#对文件进行加密解密代码
- NODE.JS加密模块CRYPTO常用方法介绍
- Js base64 加密解密介绍
- PHP url 加密解密函数代码
- js加密解密字符串可自定义密码因子
- thinkphp微信开之安全模式消息加密解密不成功的解决办法
- javascript将url中的参数加密解密代码
- PHP、Java des加密解密实例
- PHP使用DES进行加密与解密的方法详解
- PHP rsa加密解密使用方法
- PHP下SSL加密解密、验证、签名方法(很简单)
- python实现的AES双向对称加密解密与用法分析
- 2个比较经典的PHP加密解密函数分享
- 用批处理分割文件并合并成图片
- java之php、Android、JAVA、C# 3DES加密解密
- 一个简单的加密解密程序
- .Net中常用的加密解密介绍
- .Net JAVA JS 加密(三方互通)
- iOS —— base64 <加密解密>
- 黑马学习笔记——Asp.Net加密解密类