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. BZOJ4095 : [Usaco2013 Dec]The Bessie Shuffle

    首先将排列和整个序列以及询问都反过来,问题变成给定一个位置$x$,问它经过若干轮置换后会到达哪个位置. 每次置换之后窗口都会往右滑动一个,因此其实真实置换是$p[i]-1$. 对于每个询问,求出轮数, ...

  2. [P3625][APIO2009]采油区域 (前缀和)

    这道题用二维前缀和可以做 难度还不算高,细节需要注意 调试了很久…… 主要是细节太多了 #include<bits/stdc++.h> using namespace std; #defi ...

  3. MySQL(七)

    视图 对于复杂的查询,在多次使用后,维护是一件非常麻烦的事情 解决:定义视图 视图本质就是对查询的一个封装 定义视图 create view stuscore as select students.* ...

  4. quepy

    A python framework to transform natural language questions to queries in a database query language. ...

  5. hihocoder1051 补提交卡(贪心)

    http://hihocoder.com/problemset/problem/1051 一开始dfs暴搜超时 这题关键在于理解到,肯定是补连续的几天.所以说写贪心之前要好好想想,怎么贪. //补题卡 ...

  6. linux > 和 >> 、< 区别

    linux中经常会用到将内容输出到某文件当中,只需要在执行命令后面加上>或者>>号即可进入操作. 大于号:将一条命令执行结果(标准输出,或者错误输出,本来都要打印到屏幕上面的)重定向 ...

  7. Deepin 15.4 编译安装 LNMP(PHP 5.6.31 + Nginx 1.12.1 + MySQL 5.6.36)

    先查看先前的文章:Ubuntu 14 编译安装 PHP 5.4.45 + Nginx 1.4.7 + MySQL 5.6.26 笔记 编译 Nginx #安装依赖库 sudo apt-get -y i ...

  8. 对图片进行透明化处理-使用java程序

    因需要将一张白色背景图片处理为透明色,因此上网上搜了搜处理方案,可以通过ps,和美图秀秀,但是我电脑上并没有这两个软件,下载安装太耗时.从网上搜了搜发现原来可以使用java代码进行处理,代码如下: i ...

  9. 命令 上传项目到git中

    点击Clone or dowload会出现一个地址,copy这个地址备用. 接下来就到本地操作了,首先右键你的项目,如果你之前安装git成功的话,右键会出现两个新选项,分别为Git Gui Here, ...

  10. Jupyter notebook安装扩展插件

    1. 安装Jupyter Notebook pip install jupyter 2. 安装Jypyter Notebook扩展包 pip install jupyter_contrib_nbext ...