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. windows上redis添加密码

    命令: config get requirepass config set requirepass pwd redis-server.exe redis-windows.conf. auth   pw ...

  2. swagger常用注解说明

    常用到的注解有: Api ApiModel ApiModelProperty ApiOperation ApiParam ApiResponse ApiResponses ResponseHeader ...

  3. 【迎圣诞,拿大奖】+流量分析+Writeup分享

    太菜了太菜了,刚见到jsfuck时竟然不知道什么东西,自己都不敢说自己做过实验吧上的那道jsfuck题了. 进入正题: 首先解压发现两个文件,一个流量分析包,哇哇哇,我正好刚学了几天wireshark ...

  4. python之名称空间

    1 类名称空间 创建一个类就会创建一个类的名称空间,用来存储类中定义的所有名字,这些名字称为类的属性 而类的良好总属性:数据属性和函数属性 其中类的数据属性是共享给所有对象 print(id(g1.c ...

  5. Install latest git on CentOS 6/7

    Assuming you have sudo/root permission. Try rpmforge-extras first. yum --disablerepo=base,updates -- ...

  6. poj3069 Saruman's Army(贪心)

    https://vjudge.net/problem/POJ-3069 弄清楚一点,第一个stone的位置,考虑左右两边都要覆盖R,所以一般情况下不会在左边第一个(除非前两个相距>R). 一开始 ...

  7. GPG(GnuPG)入门

    GPG(GnuPG)入门 下载: https://gnupg.org/download/index.html 或者 http://www.hellopp.cn/page/5b9a1405c3f1f7d ...

  8. MySQL关于根据日期查询数据的sql语句

    查询在某段日期之间的数据: select * from 数据表  where 时间字段名 BETWEEN '2016-02-01' AND '2016-02-05' 查询往前3个月的数据: selec ...

  9. Django根据现有数据库建立/更新model

    Django引入外部数据库还是比较方便的,步骤如下: 创建一个项目,修改seting文件,在setting里面设置你要连接的数据库类型和连接名称,地址之类,和创建新项目的时候一致 运行下面代码可以自动 ...

  10. Nginx配置,413 Request Entity Too Large错误解决

    今天有同事找我,说图片上传之后,不知道去哪里了.分析了一下问题,找到原因之后做了处理,这里简要记录一下. 问题原因: 1.首先后台log并无错误信息: 2.捡查了一下浏览器,发现network中有报错 ...