经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 程序设计 » ASP.net » 查看文章
C#与Java AES 加密解密
来源:cnblogs  作者:温柔的悬念。  时间:2018/12/10 9:49:55  对本文有异议

参考文档:https://www.cnblogs.com/xbzhu/p/7064642.html

前几天对接Java接口,需要C#加密参数,Java解密。奈何网上找了一堆大同小异的加解密方法都跟Jaca加密的密文不一致,Java接口也无法解密,直到看见上面链接的第二种方法。能够正常的解密Java加密的密文,说明此方法有效,但这里只有解密,我需要的是加密方法(伸手党做习惯了),没办法读读代码看看是怎么解密的,巧了看到了 CreateDecryptor 改一下 试一下解密 跟Java完全一致 成功!感谢博主!

这是参考文档的博主写的Demo:https://github.com/zhu-xb/AES-Cryptography

  1. /// <summary>
  2. /// AES解密
  3. /// </summary>
  4. /// <param name="data"></param>
  5. /// <param name="key"></param>
  6. /// <returns></returns>
  7. public static string AESDecrypt(string content, string key)
  8. {
  9. KeyGenerator kgen = KeyGenerator.getInstance("AES");
  10. SecureRandom secureRandom = SecureRandom.getInstance("SHA1PRNG");
  11. secureRandom.setSeed(Encoding.ASCII.GetBytes(key));
  12. kgen.init(128, secureRandom);
  13. SecretKey secretKey = kgen.generateKey();
  14. byte[] enCodeFormat = secretKey.getEncoded();
  15. using (AesCryptoServiceProvider aesProvider = new AesCryptoServiceProvider())
  16. {
  17. aesProvider.Key = enCodeFormat;
  18. aesProvider.Mode = CipherMode.ECB;
  19. aesProvider.Padding = PaddingMode.PKCS7;
  20. using (ICryptoTransform cryptoTransform = aesProvider.CreateDecryptor())
  21. {
  22. byte[] inputBuffers = Convert.FromBase64String(content);
  23. byte[] results = cryptoTransform.TransformFinalBlock(inputBuffers, 0, inputBuffers.Length);
  24. aesProvider.Clear();
  25. return Encoding.UTF8.GetString(results);
  26. }
  27. }
  28. }
  1. /// <summary>
  2. /// AES加密
  3. /// </summary>
  4. /// <param name="data"></param>
  5. /// <param name="key"></param>
  6. /// <returns></returns>
  7. public static string AESEncrypt(string content, string key)
  8. {
  9. KeyGenerator kgen = KeyGenerator.getInstance("AES");
  10. SecureRandom secureRandom = SecureRandom.getInstance("SHA1PRNG");
  11. secureRandom.setSeed(Encoding.ASCII.GetBytes(key));
  12. kgen.init(128, secureRandom);
  13. SecretKey secretKey = kgen.generateKey();
  14. byte[] enCodeFormat = secretKey.getEncoded();
  15. using (AesCryptoServiceProvider aesProvider = new AesCryptoServiceProvider())
  16. {
  17. aesProvider.Key = enCodeFormat;
  18. aesProvider.Mode = CipherMode.ECB;
  19. aesProvider.Padding = PaddingMode.PKCS7;
  20. using (ICryptoTransform cryptoTransform = aesProvider.CreateEncryptor())
  21. {
  22. byte[] inputBuffers = Encoding.UTF8.GetBytes(content);
  23. byte[] results = cryptoTransform.TransformFinalBlock(inputBuffers, 0, inputBuffers.Length);
  24. aesProvider.Clear();
  25. return Convert.ToBase64String(results);
  26. }
  27. }
  28. }

再次感谢博主 朱小波 https://www.cnblogs.com/xbzhu/

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号