JAVA 与C# 的AES的加密函数、解密函数,加密解密结果一致
来源:互联网 发布:php房产中介网站源码 编辑:程序博客网 时间:2024/05/22 05:20
因为开发需要用到java以及c#之间的数据传输,所以使用到AES的加密函数、解密函数。亲测可用,分享给大家:
java代码:
package my;import javax.crypto.*;import javax.crypto.spec.SecretKeySpec;import sun.misc.*;public class Xianchengmingming { public static void main(String[] args) throws Exception { String key = "ABCDEFGHIJKLMNRS"; String value="hsb:123:1489048530930:60001"; System.out.println("加密:"+aesEncrypt(value,key)); System.out.println("解密:"+aesDecrypt(aesEncrypt(value,key),key)); } /** * AES的加密函数 * @param str 传入需要加密的字符 * @param key 传入一个16位长度的密钥。否则报错 * @return 执行成功返回加密结果,否则报错 * @throws Exception 抛出一个加密异常 */public static String aesEncrypt(String str, String key) throws Exception { if (str == null || key == null) return null; Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding"); cipher.init(Cipher.ENCRYPT_MODE, new SecretKeySpec(key.getBytes("utf-8"), "AES")); byte[] bytes = cipher.doFinal(str.getBytes("utf-8")); return new BASE64Encoder().encode(bytes); }/** * AES的解密函数 * @param str 传入需要解密的字符 * @param key 传入一个16位长度的密钥。否则报错 * @return 执行成功返回加密结果,否则报错 * @throws Exception 抛出一个解密异常 */ public static String aesDecrypt(String str, String key) throws Exception { if (str == null || key == null) return null; Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding"); cipher.init(Cipher.DECRYPT_MODE, new SecretKeySpec(key.getBytes("utf-8"), "AES")); byte[] bytes = new BASE64Decoder().decodeBuffer(str); bytes = cipher.doFinal(bytes); return new String(bytes, "utf-8"); } }
C#代码:
using System;using System.Collections.Generic;using System.Text;using System.Security.Cryptography;using System.IO; namespace ConsoleApplication3{ class Program { static void Main(string[] args) { String key = "ABCDEFGHIJKLMNRS"; Console.WriteLine("解密" + Decrypt("/4+UJG55uVHN6rninZ6Z8nUe2OJHGGAYqcdmdDeQhiM=", key)); Console.ReadLine(); } /// <summary> /// 有密码的AES加密 /// </summary> /// <param name="text">加密字符</param> /// <param name="password">加密的密码</param> /// <param name="iv">密钥</param> /// <returns></returns> public static string Encrypt(string toEncrypt,string key) { byte[] keyArray = UTF8Encoding.UTF8.GetBytes(key); byte[] toEncryptArray = UTF8Encoding.UTF8.GetBytes(toEncrypt); RijndaelManaged rDel = new RijndaelManaged(); rDel.Key = keyArray; rDel.Mode = CipherMode.ECB; rDel.Padding = PaddingMode.PKCS7; ICryptoTransform cTransform = rDel.CreateEncryptor(); byte[] resultArray = cTransform.TransformFinalBlock(toEncryptArray, 0, toEncryptArray.Length); return Convert.ToBase64String(resultArray, 0, resultArray.Length); } /// <summary> /// AES解密 /// </summary> /// <param name="text"></param> /// <param name="password"></param> /// <param name="iv"></param> /// <returns></returns> public static string Decrypt(string toDecrypt,string key) { byte[] keyArray = UTF8Encoding.UTF8.GetBytes(key); byte[] toEncryptArray = Convert.FromBase64String(toDecrypt); RijndaelManaged rDel = new RijndaelManaged(); rDel.Key = keyArray; rDel.Mode = CipherMode.ECB; rDel.Padding = PaddingMode.PKCS7; ICryptoTransform cTransform = rDel.CreateDecryptor(); byte[] resultArray = cTransform.TransformFinalBlock(toEncryptArray, 0, toEncryptArray.Length); return UTF8Encoding.UTF8.GetString(resultArray); } }}
java运行结果:
c#运行结果:
阅读全文
0 0
- JAVA 与C# 的AES的加密函数、解密函数,加密解密结果一致
- Java基于AES的加密与解密
- Java的AES加密解密
- C#加密与解密函数
- C#加密与解密函数
- java AES 加密与解密
- JAVA AES加密与解密
- C#加密解密函数
- Java aes加密C#解密的取巧方法
- AES 加密解密 c#
- c# aes 加密解密
- C# AES加密解密
- C# AES加密解密
- C# AES加密解密
- C# aes加密 解密
- C# AES 加密解密
- 封装好的加密解密函数(URL加密解密、sha1加密解密、des加密解密)
- AES加密解密算法的Java实现
- postgre实现树状结构查询
- 剑指offer:把数列排成最小的数
- Docker安装及使用
- spring data in方法的使用以及动态条件查询+分页
- 了解“用户记忆理论”让你的工作事半功倍
- JAVA 与C# 的AES的加密函数、解密函数,加密解密结果一致
- JavaScript DOM(二)--DOM操作
- 武侠金曲
- Spring Data审计功能@CreatedDate、@CreatedBy、@LastModifiedDate、@LastModifiedBy的使用
- 05-树9 Huffman Codes (30分)
- STM32使用DMA从串口读可变长度数据到内存
- 如何快速有效的发散思维?
- CentOS 安装 php 运行环境
- 第一章:浊酒孤陈秋,爽语自笃知