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现在已经不 ...
随机推荐
- 9. Bookshops in London 伦敦书店
9. Bookshops in London 伦敦书店 (1) Londoner are greater readers.They buy vast numbers of newspapers and ...
- c++两个类相互调用
有可能会碰到两个类之间的相互调用的问题,例如:定义了类A和类B,A中使用了B定义的类型,B中也使用了A定义的类型 class A { B b; }; class B { A a; }; 编译器在声明A ...
- python模块:hmac
"""HMAC (Keyed-Hashing for Message Authentication) Python module. Implements the HMAC ...
- s1 Linux 硬件基础
s1 Linux硬件基础 服务器特点 1.稳定 2.方便拆卸-模块化 运维职责:运行和维护服务器 1.数据不能丢---大片不能没 2.保证网站7*24小时运行--一直要运行 3.用户体验要好----打 ...
- EventTrigger动态添加监听事件
在 Unity3D 中,通过拖拽的方式在 EventTrigger 组件中添加监听事件就不多说了,很简单.这里主要说的是通过代码动态往 EventTrigger 组件中添加监听事件,有个很坑的地方,就 ...
- Authorization Security for Mongodb
To keep security for the mongodb server, we can create an authorized machanism. db.createUser( { use ...
- 中国移动物联网ONENET平台数据本地采集工具
吧从中国移动物联网平台上接收的数据 实时按天保存为CSV文件或者是SQL SERVER数据库中方便进行数据处理 还可设置显示最大值,最小值,报警值,报警推送,tts语音报警等贴心功能
- python3调用zabbix api
前言 今天写了一个zabbix api,这里整理一下,过程中自己也学习了一些东西. 需求 我们需要查一个文件内容如下: cat /ops/flume_hosts node1 node2 需要把这个文件 ...
- [算法专题] Binary Tree
1 Same Tree https://leetcode.com/problems/same-tree/ Given two binary trees, write a function to che ...
- 583. Delete Operation for Two Strings
Given two words word1 and word2, find the minimum number of steps required to make word1 and word2 t ...