android AES对称加密算法使用实例
代码是最好的注释!
public class AES {
public static String mSeed = "leichxxxxx;
/* public static String encrypt(String seed, String cleartext)
throws Exception {
byte[] rawKey = getRawKey(seed.getBytes());
byte[] result = encrypt(rawKey, cleartext.getBytes());
return toHex(result);
}
public static String decrypt(String seed, String encrypted)
throws Exception {
byte[] rawKey = getRawKey(seed.getBytes());
byte[] enc = toByte(encrypted);
byte[] result = decrypt(rawKey, enc);
return new String(result);
}*/
public static byte[] encryptExt(String seed, byte[] cleartext)
throws Exception {
byte[] rawKey = getRawKey(seed.getBytes());
byte[] result = encrypt(rawKey, cleartext);
return result;
}
public static byte[] decryptExt(String seed, byte[] encrypted)
throws Exception {
byte[] rawKey = getRawKey(seed.getBytes());
byte[] enc = encrypted;
byte[] result = decrypt(rawKey, enc);
return result;
}
private static byte[] getRawKey(byte[] seed) throws Exception {
KeyGenerator kgen = KeyGenerator.getInstance("AES");
SecureRandom sr = SecureRandom.getInstance("SHA1PRNG", "Crypto");
sr.setSeed(seed);
kgen.init(128, sr); // 192 and 256 bits may not be available
SecretKey skey = kgen.generateKey();
byte[] raw = skey.getEncoded();
return raw;
}
private static byte[] encrypt(byte[] raw, byte[] clear) throws Exception {
SecretKeySpec skeySpec = new SecretKeySpec(raw, "AES");
Cipher cipher = Cipher.getInstance("AES");
cipher.init(Cipher.ENCRYPT_MODE, skeySpec, new IvParameterSpec(
new byte[cipher.getBlockSize()]));
byte[] encrypted = cipher.doFinal(clear);
return encrypted;
}
private static byte[] decrypt(byte[] raw, byte[] encrypted)
throws Exception {
SecretKeySpec skeySpec = new SecretKeySpec(raw, "AES");
Cipher cipher = Cipher.getInstance("AES");
cipher.init(Cipher.DECRYPT_MODE, skeySpec, new IvParameterSpec(
new byte[cipher.getBlockSize()]));
byte[] decrypted = cipher.doFinal(encrypted);
return decrypted;
}
private static byte[] toByte(String hexString) {
int len = hexString.length() / 2;
byte[] result = new byte[len];
for (int i = 0; i < len; i++)
result[i] = Integer.valueOf(hexString.substring(2 * i, 2 * i + 2),
16).byteValue();
return result;
}
private static String toHex(byte[] buf) {
if (buf == null)
return "";
StringBuffer result = new StringBuffer(2 * buf.length);
for (int i = 0; i < buf.length; i++) {
appendHex(result, buf[i]);
}
return result.toString();
}
private final static String HEX = "0123456789ABCDEF";
private static void appendHex(StringBuffer sb, byte b) {
sb.append(HEX.charAt((b >> 4) & 0x0f)).append(HEX.charAt(b & 0x0f));
}
public static void Test() {
String source = "1234567890abcdefghijklmnopqrstuvwxyz1234567890abcdefghijklmnopqrstuvwxyz";
try {
Log.d(CONST.TAG, "source:" + source);
byte[] output = encryptExt(mSeed, source.getBytes());
Log.d(CONST.TAG, "output:" + output);
byte[] output2 = decryptExt(mSeed, output);
Log.d(CONST.TAG, "output2:" + output2);
} catch (Exception e) {
e.printStackTrace();
}
}
}
android AES对称加密算法使用实例相关推荐
- 利用Python爬取基于AES对称加密算法的网易云音乐用户评论数据
本文利用Python2.7根据网易云音乐歌曲ID爬取了该歌曲的所有用户评论数据.以id是28875120的歌曲<小岁月太着急>为示例,通过Chrome的DevTools工具获取已加密评论数 ...
- Java 加密 AES 对称加密算法
版权声明:本文为博主原创文章,未经博主允许不得转载. [AES] 一种对称加密算法,DES的取代者. 加密相关文章见:Java 加密解密 对称加密算法 非对称加密算法 MD5 BASE64 AES R ...
- AES 对称加密算法
什么是AES? 高级加密标准(英语:Advanced Encryption Standard,缩写:AES),是一种区块加密标准.这个标准用来替代原先的DES,已经被多方分析且广为全世界所使用. 那么 ...
- 什么是AES对称加密算法
个人博客请访问 http://www.x0100.top 小明:老师,请问了解AES算法吗? 老师:了解一些,AES算法是典型的[对称加密算法] 小明:我不太明白,这个对称加密是什么鬼?它跟MD5,S ...
- java aes对称加密算法_JavaAES128对称加密算法实现
在我们程序员日常工作中避免不了会接触一下有关于加密算法的需求,所以今天小编带来的是java中AES128对称算法的实现. 话不多少接下来代码搞起来-----> 0.准备 首先呢,我们先把jar包 ...
- AES对称加密算法原理
原著:James McCaffrey 翻译:小刀人 原文出处:MSDN Magazine November 2003 (Encrypt It) 本文的代码下载:msdnmag200311AES.exe ...
- java aes对称加密算法_Java实现AES对称加密算法
Java代码实现 import java.security.SecureRandom; import javax.crypto.Cipher; import javax.crypto.KeyGener ...
- Java 加密解密 对称加密算法 非对称加密算法 MD5 BASE64 AES RSA
[最简单的加密] 1.简单的概念 明文:加密前的信息 密文:机密后的信息 算法:加密或解密的算法 密钥:算法使用的钥匙(读作miyao,正确应该是miyue,但是大家都读miyao) 2.简单的例子 ...
- Java实现对称加密算法-AES加解密
AES(Advanced Encryption Standard)意思是高级加密标准,是一种区块加密标准.这个标准用来替代原先的DES,且已经被广泛使用. DES使用56位密钥,所以比较容易被破解. ...
- java加密算法之对称加密算法AES
先上效果图 源码 package com.symmetric.aes.util;import org.apache.commons.codec.binary.Hex; import org.apach ...
最新文章
- pythonbyte连接_Python3之字节串bytes与字节数组bytearray的使用详解
- MySQL登录时ERROR 1045:Access denied for user ‘root’@’localhost’ (using password: YES)
- 小米回应暴力裁员:已提前三个月通知不续签合同,并且给了N+1补偿
- ADO.NET连接数据库总结
- Spring2.5的新特性
- 学习旧岛小程序 (4)封装api 请求
- docker的容器管理和网络模式
- 大学期末c语言作业演示,大学C语言期末考试练习题(带详解答案)
- map(平均平均精度_客户的平均平均精度
- bzoj 3394: [Usaco2009 Jan]Best Spot 最佳牧场(floyd)
- jsp引进的js 显示404_【梅园大讲堂微课堂】Get超级大招!上海人才引进云申报权威解读来了...
- 亲戚关系关系算法java程序_并查集1——查找亲戚关系
- CentOS7 分区合并
- namenode 格式化错误 Unable to check if JNs are ready for formatting
- 各类文件头及其十六进制标识
- 爬虫+可视化——链家杭州二手房房源信息
- CANopen COB-ID 使能PDO功能
- 2021-03-26:给定一个正整数N,表示有N份青草统一堆放在仓库里。有一只牛和一只羊,牛先吃,羊后吃,它俩轮流吃草。 不管是牛还是羊,每一轮能吃的草量必须是:1,4,16,64…(4的某次方)。谁
- python输入某年某月某日判断这是第几天_Python编程实现输入某年某月某日计算出这一天是该年第几天的方法...
- Java8 Map 中新增的方法使用记录
热门文章
- java程序a-z b-y_请完成下列Java程序:对大写的26个英文字母加密,从键盘输入一个大写字母串..._考试资料网...
- 那些不需要你知道的Chrome DevTool - 使用技巧篇
- 程序开发——结对编程
- mysql之 xtrabackup原理、备份日志分析、备份信息获取
- asp教程一:创建 Active Server Page 页
- 无线性能优化:FPS 测试
- 【Remoting-4】
- 自动更改IP地址反爬虫封锁,支持多线程(转)
- Dedecms文件夹目录解释完整版
- Linux 怎么shell脚本定时备份mysql数据库