c#,Java aes加密
1.c#版本
- /// <summary>
- /// Aes加密解密.c#版
- /// </summary>
- public class BjfxEncryptHelper
- {
- /// <summary>
- /// 加密解密Key
- /// </summary>
- ////文档示例
- public const string Key = "asjfasfaskjdlfljasjfsafsfsadfsdffds";/// <summary>
- /// AES加密
- /// </summary>
- /// <param name="encryptStr">明文</param>
- /// <returns></returns>
- public static string Encrypt(string encryptStr)
- {
- return Encrypt(encryptStr, Key);
- }
- /// <summary>
- /// AES加密
- /// </summary>
- /// <param name="encryptStr">明文</param>
- /// <param name="key">密钥</param>
- /// <returns></returns>
- public static string Encrypt(string encryptStr, string key)
- {
- byte[] keyArray = UTF8Encoding.UTF8.GetBytes(key);
- byte[] toEncryptArray = UTF8Encoding.UTF8.GetBytes(encryptStr);
- RijndaelManaged rDel = new RijndaelManaged();
- rDel.Key = keyArray;
- rDel.Mode = CipherMode.ECB;
- rDel.Padding = PaddingMode.PKCS7;
- ICryptoTransform cTransform = rDel.CreateEncryptor();
- byte[] resultArray = cTransform.TransformFinalBlock(toEncryptArray, , toEncryptArray.Length);
- return Convert.ToBase64String(resultArray, , resultArray.Length);
- }
- /// <summary>
- /// AES解密
- /// </summary>
- /// <param name="decryptStr">密文</param>
- /// <param name="key">密钥</param>
- /// <returns></returns>
- public static string Decrypt(string decryptStr)
- {
- return Decrypt(decryptStr, Key);
- }
- /// <summary>
- /// AES解密
- /// </summary>
- /// <param name="decryptStr">密文</param>
- /// <param name="key">密钥</param>
- /// <returns></returns>
- public static string Decrypt(string decryptStr, string key)
- {
- byte[] keyArray = UTF8Encoding.UTF8.GetBytes(key);
- byte[] toEncryptArray = Convert.FromBase64String(decryptStr);
- RijndaelManaged rDel = new RijndaelManaged();
- rDel.Key = keyArray;
- rDel.Mode = CipherMode.ECB;
- rDel.Padding = PaddingMode.PKCS7;
- ICryptoTransform cTransform = rDel.CreateDecryptor();
- byte[] resultArray = cTransform.TransformFinalBlock(toEncryptArray, , toEncryptArray.Length);
- return UTF8Encoding.UTF8.GetString(resultArray);
- }
- }
2.Java版本
- import java.math.BigInteger;
- import javax.crypto.Cipher;
- import javax.crypto.KeyGenerator;
- import javax.crypto.spec.SecretKeySpec;
- import org.apache.commons.codec.binary.Base64;
- import org.apache.commons.lang3.StringUtils;
- import sun.misc.BASE64Decoder;
- /**
- *
- */
- public class EncryptUtil {
- /**
- * 密钥
- */
- private final String Key="asjfasfaskjdlfljasjfsafsfsadfsdffds";
- /**
- * 算法
- */
- private final String Alogorithmstr= "AES/ECB/PKCS5Padding";
- /**
- * 密钥
- */
- public String getKey() {
- return Key;
- }
- /**
- * 算法
- */
- public String getAlogorithmstr() {
- return Alogorithmstr;
- }
- /**
- * aes解密
- *
- * @param encrypt 内容
- * @return
- * @throws Exception
- */
- public String aesDecrypt(String encrypt) throws Exception {
- return aesDecrypt(encrypt, Key);
- }
- /**
- * aes加密
- *
- * @param content
- * @return
- * @throws Exception
- */
- public String aesEncrypt(String content) throws Exception {
- return aesEncrypt(content, Key);
- }
- /**
- * 将byte[]转为各种进制的字符串
- *
- * @param bytes byte[]
- * @param radix 可以转换进制的范围,从Character.MIN_RADIX到Character.MAX_RADIX,超出范围后变为10进制
- * @return 转换后的字符串
- */
- public String binary(byte[] bytes, int radix) {
- return new BigInteger(1, bytes).toString(radix);// 这里的1代表正数
- }
- /**
- * base 64 encode
- *
- * @param bytes 待编码的byte[]
- * @return 编码后的base 64 code
- */
- public String base64Encode(byte[] bytes) {
- return Base64.encodeBase64String(bytes);
- }
- /**
- * base 64 decode
- *
- * @param base64Code 待解码的base 64 code
- * @return 解码后的byte[]
- * @throws Exception
- */
- public byte[] base64Decode(String base64Code) throws Exception {
- return StringUtils.isEmpty(base64Code) ? null : new BASE64Decoder().decodeBuffer(base64Code);
- }
- /**
- * AES加密
- *
- * @param content 待加密的内容
- * @param encryptKey 加密密钥
- * @return 加密后的byte[]
- * @throws Exception
- */
- public byte[] aesEncryptToBytes(String content, String encryptKey) throws Exception {
- KeyGenerator kgen = KeyGenerator.getInstance("AES");
- kgen.init(128);
- Cipher cipher = Cipher.getInstance(Alogorithmstr);
- cipher.init(Cipher.ENCRYPT_MODE, new SecretKeySpec(encryptKey.getBytes(), "AES"));
- return cipher.doFinal(content.getBytes("utf-8"));
- }
- /**
- * AES加密为base 64 code
- *
- * @param content 待加密的内容
- * @param encryptKey 加密密钥
- * @return 加密后的base 64 code
- * @throws Exception
- */
- public String aesEncrypt(String content, String encryptKey) throws Exception {
- return base64Encode(aesEncryptToBytes(content, encryptKey));
- }
- /**
- * AES解密
- *
- * @param encryptBytes 待解密的byte[]
- * @param decryptKey 解密密钥
- * @return 解密后的String
- * @throws Exception
- */
- public String aesDecryptByBytes(byte[] encryptBytes, String decryptKey) throws Exception {
- KeyGenerator kgen = KeyGenerator.getInstance("AES");
- kgen.init(128);
- Cipher cipher = Cipher.getInstance(Alogorithmstr);
- cipher.init(Cipher.DECRYPT_MODE, new SecretKeySpec(decryptKey.getBytes(), "AES"));
- byte[] decryptBytes = cipher.doFinal(encryptBytes);
- return new String(decryptBytes);
- }
- /**
- * 将base 64 code AES解密
- *
- * @param encryptStr 待解密的base 64 code
- * @param decryptKey 解密密钥
- * @return 解密后的string
- * @throws Exception
- */
- public String aesDecrypt(String encryptStr, String decryptKey) throws Exception {
- return StringUtils.isEmpty(encryptStr) ? null : aesDecryptByBytes(base64Decode(encryptStr), decryptKey);
- }
- }
java-pom.xml
引入如下依赖
- <dependency>
- <groupId>commons-codec</groupId>
- <artifactId>commons-codec</artifactId>
- <version>1.9</version>
- </dependency>
- <dependency>
- <groupId>org.apache.commons</groupId>
- <artifactId>commons-lang3</artifactId>
- <version>3.7</version>
- </dependency>
3.测试
- /// <summary>
- /// 测试加密解密
- /// </summary>
- static void TestFxEncrypt()
- {
- string encryptStr, decryptStr;
- encryptStr = "测试数据看看看卡";
- Console.WriteLine("============== 256位AES加密 ============\n");
- Console.WriteLine("加密前:" + encryptStr);
- Console.WriteLine("密 钥:" + BjfxEncryptHelper.Key);
- Console.WriteLine();
- decryptStr = BjfxEncryptHelper.Encrypt(encryptStr);
- Console.WriteLine("加密后:" + decryptStr);
- encryptStr = BjfxEncryptHelper.Decrypt(decryptStr);
- Console.WriteLine("解密后:" + encryptStr);
- //c#加密
- //1:XtO1f0R4pCOhwLMKiku5+OWeBJTsTgzvSUb5fGQgoUM=
- //java加密
- //2:XtO1f0R4pCOhwLMKiku5+OWeBJTsTgzvSUb5fGQgoUM=
- }
注意:
测试代码用到的密码与示例代码用的密钥不一致,真实的密钥的字符长度应为16位.
c#,Java aes加密的更多相关文章
- Java AES加密
Java AES 加密 加密 /** * * @description 加密 * * @param content 需要加密的内容 * @param password 加密密码 * @return * ...
- C# 实现 JAVA AES加密解密[原创]
以下是网上普遍能收到的JAVA AES加密解密方法. 因为里面用到了KeyGenerator 和 SecureRandom,但是.NET 里面没有这2个类.无法使用安全随机数生成KEY. 我们在接收J ...
- java AES加密、解密(兼容windows和linux)
java AES加密.解密 CreationTime--2018年7月14日10点06分 Author:Marydon 1.准备工作 updateTime--2018年8月10日15点28分 up ...
- 你真的了解字典(Dictionary)吗? C# Memory Cache 踩坑记录 .net 泛型 结构化CSS设计思维 WinForm POST上传与后台接收 高效实用的.NET开源项目 .net 笔试面试总结(3) .net 笔试面试总结(2) 依赖注入 C# RSA 加密 C#与Java AES 加密解密
你真的了解字典(Dictionary)吗? 从一道亲身经历的面试题说起 半年前,我参加我现在所在公司的面试,面试官给了一道题,说有一个Y形的链表,知道起始节点,找出交叉节点.为了便于描述,我把上面 ...
- Java aes加密C#解密的取巧方法
摘要: 项目开发过程中遇到一个棘手的问题:A系统使用java开发,通过AES加密数据,B系统使用C#开发,需要从A系统获取数据,但在AES解密的时候遇到麻烦.Java的代码和C#的代码无法互通. Ja ...
- Java AES加密案例
AES加密原理 http://www.blogjava.net/amigoxie/archive/2014/07/06/415503.html PHP 加密 https://segmentfault. ...
- C#与Java AES 加密解密
参考文档:https://www.cnblogs.com/xbzhu/p/7064642.html 前几天对接Java接口,需要C#加密参数,Java解密.奈何网上找了一堆大同小异的加解密方法都跟Ja ...
- JAVA AES加密解密
import java.security.InvalidKeyException; import java.security.NoSuchAlgorithmException; import java ...
- Java AES 加密工具类
package com.microwisdom.utils; import java.security.NoSuchAlgorithmException; import java.security.S ...
- Java AES加密解密工具 -- GUI 、在线传输文件
原理 对于任意长度的明文,AES首先对其进行分组,每组的长度为128位.分组之后将分别对每个128位的明文分组进行加密. 对于每个128位长度的明文分组的加密过程如下: (1)将128位AES ...
随机推荐
- Python 之字符串操作
# capitalize()将字符串的第一个字符转换为大写 # center(width, fillchar)返回一个指定的宽度 width 居中的字符串,fillchar 为填充的字符,默认为空格. ...
- GatewayWorker + LayIM实现即时聊天
一.程序目录结构 二.代码展示 附LayIM开发文档:https://www.layui.com/doc/modules/layim.html 1.前端代码 <!DOCTYPE html> ...
- Mysql 在Linux下的安装
1.获取mysql源码 wget http://dev.mysql.com/get/Downloads/MySQL-5.5/mysql-5.5.49.tar.gz 3.添加mysql用户和用户组,创建 ...
- 调用CAD内的颜色选择对话框
colordialog类 int color; acedSetColorDialog(color,TRUE,0); 第一个函数返回的是颜色的RGB值
- CAD调用导角命令,并返回导角的圆弧对象
主要用到函数说明: _DMxDrawX::SendStringToExecuteFun 把命令当着函数执行,可以传参数,详细说明如下: 参数 说明 IDispatch* pParam 命令参数,IMx ...
- Spring处理自动装配的歧义性
1.标识首选的bean 2.使用限定符@Qualifier 首先在bean的声明上添加@Qualifier 注解: @Component @Qualifier("cdtest") ...
- 图像处理中创建CDib类时无法选择基类类型时怎么办
图像处理中创建CDib类时无法选择基类类型时怎么办? 类的类型选择Generic Class 在下面的篮筐里输入CObject就行了
- Xilinx FPGA的专用时钟引脚及时钟资源相关
主要参考了https://www.eefocus.com/liu1teng/blog/12-02/237897_4533d.html .Xilinx UG471.UG472以及Xilinx Forum ...
- PAT_A1003#Emergency
Source: PAT A1003 Emergency (25 分) Description: As an emergency rescue team leader of a city, you ar ...
- iview Table表格单选框互斥
表格中添加单选框,并且互斥 首先带data中定义 currentid : 0 :表示默认不选中 { title: "名称", key: "name", re ...