1.c#版本

  1. /// <summary>
  2. /// Aes加密解密.c#版
  3. /// </summary>
  4. public class BjfxEncryptHelper
  5. {
  6. /// <summary>
  7. /// 加密解密Key
  8. /// </summary>
  9. ////文档示例
  10. public const string Key = "asjfasfaskjdlfljasjfsafsfsadfsdffds";/// <summary>
  11. /// AES加密
  12. /// </summary>
  13. /// <param name="encryptStr">明文</param>
  14. /// <returns></returns>
  15. public static string Encrypt(string encryptStr)
  16. {
  17. return Encrypt(encryptStr, Key);
  18. }
  19.  
  20. /// <summary>
  21. /// AES加密
  22. /// </summary>
  23. /// <param name="encryptStr">明文</param>
  24. /// <param name="key">密钥</param>
  25. /// <returns></returns>
  26. public static string Encrypt(string encryptStr, string key)
  27. {
  28.  
  29. byte[] keyArray = UTF8Encoding.UTF8.GetBytes(key);
  30. byte[] toEncryptArray = UTF8Encoding.UTF8.GetBytes(encryptStr);
  31. RijndaelManaged rDel = new RijndaelManaged();
  32. rDel.Key = keyArray;
  33. rDel.Mode = CipherMode.ECB;
  34. rDel.Padding = PaddingMode.PKCS7;
  35. ICryptoTransform cTransform = rDel.CreateEncryptor();
  36. byte[] resultArray = cTransform.TransformFinalBlock(toEncryptArray, , toEncryptArray.Length);
  37. return Convert.ToBase64String(resultArray, , resultArray.Length);
  38.  
  39. }
  40.  
  41. /// <summary>
  42. /// AES解密
  43. /// </summary>
  44. /// <param name="decryptStr">密文</param>
  45. /// <param name="key">密钥</param>
  46. /// <returns></returns>
  47. public static string Decrypt(string decryptStr)
  48. {
  49. return Decrypt(decryptStr, Key);
  50. }
  51.  
  52. /// <summary>
  53. /// AES解密
  54. /// </summary>
  55. /// <param name="decryptStr">密文</param>
  56. /// <param name="key">密钥</param>
  57. /// <returns></returns>
  58. public static string Decrypt(string decryptStr, string key)
  59. {
  60.  
  61. byte[] keyArray = UTF8Encoding.UTF8.GetBytes(key);
  62. byte[] toEncryptArray = Convert.FromBase64String(decryptStr);
  63. RijndaelManaged rDel = new RijndaelManaged();
  64. rDel.Key = keyArray;
  65. rDel.Mode = CipherMode.ECB;
  66. rDel.Padding = PaddingMode.PKCS7;
  67. ICryptoTransform cTransform = rDel.CreateDecryptor();
  68. byte[] resultArray = cTransform.TransformFinalBlock(toEncryptArray, , toEncryptArray.Length);
  69. return UTF8Encoding.UTF8.GetString(resultArray);
  70.  
  71. }
  72. }

2.Java版本

  1. import java.math.BigInteger;
  2. import javax.crypto.Cipher;
  3. import javax.crypto.KeyGenerator;
  4. import javax.crypto.spec.SecretKeySpec;
  5. import org.apache.commons.codec.binary.Base64;
  6. import org.apache.commons.lang3.StringUtils;
  7. import sun.misc.BASE64Decoder;
  8.  
  9. /**
  10. *
  11. */
  12. public class EncryptUtil {
  13. /**
  14. * 密钥
  15. */
  16. private final String Key="asjfasfaskjdlfljasjfsafsfsadfsdffds";
  17. /**
  18. * 算法
  19. */
  20. private final String Alogorithmstr= "AES/ECB/PKCS5Padding";
  21.  
  22. /**
  23. * 密钥
  24. */
  25. public String getKey() {
  26. return Key;
  27. }
  28.  
  29. /**
  30. * 算法
  31. */
  32. public String getAlogorithmstr() {
  33. return Alogorithmstr;
  34. }
  35.  
  36. /**
  37. * aes解密
  38. *
  39. * @param encrypt 内容
  40. * @return
  41. * @throws Exception
  42. */
  43. public String aesDecrypt(String encrypt) throws Exception {
  44. return aesDecrypt(encrypt, Key);
  45. }
  46.  
  47. /**
  48. * aes加密
  49. *
  50. * @param content
  51. * @return
  52. * @throws Exception
  53. */
  54. public String aesEncrypt(String content) throws Exception {
  55. return aesEncrypt(content, Key);
  56. }
  57.  
  58. /**
  59. * 将byte[]转为各种进制的字符串
  60. *
  61. * @param bytes byte[]
  62. * @param radix 可以转换进制的范围,从Character.MIN_RADIX到Character.MAX_RADIX,超出范围后变为10进制
  63. * @return 转换后的字符串
  64. */
  65. public String binary(byte[] bytes, int radix) {
  66. return new BigInteger(1, bytes).toString(radix);// 这里的1代表正数
  67. }
  68.  
  69. /**
  70. * base 64 encode
  71. *
  72. * @param bytes 待编码的byte[]
  73. * @return 编码后的base 64 code
  74. */
  75. public String base64Encode(byte[] bytes) {
  76. return Base64.encodeBase64String(bytes);
  77. }
  78.  
  79. /**
  80. * base 64 decode
  81. *
  82. * @param base64Code 待解码的base 64 code
  83. * @return 解码后的byte[]
  84. * @throws Exception
  85. */
  86. public byte[] base64Decode(String base64Code) throws Exception {
  87. return StringUtils.isEmpty(base64Code) ? null : new BASE64Decoder().decodeBuffer(base64Code);
  88. }
  89.  
  90. /**
  91. * AES加密
  92. *
  93. * @param content 待加密的内容
  94. * @param encryptKey 加密密钥
  95. * @return 加密后的byte[]
  96. * @throws Exception
  97. */
  98. public byte[] aesEncryptToBytes(String content, String encryptKey) throws Exception {
  99. KeyGenerator kgen = KeyGenerator.getInstance("AES");
  100. kgen.init(128);
  101. Cipher cipher = Cipher.getInstance(Alogorithmstr);
  102. cipher.init(Cipher.ENCRYPT_MODE, new SecretKeySpec(encryptKey.getBytes(), "AES"));
  103.  
  104. return cipher.doFinal(content.getBytes("utf-8"));
  105. }
  106.  
  107. /**
  108. * AES加密为base 64 code
  109. *
  110. * @param content 待加密的内容
  111. * @param encryptKey 加密密钥
  112. * @return 加密后的base 64 code
  113. * @throws Exception
  114. */
  115. public String aesEncrypt(String content, String encryptKey) throws Exception {
  116. return base64Encode(aesEncryptToBytes(content, encryptKey));
  117. }
  118.  
  119. /**
  120. * AES解密
  121. *
  122. * @param encryptBytes 待解密的byte[]
  123. * @param decryptKey 解密密钥
  124. * @return 解密后的String
  125. * @throws Exception
  126. */
  127. public String aesDecryptByBytes(byte[] encryptBytes, String decryptKey) throws Exception {
  128. KeyGenerator kgen = KeyGenerator.getInstance("AES");
  129. kgen.init(128);
  130.  
  131. Cipher cipher = Cipher.getInstance(Alogorithmstr);
  132. cipher.init(Cipher.DECRYPT_MODE, new SecretKeySpec(decryptKey.getBytes(), "AES"));
  133. byte[] decryptBytes = cipher.doFinal(encryptBytes);
  134.  
  135. return new String(decryptBytes);
  136. }
  137.  
  138. /**
  139. * 将base 64 code AES解密
  140. *
  141. * @param encryptStr 待解密的base 64 code
  142. * @param decryptKey 解密密钥
  143. * @return 解密后的string
  144. * @throws Exception
  145. */
  146. public String aesDecrypt(String encryptStr, String decryptKey) throws Exception {
  147. return StringUtils.isEmpty(encryptStr) ? null : aesDecryptByBytes(base64Decode(encryptStr), decryptKey);
  148. }
  149.  
  150. }

java-pom.xml

引入如下依赖

  1. <dependency>
  2. <groupId>commons-codec</groupId>
  3. <artifactId>commons-codec</artifactId>
  4. <version>1.9</version>
  5. </dependency>
  6.  
  7. <dependency>
  8. <groupId>org.apache.commons</groupId>
  9. <artifactId>commons-lang3</artifactId>
  10. <version>3.7</version>
  11. </dependency>

3.测试

  1. /// <summary>
  2. /// 测试加密解密
  3. /// </summary>
  4. static void TestFxEncrypt()
  5. {
  6.  
  7. string encryptStr, decryptStr;
  8. encryptStr = "测试数据看看看卡";
  9.  
  10. Console.WriteLine("============== 256位AES加密 ============\n");
  11. Console.WriteLine("加密前:" + encryptStr);
  12. Console.WriteLine("密 钥:" + BjfxEncryptHelper.Key);
  13. Console.WriteLine();
  14. decryptStr = BjfxEncryptHelper.Encrypt(encryptStr);
  15. Console.WriteLine("加密后:" + decryptStr);
  16.  
  17. encryptStr = BjfxEncryptHelper.Decrypt(decryptStr);
  18. Console.WriteLine("解密后:" + encryptStr);
  19. //c#加密
  20. //1:XtO1f0R4pCOhwLMKiku5+OWeBJTsTgzvSUb5fGQgoUM=
  21. //java加密
  22. //2:XtO1f0R4pCOhwLMKiku5+OWeBJTsTgzvSUb5fGQgoUM=
  23.  
  24. }

注意:

测试代码用到的密码与示例代码用的密钥不一致,真实的密钥的字符长度应为16位.

c#,Java aes加密的更多相关文章

  1. Java AES加密

    Java AES 加密 加密 /** * * @description 加密 * * @param content 需要加密的内容 * @param password 加密密码 * @return * ...

  2. C# 实现 JAVA AES加密解密[原创]

    以下是网上普遍能收到的JAVA AES加密解密方法. 因为里面用到了KeyGenerator 和 SecureRandom,但是.NET 里面没有这2个类.无法使用安全随机数生成KEY. 我们在接收J ...

  3. java AES加密、解密(兼容windows和linux)

      java AES加密.解密 CreationTime--2018年7月14日10点06分 Author:Marydon 1.准备工作 updateTime--2018年8月10日15点28分 up ...

  4. 你真的了解字典(Dictionary)吗? C# Memory Cache 踩坑记录 .net 泛型 结构化CSS设计思维 WinForm POST上传与后台接收 高效实用的.NET开源项目 .net 笔试面试总结(3) .net 笔试面试总结(2) 依赖注入 C# RSA 加密 C#与Java AES 加密解密

    你真的了解字典(Dictionary)吗?   从一道亲身经历的面试题说起 半年前,我参加我现在所在公司的面试,面试官给了一道题,说有一个Y形的链表,知道起始节点,找出交叉节点.为了便于描述,我把上面 ...

  5. Java aes加密C#解密的取巧方法

    摘要: 项目开发过程中遇到一个棘手的问题:A系统使用java开发,通过AES加密数据,B系统使用C#开发,需要从A系统获取数据,但在AES解密的时候遇到麻烦.Java的代码和C#的代码无法互通. Ja ...

  6. Java AES加密案例

    AES加密原理 http://www.blogjava.net/amigoxie/archive/2014/07/06/415503.html PHP 加密 https://segmentfault. ...

  7. C#与Java AES 加密解密

    参考文档:https://www.cnblogs.com/xbzhu/p/7064642.html 前几天对接Java接口,需要C#加密参数,Java解密.奈何网上找了一堆大同小异的加解密方法都跟Ja ...

  8. JAVA AES加密解密

    import java.security.InvalidKeyException; import java.security.NoSuchAlgorithmException; import java ...

  9. Java AES 加密工具类

    package com.microwisdom.utils; import java.security.NoSuchAlgorithmException; import java.security.S ...

  10. Java AES加密解密工具 -- GUI 、在线传输文件

    原理 对于任意长度的明文,AES首先对其进行分组,每组的长度为128位.分组之后将分别对每个128位的明文分组进行加密. 对于每个128位长度的明文分组的加密过程如下:     (1)将128位AES ...

随机推荐

  1. Python 之字符串操作

    # capitalize()将字符串的第一个字符转换为大写 # center(width, fillchar)返回一个指定的宽度 width 居中的字符串,fillchar 为填充的字符,默认为空格. ...

  2. GatewayWorker + LayIM实现即时聊天

    一.程序目录结构 二.代码展示 附LayIM开发文档:https://www.layui.com/doc/modules/layim.html 1.前端代码 <!DOCTYPE html> ...

  3. Mysql 在Linux下的安装

    1.获取mysql源码 wget http://dev.mysql.com/get/Downloads/MySQL-5.5/mysql-5.5.49.tar.gz 3.添加mysql用户和用户组,创建 ...

  4. 调用CAD内的颜色选择对话框

    colordialog类 int color; acedSetColorDialog(color,TRUE,0); 第一个函数返回的是颜色的RGB值

  5. CAD调用导角命令,并返回导角的圆弧对象

    主要用到函数说明: _DMxDrawX::SendStringToExecuteFun 把命令当着函数执行,可以传参数,详细说明如下: 参数 说明 IDispatch* pParam 命令参数,IMx ...

  6. Spring处理自动装配的歧义性

    1.标识首选的bean 2.使用限定符@Qualifier 首先在bean的声明上添加@Qualifier 注解: @Component @Qualifier("cdtest") ...

  7. 图像处理中创建CDib类时无法选择基类类型时怎么办

    图像处理中创建CDib类时无法选择基类类型时怎么办? 类的类型选择Generic Class 在下面的篮筐里输入CObject就行了

  8. Xilinx FPGA的专用时钟引脚及时钟资源相关

    主要参考了https://www.eefocus.com/liu1teng/blog/12-02/237897_4533d.html .Xilinx UG471.UG472以及Xilinx Forum ...

  9. PAT_A1003#Emergency

    Source: PAT A1003 Emergency (25 分) Description: As an emergency rescue team leader of a city, you ar ...

  10. iview Table表格单选框互斥

    表格中添加单选框,并且互斥 首先带data中定义   currentid : 0 :表示默认不选中 { title: "名称", key: "name", re ...