1,Java端(依赖 common-codec jar)

  1. package com.jiaMi;
  2. import javax.crypto.Cipher;
  3. import javax.crypto.spec.IvParameterSpec;
  4. import javax.crypto.spec.SecretKeySpec;
  5. import org.apache.commons.codec.binary.Base64;
  6. public class AESUtils {
  7. private final static String KEY="1234123412341324";
  8. private final static String IV="1234123412341234";
  9. /**
  10. * aes 加密
  11. * @param data
  12. * @return
  13. */
  14. public static String encryptData(String data){
  15. try {
  16. Cipher cipher = Cipher.getInstance("AES/CBC/NoPadding");
  17. int blockSize = cipher.getBlockSize();
  18. byte[] dataBytes = data.getBytes();
  19. int plaintextLength = dataBytes.length;
  20. if (plaintextLength % blockSize != 0) {
  21. plaintextLength = plaintextLength + (blockSize - (plaintextLength % blockSize));
  22. }
  23. byte[] plaintext = new byte[plaintextLength];
  24. System.arraycopy(dataBytes, 0, plaintext, 0, dataBytes.length);
  25. SecretKeySpec keyspec = new SecretKeySpec(KEY.getBytes(), "AES");
  26. IvParameterSpec ivspec = new IvParameterSpec(IV.getBytes());
  27. cipher.init(Cipher.ENCRYPT_MODE, keyspec, ivspec);
  28. byte[] encrypted = cipher.doFinal(plaintext);
  29. return new String(Base64.encodeBase64(encrypted));
  30. } catch (Exception e) {
  31. e.printStackTrace();
  32. }
  33. return null;
  34. }
  35. /**
  36. * aes 解密
  37. * @param data 密文
  38. * @return
  39. */
  40. public static String decryptData(String data){
  41. try {
  42. byte[] encrypted1 =Base64.decodeBase64(data.getBytes());
  43. Cipher cipher = Cipher.getInstance("AES/CBC/NoPadding");
  44. SecretKeySpec keyspec = new SecretKeySpec(KEY.getBytes(), "AES");
  45. IvParameterSpec ivspec = new IvParameterSpec(IV.getBytes());
  46. cipher.init(Cipher.DECRYPT_MODE, keyspec, ivspec);
  47. byte[] original = cipher.doFinal(encrypted1);
  48. String originalString = new String(original);
  49. return originalString;
  50. } catch (Exception e) {
  51. e.printStackTrace();
  52. }
  53. return null;
  54. }
  55. public static void main(String[] args) {
  56. String data="php和java互通!";
  57. String enStr=AESUtils.encryptData(data);
  58. System.out.println("加密:"+enStr);
  59. String deStr=AESUtils.decryptData(enStr);
  60. System.out.println("解密:"+deStr);
  61. }
  62. }

2,php 端

  1. <?php
  2. $privateKey = "1234123412341324";
  3. $iv    = "1234123412341324";
  4. $data  = "测试用的数据";
  5. //加密
  6. $encrypted = mcrypt_encrypt(MCRYPT_RIJNDAEL_128, $privateKey, $data, MCRYPT_MODE_CBC, $iv);
  7. echo(base64_encode($encrypted));
  8. echo '<br/>';
  9. //解密
  10. $encryptedData = base64_decode(base64_encode($encrypted));
  11. $decrypted = mcrypt_decrypt(MCRYPT_RIJNDAEL_128, $privateKey, $encryptedData, MCRYPT_MODE_CBC, $iv);
  12. echo($decrypted);
  13. ?>


3,js端

  1. <script src="./crypto-js.js"></script>
  2. <script src="./aes.js"></script>
  3. <script src="./pad-zeropadding.js"></script>
  4. <script>
  5. var data = "测试用的数据";
  6. var key  = CryptoJS.enc.Latin1.parse('1234123412341324');
  7. var iv   = CryptoJS.enc.Latin1.parse('1234123412341324');
  8. //加密
  9. var encrypted = CryptoJS.AES.encrypt(data,key,{iv:iv,mode:CryptoJS.mode.CBC,padding:CryptoJS.pad.ZeroPadding});
  10. //alert(encrypted);
  11. console.log(encrypted.toString());
  12. //解密
  13. var decrypted = CryptoJS.AES.decrypt(encrypted,key,{iv:iv,padding:CryptoJS.pad.ZeroPadding});
  14. console.log(decrypted.toString(CryptoJS.enc.Utf8));
  15. //alert(decrypted.toString(CryptoJS.enc.Utf8));
  16. lt;/script>

三个js文件下载地址: http://download.csdn.net/detail/wd4871/9526147

java,php,js;AES 互通加解密的更多相关文章

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

    /** * AES加解密 */ public class AESHelper { final static String AES_KEY = "43hr8fhu34b58123"; ...

  2. rsa互通密钥对生成及互通加解密(c#,java,php)

    摘要 在数据安全上rsa起着非常大的作用,特别是数据网络通讯的安全上.当异构系统在数据网络通讯上对安全性有所要求时,rsa将作为其中的一种选择,此时rsa的互通性就显得尤为重要了. 本文参考网络资料, ...

  3. node.js 实现 AES CTR 加解密

    node.js 实现 AES CTR 加解密 node aesctr 前言 由于最近我们在做一款安全的文件分享 App, 所有文件均需要使用 aes ctr 来进行加密,aes key 还有一整套完整 ...

  4. ios开发不能不知的动态修复bug补丁第三方库JSPatch 使用学习:JSPatch导入、和使用、.js文件传输加解密

    JSPatch ios开发不能不知的动态修复bug补丁第三方库JSPatch 使用学习:JSPatch导入.和使用..js文件传输加解密 ios开发面临审核周期长,修复bug延迟等让人无奈的问题,所以 ...

  5. javascript JS CryptoJS DES加解密CBC模式与C#DES加解密相同互通

    我们只知道不同的语言解密要相互通用,就需要遵循相同的加密方式,然而在具体做技术预研的时候,就发现会遇到很多问题,网上找的资料也是比较片面,所以我踩了坑,并且把解决方案和相关资料源码提供出来,给需要的朋 ...

  6. 最新版-Python和Java实现Aes相互加解密

    前情 需要使用Python和Java实现同一个AES加解密算法,使Python版本加密的密文能够由Java代码解密,反之亦然. Python实现 Python为3.6版本 # -*- coding: ...

  7. JAVA AES文件加解密

    AES加解密算法,代码如下: /** * Created by hua on 2017/6/30. */ import javax.crypto.Cipher; import javax.crypto ...

  8. JavaScript前端和Java后端的AES加密和解密

    在实际开发项目中,有些数据在前后端的传输过程中需要进行加密,那就需要保证前端和后端的加解密需要统一.这里给大家简单演示AES在JavaScript前端和Java后端是如何实现加密和解密的. 直接上代码 ...

  9. JavaScript前端和Java后端的AES加密和解密(转)

    在实际开发项目中,有些数据在前后端的传输过程中需要进行加密,那就需要保证前端和后端的加解密需要统一.这里给大家简单演示AES在JavaScript前端和Java后端是如何实现加密和解密的. java端 ...

随机推荐

  1. [P1034][NOIP2001]一元三次方程求解 (二分)

    二分 #include<bits/stdc++.h> using namespace std; double a,b,c,d; double fc(double x) { )+b*pow( ...

  2. MySQL(九)

    封装 观察前面的文件发现,除了sql语句及参数不同,其它语句都是一样的 创建MysqlHelper.py文件,定义类 #encoding=utf8 import MySQLdb class Mysql ...

  3. 线段树及Lazy-Tag

    一:线段树 线段树是一种二叉搜索树,与区间树相似,它将一个区间划分成一些单元区间,每个单元区间对应线段树中的一个叶结点.使用线段树可以快速的查找某一个节点在若干条线段中出现的次数,时间复杂度为O(lo ...

  4. JSON.stringify 语法实例讲解 (转)

    原文地址 http://www.jb51.net/article/29893.htm 谢谢 认识javascript也不短的时间了,可是这个用法说实在的,我还是第一次见过,惭愧啊惭愧啊.于是乎,在网上 ...

  5. sencha touch - sass 使用

    需要安装: 1.ruby 2.sass (3.2.12 ) 3.compass (0.12.2) sencha cmd 4以上版本  安装的sass compass 必须为以上版本,否则编译会出错 目 ...

  6. Java中Double类型的精确计算

    import java.math.BigDecimal; public class DoubleUtil { private static final int DEF_DIV_SCALE = 5; / ...

  7. 宿主机系统 Deepin 15.4,解决 Virtualbox 5.1 中 XP虚拟机无法使用 USB设备(如:U盘、罗技优联接收器等)的问题

    软件环境 宿主机系统:Deepin 15.4.1, 虚拟机软件:VirtualBox 5.1 虚拟机系统:XP 操作步骤如下: (1)  安装 Virtualbox Extension Pack 进入 ...

  8. Android: Android Studio签名打包的两种方式(zz)

    注:给我们自己开发的app签名,就代表着我自己的版权,以后要进行升级,也必须要使用相同的签名才行.签名就代表着自己的身份(即keystore),多个app可以使用同一个签名. 如果不知道签名是啥意思, ...

  9. angular 2 - 002 - 基本概念和使用

    service的注入, 注入的是service的单一实例

  10. 第三天:MDN CSS学习笔记

    一:CSS基础 1:DOM 当浏览器显示文档时,它必须将文档的内容与其样式信息结合.它分两个阶段处理文档: 浏览器将 HTML 和 CSS 转化成 DOM (文档对象模型).DOM在计算机内存中表示文 ...