java.. C# 使用AES加密互解 采用AES-128-ECB加密模式
Base64.encodeToString(encrypted, 0);
import
javax.crypto.Cipher;
import
javax.crypto.spec.SecretKeySpec;
import
org.apache.commons.codec.binary.Base64;
/**
*
* @author Administrator
*
*/
public
class
AES {
// 加密
public
static
String Encrypt(String sSrc, String sKey)
throws
Exception {
if
(sKey ==
null
) {
System.out.print(
"Key为空null"
);
return
null
;
}
// 判断Key是否为16位
if
(sKey.length() !=
16
) {
System.out.print(
"Key长度不是16位"
);
return
null
;
}
byte
[] raw = sKey.getBytes(
"utf-8"
);
SecretKeySpec skeySpec =
new
SecretKeySpec(raw,
"AES"
);
Cipher cipher = Cipher.getInstance(
"AES/ECB/PKCS5Padding"
);
//"算法/模式/补码方式"
cipher.init(Cipher.ENCRYPT_MODE, skeySpec);
byte
[] encrypted = cipher.doFinal(sSrc.getBytes(
"utf-8"
));
return
new
Base64().encodeToString(encrypted);
//此处使用BASE64做转码功能,同时能起到2次加密的作用。
}
// 解密
public
static
String Decrypt(String sSrc, String sKey)
throws
Exception {
try
{
// 判断Key是否正确
if
(sKey ==
null
) {
System.out.print(
"Key为空null"
);
return
null
;
}
// 判断Key是否为16位
if
(sKey.length() !=
16
) {
System.out.print(
"Key长度不是16位"
);
return
null
;
}
byte
[] raw = sKey.getBytes(
"utf-8"
);
SecretKeySpec skeySpec =
new
SecretKeySpec(raw,
"AES"
);
Cipher cipher = Cipher.getInstance(
"AES/ECB/PKCS5Padding"
);
cipher.init(Cipher.DECRYPT_MODE, skeySpec);
byte
[] encrypted1 =
new
Base64().decode(sSrc);
//先用base64解密
try
{
byte
[] original = cipher.doFinal(encrypted1);
String originalString =
new
String(original,
"utf-8"
);
return
originalString;
}
catch
(Exception e) {
System.out.println(e.toString());
return
null
;
}
}
catch
(Exception ex) {
System.out.println(ex.toString());
return
null
;
}
}
public
static
void
main(String[] args)
throws
Exception {
/*
* 此处使用AES-128-ECB加密模式,key需要为16位。
*/
String cKey =
"1234567890123456"
;
// 需要加密的字串
String cSrc =
"www.gowhere.so"
;
System.out.println(cSrc);
// 加密
String enString = AES.Encrypt(cSrc, cKey);
System.out.println(
"加密后的字串是:"
+ enString);
// 解密
String DeString = AES.Decrypt(enString, cKey);
System.out.println(
"解密后的字串是:"
+ DeString);
}
}
/// <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# 使用AES加密互解 采用AES-128-ECB加密模式的更多相关文章
- java php c# 三种语言的AES加密互转
java php c# 三种语言的AES加密互转 最近做的项目中有一个领取优惠券的功能,项目是用php写得,不得不佩服,php自带的方法简洁而又方便好用.项目是为平台为其他公司发放优惠券,结果很囧的是 ...
- C#与java中的AES加解密互解算法
一.C#版AES加解密算法 public class AESCode { public string Key { get; set; } public string Encrypt(string va ...
- 我的Android进阶之旅------>Android采用AES+RSA的加密机制对http请求进行加密
前言 未加密的抓包截图 加密之后的抓包截图 基本需求及概念 AES算法 AES基本原理及算法流程 AES算法流程 RSA算法 RSA算法基本原理及流程 RSA算法实现流程 AES与RSA相结合数据加密 ...
- 对称加密之AES、压缩解压以及压缩加密解密解压综合实战
AES 压缩解压 压缩加密解密解压 对称加密: 就是采用这种加密方法的双方使用方式用同样的密钥进行加密和解密.密钥是控制加密及解密过程的指令.算法是一组规则,规定如何进行加密和解密. 因此加密的安 ...
- java加密算法入门(二)-对称加密详解
1.简单介绍 什么是对称加密算法? 对称加密算法即,加密和解密使用相同密钥的算法. 优缺点: 优点:算法公开.计算量小.加密速度快.加密效率高. 缺点: (1)交易双方都使用同样钥匙,安全性得不到保证 ...
- RSA der加密 p12解密以及配合AES使用详解
在前面的文章中我有说过AES和RSA这两种加密方式,正好在前段时间再项目中有使用到,在这里再把这两种加密方式综合在一起写一下,具体到他们的使用,以及RSA各种加密文件的生成. 一: RSA各种加密相关 ...
- Java利用DES/3DES/AES这三种算法分别实现对称加密
转载地址:http://blog.csdn.net/smartbetter/article/details/54017759 有两句话是这么说的: 1)算法和数据结构就是编程的一个重要部分,你若失掉了 ...
- java加密算法入门(三)-非对称加密详解
1.简单介绍 这几天一直在看非对称的加密,相比之前的两篇内容,这次看了两倍多的时间还云里雾里的,所以这篇文章相对之前的两篇,概念性的东西多了些,另外是代码的每一步我都做了介绍,方便自己以后翻阅,也方便 ...
- Java常用加密方案及实现——AES和DES
AES和DES都是对称加密算法,其中DES全称为Data Encryption Standard,AES全称为Advanced Encryption Standard即高级加密标准. DES现在已经不 ...
随机推荐
- 2019.02.15 bzoj5210: 最大连通子块和(链分治+ddp)
传送门 题意:支持单点修改,维护子树里的最大连通子块和. 思路: 扯皮: bzojbzojbzoj卡常差评. 网上的题解大多用了跟什么最大子段和一样的转移方法. 但是我们实际上是可以用矩阵转移的传统d ...
- Spring-Cloud之Eureka排坑之旅
1 快速demo 1.0 环境说明 Intelli IDEA+Spring Boot 1.1 新建工程chap52(通过New Project->Spring Initializer-> ...
- ansible hosts文件编写,简单使用测试(普通用户、sudo用户、root用户登录权限测试)
一.配置文件修改: 1.备份原配置文件: cp /etc/ansible/hosts /etc/ansible/hosts.bak 2.修改hosts配置文件: cat <<EOF> ...
- lgwr的两种模式(post/wait和polling)
11.2之前,oracle的lgwr写入模式为post/wait 11.2之后新增了polling模式,可以与post/wait模式自动切换 通过隐藏参数 _use_adaptive_log_file ...
- 背水一战 Windows 10 (80) - 本地化
[源码下载] 背水一战 Windows 10 (80) - 本地化 作者:webabcd 介绍背水一战 Windows 10 之 本地化 Demo 改变语言 示例1.演示本地化的基本应用Localiz ...
- 剑指offer编程题Java实现——面试题8旋转数组的最小数字
剑指offer面试题8:旋转数组的最小数字 题目:把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转.输入一个递增排序数组的一个旋转,输出旋转数组的最小元素. 例如数组{3,4,5,1, ...
- HTML各个版本以及对应doctype
HTML发布的正式历史版本: 1.HTML2.0 2.HTML3.2 3.HTML4.0 4.HTML4.01 5.XHTML1.0 6.XHTML1.1 7.XHTML2.0 中途放弃,未完成 8 ...
- 教你用python打造WiFiddos
本文来源于i春秋学院,未经允许严禁转载. 0x00 前言因为在百度上很难找到有关于用python打造WiFidos的工具的,而且不希望大家成为一名脚本小子,所以我打算写一篇,需要的工具有scapy,i ...
- Java 内存回收机制——GC机制
一.Java GC 概念说明 Java GC(Garbage Collection,垃圾收集,垃圾回收)机制,是Java与C++/C的主要区别之一,作为Java开发者,一般不需要专门编写内存回收和垃圾 ...
- jQuery判断复选框checkbox的选中状态
通过jQuery设置复选框为选中状态 复选框 <input type="checkbox"/> 错误代码: $("input").attr(&quo ...