zoukankan      html  css  js  c++  java
  • Java和Php通用的加解密整理版

        在学习编程的过程中,我觉得不止要获得课本的知识,更多的是通过学习技术知识提高解决问题的能力,这样我们才能走在最前方,更多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楼。

  • 相关阅读:
    【BZOJ1835】[ZJOI2010]base 基站选址 线段树+DP
    【BZOJ1786】[Ahoi2008]Pair 配对 DP
    【BZOJ3956】Count 主席树+单调栈
    【BZOJ4605】崂山白花蛇草水 权值线段树+kd-tree
    【BZOJ2597】[Wc2007]剪刀石头布 最小费用流
    前端学习笔记之CSS属性设置
    前端学习笔记之HTML body内常用标签
    前端学习笔记之CSS介绍
    前端学习笔记之CSS选择器
    博客园美化技巧汇总
  • 原文地址:https://www.cnblogs.com/gojava/p/3328812.html
Copyright © 2011-2022 走看看