• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

【JAVA和PHP通用的加解密整理版】

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

日常开放中 平台中通常不会只有单一的环境,因此跨平台的通讯 通常会使用标准的AES,DES等加密规则

  公司的项目开发中 遇到了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();

  }

  }

  }


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
php 函数 {php 函数}发布时间:2022-07-10
下一篇:
Java和Php通用的加解密整理版 - 百易城发布时间:2022-07-10
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap