在学习编程的过程中,我觉得不止要获得课本的知识,更多的是通过学习技术知识提高解决问题的能力,这样我们才能走在最前方,更多Java专业知识,广州疯狂java培训为你讲解;公司的项目开发中 遇到了JAVA和PHP的加密解密跨平台的问题 经过多方查找资料以及研究找出一个通用的基础加解密方案如下

  1:JAVA代码 (3DES版)

  import javax.crypto.Cipher;

  import javax.crypto.SecretKey;

  import javax.crypto.spec.SecretKeySpec;

  import org.apache.log4j.Logger;

  import sun.misc.BASE64Decoder;

  import sun.misc.BASE64Encoder;

  /**

  * Java版3DES加密解密,适用于PHP版3DES加密解密(PHP语言开发的MCRYPT_3DES算法、

  MCRYPT_MODE_ECB模式、PKCS7填充方式)

  * @author G007N

  */

  public class DesBase64Tool {

  private static SecretKey secretKey = null;//key对象

  private static Cipher cipher = null; //私鈅加密对象Cipher

  private static String keyString = "AKlMU89D3FchIkhKyMma6FiE";//密钥

  private static Logger log = Logger.getRootLogger();

  static{

  try {

  secretKey = new SecretKeySpec(keyString.getBytes(), "DESede");//获得密钥

  /*获得一个私鈅加密类Cipher,DESede是算法,ECB是加密模式,PKCS5Padding是填充方式*/

  cipher = Cipher.getInstance("DESede/ECB/PKCS5Padding");

  } catch (Exception e) {

  log.error(e.getMessage(), e);

  }

  }

  /**

  * 加密

  * @param message

  * @return

  */

  public static String desEncrypt(String message) {

  String result = ""; //DES加密字符串

  String newResult = "";//去掉换行符后的加密字符串

  try {

  cipher.init(Cipher.ENCRYPT_MODE, secretKey); //设置工作模式为加密模式,给出密钥

  byte[] resultBytes = cipher.doFinal(message.getBytes("UTF-8")); //正式执行加

  密操作

  BASE64Encoder enc = new BASE64Encoder();

  result = enc.encode(resultBytes);//进行BASE64编码

  newResult = filter(result); //去掉加密串中的换行符

  } catch (Exception e) {

  log.error(e.getMessage(), e);

  }

  return newResult;

  }

  /**

  * 解密

  * @param message

  * @return

  * @throws Exception

  */

  public static String desDecrypt(String message) throws Exception {

  String result = "";

  try {

  BASE64Decoder dec = new BASE64Decoder();

  byte[] messageBytes = dec.decodeBuffer(message); //进行BASE64编码

  cipher.init(Cipher.DECRYPT_MODE, secretKey); //设置工作模式为解密模式,给出密钥

  byte[] resultBytes = cipher.doFinal(messageBytes);//正式执行解密操作

  result = new String(resultBytes,"UTF-8");

  } catch (Exception e) {

  e.printStackTrace();

  }

  return result;

  }

  /**

  * 去掉加密字符串换行符

  * @param str

  * @return

  */

  public static String filter(String str) {

  String output = "";

  StringBuffer sb = new StringBuffer();

  for (int i = 0; i < str.length(); i++) {

  int asc = str.charAt(i);

  if (asc != 10 && asc != 13) {

  sb.append(str.subSequence(i, i+1));

  }

  }

  output = new String(sb);

  return output;

  }

  /**

  * 加密解密测试

  * @param args

  */

  public static void main(String[] args) {

  try {

  String strText = "Hello world!";

  String deseResult = desEncrypt(strText);//加密

  System.out.println("加密结果:"+deseResult);

  String desdResult = desDecrypt(deseResult);//解密

  System.out.println("解密结果:"+desdResult);

  } catch (Exception e) {

  e.printStackTrace();

  }

  }

  }

  疯狂Java培训专注软件开发培训,提升学员就业能力,重点提升实践动手能力。技术知识沉淀深厚的老师,让你感受Java的魅力,激发你对于编程的热爱,让你在半年的时间内掌握8-10万的代码量,掌握Java核心技术,成为真正的技术高手;通过大量全真企业项目疯狂训练,迅速积累项目经验。让你成为技能型的现代化高端人才,迅速获得高薪就业!时间不等人,赶紧联系我们吧!疯狂java培训中心地址:广州天河区车陂沣宏大厦3楼。