整理记录下,java和php对接,对于数据加解密的方法。

import javax.crypto.Cipher;
import javax.crypto.spec.SecretKeySpec;
import java.util.Base64;/*** @author baihe*/ public class AES {/*** 加密算法** @param sSrc* @param sKey* @return* @throws Exception*/  public static String Encrypt(String sSrc, String sKey) throws Exception {if (sKey == null) {System.out.print("Key为空null");return null;}// 判断Key是否为16位if (sKey.length() != 16) {System.out.print("Key长度不是16位");return null;}byte[] raw = sKey.getBytes("utf-8");SecretKeySpec skeySpec = new SecretKeySpec(raw, "AES");Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding");//"算法/模式/补码方式"cipher.init(Cipher.ENCRYPT_MODE, skeySpec);byte[] encrypted = cipher.doFinal(sSrc.getBytes("utf-8"));String result = Base64.getEncoder().encodeToString(encrypted);return java.net.URLEncoder.encode(result, "UTF-8"); //此处使用BASE64做转码功能,同时能起到2次加密的作用。}// 解密算法public static String Decrypt(String sSrc, String sKey) throws Exception {try {// 判断Key是否正确if (sKey == null) {System.out.print("Key为空null");return null;}// 判断Key是否为16位if (sKey.length() != 16) {System.out.print("Key长度不是16位");return null;}byte[] raw = sKey.getBytes("utf-8");SecretKeySpec skeySpec = new SecretKeySpec(raw, "AES");Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding");cipher.init(Cipher.DECRYPT_MODE, skeySpec);try {sSrc = java.net.URLDecoder.decode(sSrc, "UTF-8");byte[] encrypted1 = Base64.getDecoder().decode(sSrc);//先用base64解密byte[] original = cipher.doFinal(encrypted1);String originalString = new String(original, "utf-8");return originalString;} catch (Exception e) {System.out.println(e.toString());return null;}} catch (Exception ex) {System.out.println(ex.toString());return null;}}public static void main(String[] args) throws Exception {/** 此处使用AES-128-ECB加密模式,key需要为16位。  */  String cKey = "WeDoct_XiangYang";// 需要加密的字串String cSrc = "{\"doctorIdcard\":\"420682198102024516\",\"doctorBelongTeamid\":\"84\",\"idcard\":\"110101200003070236\",\"mobile\":\"13910043421\",\"name\":\"\\u5927\\u767d\",\"type\":\"1\",\"relationship\":\"10\",\"relationDesc\":\"\\u5b59\\u5973\",\"liveProvinceid\":\"420000000000\",\"liveCityid\":\"420600000000\",\"liveCountyid\":\"420682000000\",\"liveTownshipid\":\"420682104000\",\"liveVillageid\":\"420682104001\",\"liveDetailAddress\":\"\\u8944\\u9633\\u5e02\",\"crowdType\":\"1\",\"isTuberculosis\":\"0\",\"isHypertension\":\"0\",\"isDiabetes\":\"0\",\"isPsychologica\":\"0\",\"isDestitute\":\"0\",\"isDisabilit\":\"0\",\"isPoverty\":\"0\",\"isFlowPeople\":\"1\",\"isFiveInsured\":\"0\",\"isLowInsured\":\"0\",\"app_id\":\"xysignbaokang\",\"app_secret\":\"3RDfblpUvziDOmSk\"}";System.out.println(cSrc);// 加密String enString = AES.Encrypt(cSrc, cKey);System.out.println("加密后的字串是:" + enString);// 解密String DeString = AES.Decrypt(enString, cKey);System.out.println("解密后的字串是:" + DeString);}
}

PHP加解密方法:

public static function WeDecrypt($input, $securityKey) {$input = urldecode($input); $input = openssl_decrypt($input, 'AES-128-ECB', $securityKey);    if (!$input) {return false;}  return $input; }public static function WeDoctorEncrypt($input, $securityKey) {$inputArr = json_decode($input, true);//转为数组if (!is_array($inputArr) || empty($inputArr)) {return false;}    $input = json_encode($inputArr, JSON_UNESCAPED_UNICODE);//转为json字符串   //进行Aes加密  $data = openssl_encrypt($input, 'AES-128-ECB', $securityKey);return urlencode($data); }

扫码关注有惊喜

(转载本站文章请注明作者和出处 白贺-studytime)

java和php对接通用加解密方法整理相关推荐

  1. java与go对接AES-GCM加解密

    目录 1. 背景 2. go 3. java 1. 背景 对接第三方系统,数据需要加密传输,但是双方系统使用的开发语言不同,所以要根据实际情况调整加解密方法中的具体细节 2. go 这里需要注意的几点 ...

  2. java pkcs#11读取证书加解密(初学-分享)

    java pkcs#11读取证书加解密(初学-分享) http://www.cnblogs.com/sunfb/archive/2013/02/28/2937227.html 插入USB-KEY, 想 ...

  3. base64前端加解密方法

    18.base64前端加解密方法 1.添加方法js方法 const Base64 = {//加密encode(str) {if (str===undefined || str === "&q ...

  4. Java批量高效压缩支持加解密支持所有压缩格式(Zip/7z/rar)

    前言:有时候需要对很多文件进行压缩,几个还好如果有100个呢对吧,为什么不借助咱们强大的java呢,所以我就写了一个可以批量压缩,支持所有压缩格式的工具类当然也支持加密和解密,下面就是工具类的代码 废 ...

  5. 基于Java的SQL Server数据库加解密系统设计与实现

    目 录 摘 要 1 ABSTRACT 2 第1章 绪论 3 1.1 数据库加解密系统开发背景 3 1.2 国内外现状 3 1.3 本文的主要工作 4 1.4 论文的组织结构 4 第2章 数据库加密的基 ...

  6. 【Bcrypt+AES】 Vue+Java前后端分离信息加解密详解和问题解决

    文章目录 1.简单介绍Bcrypt[单向hash] 2.登录服务:使用Bcrypt加密和验证 2.1 Vue前端使用Bcrypt加密 2.2 SpringBoot后端使用Bcrypt验证密码 3.简单 ...

  7. encodingaeskey java,消息体签名与加解密-开发者QA

    Q 为什么要上线消息加密功能? A 为了更好的保护用户和公众账号的信息安全. Q 接入消息加解密功能复杂吗? A 开发者接入消息加解密功能并不复杂,微信团队提供了5种语言的示例代码(包括C++.php ...

  8. java C# objective-c AES对称加解密

    1 /** 2 * AES加解密 3 */ 4 public class AESHelper { 5 final static String AES_KEY = "43hr8fhu34b58 ...

  9. Java实现一个简单的加密解密方法

    Crypto是Java语言写的一个简单的加密解密方法. 使用方法: 加密方法 String cipherte=Enande.encrypt(content, pass): 解密方法 Enande.de ...

最新文章

  1. Apache Hudi的写时复制和读时合并
  2. webgl内置函数--通用函数
  3. java 释放指针_C库释放来自Rust的指针
  4. c++ map的存储结构_「软帝学院」java集合类框架map及相关常见问题二
  5. php的SAPI,CLI SAPI,CGI SAPI
  6. Linux Shell 脚本基础
  7. 华为P20云文档空间满了怎么清理_原来华为手机能这样清理垃圾,怪不得别人的手机再用两年不卡顿...
  8. 校验php语法是否正确,PHP正则校验email语法详解
  9. mysql sql语句 参数化_MySQL存储过程准备语句(动态SQL)参数化
  10. 计算机word excel试题,计算机基础WORD、EXCEL试题
  11. Mysql 查询根节点下所有叶子节点
  12. 认清性能问题,性能问题深入探究----性能之「道」
  13. 破解寝室安装老毛子路由器校园网电信闪讯锐捷认证
  14. Unity接口的使用
  15. graylog+kafka+zookeeper(单机测试及源码),微服务日志查询使用(七)
  16. PHP打包下载zip文件
  17. 5G NRRC Inactive state是什么状态?
  18. 前端自学第四天-总结
  19. Node模块--chalk
  20. PySpark线性回归与广义线性模型

热门文章

  1. Vue3中使用腾讯地图
  2. Bwapp平台的介绍与搭建方法
  3. 关于微信小程序的一些设计方案
  4. 福利来啦,软件测试入行者的福音,测试项目实战它来了
  5. cad编辑节点快捷键是什么_CAD常用命令、快捷键和命令说明大全
  6. 使用递归方法进行逆序输出字符串
  7. 重启好多次路由器,还是上不了网怎么办?
  8. 多线程编程——prctl()函数介绍
  9. 服务器或者docker容器中安装pip
  10. 2010年SQLite学习笔记之三