- 浏览: 78883 次
最新评论
-
zhangjie3140:
感谢分享
tabhost里解决按键事件捕获的问题 -
honghe:
请问我重写了 onCreateWindow,但处理window ...
在webview中访问互联网应用,碰到弹出窗口怎么办? -
肖默it:
解决了我的问题,感谢楼主的分享!
tabhost里解决按键事件捕获的问题 -
hecal:
太感谢了~~
tabhost里解决按键事件捕获的问题 -
guogzhao:
注意在if判断中要加一个event.getAction() = ...
tabhost里解决按键事件捕获的问题
密码学中的高级加密标准(Advanced Encryption Standard,AES),又称Rijndael加密法,是美国联邦政府采用的一种区块加密标准。这个标准用来替代原先的DES,已经被多方分析且广为全世界所使用。经过五年的甄选流程,高级加密标准由美国国家标准与技术研究院(NIST)于2001年11月26日发布于FIPS PUB 197,并在2002年5月26日成为有效的标准。2006年,高级加密标准已然成为对称密钥加密中最流行的算法之一。该算法为比利时密码学家Joan Daemen和Vincent Rijmen所设计,结合两位作者的名字,以Rijdael之命名之,投稿高级加密标准的甄选流程(Rijdael的发音近于 “Rhine doll”)。
AES 加密过程是在一个4×4的字节矩阵上运作,这个矩阵又称为“体(state)”,其初值就是一个明文区块(矩阵中一个元素大小就是明文区块中的一个 Byte)。(Rijndael加密法因支援更大的区块,其矩阵行数可视情况增加)加密时,各轮AES加密循环(除最后一轮外)均包含4个步骤:
1. AddRoundKey — 矩阵中的每一个字节都与该次循环的子密钥(round key)做XOR运算;每个子密钥由密钥生成方案产生。
2. SubBytes — 透过一个非线性的替换函数,用查找表的方式把每个字节替换成对应的字节。
3. ShiftRows — 将矩阵中的每个横列进行循环式移位。
4. MixColumns — 为了充分混合矩阵中各个直行的操作。这个步骤使用线性转换来混合每行内的四个字节。
最后一个加密循环中省略MixColumns步骤,而以另一个AddRoundKey取代。
java类文件:
- import java.security.SecureRandom;
- import javax.crypto.Cipher;
- import javax.crypto.KeyGenerator;
- import javax.crypto.SecretKey;
- import javax.crypto.spec.SecretKeySpec;
- public class SimpleCrypto {
- 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);
- }
- private static byte[] getRawKey(byte[] seed) throws Exception {
- KeyGenerator kgen = KeyGenerator.getInstance("AES");
- SecureRandom sr = SecureRandom.getInstance("SHA1PRNG");
- 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);
- 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);
- byte[] decrypted = cipher.doFinal(encrypted);
- return decrypted;
- }
- public static String toHex(String txt) {
- return toHex(txt.getBytes());
- }
- public static String fromHex(String hex) {
- return new String(toByte(hex));
- }
- public 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).bytue();
- return result;
- }
- public 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));
- }
- }
加密:String encryptingCode = SimpleCrypto.encrypt(masterPassword,originalText);
解密:
String originalText = SimpleCrypto.decrypt(masterpassword, encryptingCode);
发表评论
-
致国内提供安卓应用内容服务商的一封信
2011-12-31 11:07 161安卓应用内容服务商是指提供安卓客户端下载,通过安卓客户端可以访 ... -
致国内1000万中小安卓应用开发者的一封信
2011-12-30 14:53 258基于安卓应用持久健康的发展,以及保护依赖广告嵌入来获得收入的广 ... -
致国内移动广告平台、广告聚合平台及统计平台的一封信
2011-12-30 14:49 1016基于安卓应用持久健康的发展,以及保护依赖广告嵌入来获得收入的广 ... -
致国内提供安卓应用内容服务商的一封信
2011-12-30 14:29 626安卓应用内容服务商是指提供安卓客户端下载,通过安卓客户端可以访 ... -
致国内1000万中小安卓应用开发者的一封信
2011-12-30 14:18 4基于安卓应用持久健康的发展,以及保护依赖广告嵌入来获得收入的广 ... -
致国内移动广告平台、广告聚合平台及统计平台的一封信
2011-12-30 14:13 3基于安卓应用持久健康的发展,以及保护依赖广告嵌入来获得收入的广 ... -
<转载>andriod 断点续传和下载原理分析
2011-12-21 21:48 977最近做一个文件上传和下载的应用对文件上传和下载进行了一个完整的 ... -
《转载》Android大TXT文本文档读取(续)
2011-12-20 10:32 1181原文地址:http://wangliping.net/read ... -
《转载》Android大TXT文本文档读取(1)
2011-12-20 10:30 3585原文地址:http://wangliping.net/read ... -
文件 批量重命名
2011-12-19 20:59 930前几天要处理一些图片资料,从看到有人提供了一个批处理的方法,但 ... -
发布应用的一点小感想(一)
2011-12-09 18:08 776<!-- @pa ... -
博客文章搬家成功
2011-12-08 11:33 735博客文章从csdn上搬家成功了~~ 不过博客分类没有导入进来 ... -
android中嵌入广告的小发现
2011-12-07 18:03 1015虽是个新手,前段时间 ... -
android用于打开各种文件的intent,包括以下文件PDF,PPT,WORD,EXCEL,CHM,HTML,TEXT,AUDIO,VIDEO
2011-12-07 17:26 2178以下代码未经测试。但是有我想找的,先贴过来,慢慢了解~~ i ... -
移动互联网个体户
2011-12-06 11:07 1145在网上查了查,现在 还没有人提出过移动互联网个体户这个概念,以 ... -
tabhost里解决按键事件捕获的问题
2011-12-03 16:58 3944这几天参照好多人的代码,改造了一个小程序,咱也使用一下TabH ... -
Android中Fragment的应用
2011-11-21 18:11 810http://blog.sina.com.cn/s/blog_ ... -
在webview中访问互联网应用,碰到弹出窗口怎么办?
2011-11-21 15:12 8744webview加载了一个页面,页面里点某一个button时候弹 ...
相关推荐
Android提供了一个名为`<android/openssl/AES.h>`的库,里面包含了AES加密的函数,如`EVP_EncryptInit_ex()`, `EVP_EncryptUpdate()`, `EVP_EncryptFinal_ex()`等,用于初始化加密上下文、进行加密操作以及结束加密...
Android 使用 AES 加密和解密文件实例代码 在 Android 应用程序中,使用 AES(Advanced Encryption Standard)加密...本文提供了详细的实例代码和解释,可以帮助开发者实现 Android 应用程序中的 AES 加密和解密功能。
总的来说,这个资源提供了一个完整的Android JNI AES加密实现,包括了必要的SO库文件和Java调用示例,对于想要在Android应用中实现高效加密功能的开发者来说,是一个非常实用的参考。在实际开发中,可以根据具体需求...
android 可以使用的 AES加密工具类
在iOS和Android平台上实现AES加密解密是开发者经常遇到的任务,尤其对于需要跨平台传输和存储敏感信息的场景。本篇文章将详细探讨AES加密解密算法在iOS和Android平台上的实现原理以及具体步骤。 首先,AES算法基于...
在本文中,我们将深入探讨Android环境下如何实现AES加密解密,以及如何修改加密过程中的关键参数——密钥(key)和偏移量(initialization vector,简称IV)。 首先,了解AES加密的基本原理:AES是一种块密码,将...
本篇文章将深入探讨Android环境下如何实现AES加密,并提供一个名为`AndroidAesDemo`的示例项目来帮助理解。 AES加密的核心原理是通过一系列的替换、置换和混淆操作,将明文数据转换为不可读的密文。这个过程是可逆...
android和JAVA的AES加密算法,从自己的项目中取出来的,分享给有需要的机油
AES加密算法,全称为Advanced Encryption Standard,是一种广泛应用的对称加密技术,用于保护数据的机密性。在C++环境中实现AES加密算法,通常涉及到的关键概念包括密钥、明文、密文、加密过程和解密过程。源码中...
在IT领域,加密技术是确保数据安全的重要手段之一。AES(Advanced Encryption Standard)是一种广泛应用的对称加密算法,因其高效性和安全性而被广泛采纳。本文将深入探讨如何使用Qt库来实现AES加密与解密,并重点...
<title>AES CBC 加密解密</title> <script src="https://cdn.bootcdn.net/ajax/libs/crypto-js/4.1.1/crypto-js.min.js"></script> </head> <body> <script> // 密钥和初始向量IV const key = CryptoJS.lib....
总结来说,Android RSA AES加密库是将RSA非对称加密和AES对称加密相结合,利用JNI技术在C/C++层实现高效加密解密的工具,为Android应用提供了强大的数据安全保障。开发者可以通过这样的库,为自己的应用添加高级别的...
标题 "C语言实现的AES加密解密" 涉及到的是高级加密标准(Advanced Encryption Standard,简称AES),这是一种广泛使用的对称加密算法,用于保护数据的安全性。AES由NIST(美国国家标准与技术研究所)在2001年标准化...
<br>此为官网的实现算法,经过测试,完全可以使用。附件中包括c和c++代码实现。<br>官网地址为:http://csrc.nist.gov/archive/aes/rijndael/wsdindex.html<br>
"iOS与Android通用AES加密"是一个针对这两个主流操作系统实现的数据加密方案,确保信息在传输和存储过程中的安全性。 AES(Advanced Encryption Standard),即高级加密标准,是一种广泛使用的对称加密算法,因其...
本篇文章将深入探讨AES加密在Java、Android、iOS以及C#中的应用,以及如何实现这些平台之间的通用加密方式。 AES,即高级加密标准,是一种块密码,采用128位的块大小进行操作,并支持128、192和256位的密钥长度。其...
"Android 实现视频的加密和解密(使用 AES)" Android 平台上的视频加密和解密是非常重要的安全机制,以防止视频内容被非法访问和盗用。在本文中,我们将介绍如何使用 AES 算法在 Android 平台上实现视频的加密和...
在某些加密实现中,密钥可能会通过位移操作(如循环左移)来增加复杂性,使得攻击者更难破解。然而,具体在Android AES加密中,位移量的具体含义需要查看代码实现才能明确。 **Base64编码** Base64是一种用于将二...
在QT中实现AES(Advanced Encryption Standard)加密算法,可以帮助开发者确保数据的安全性,防止未授权的访问和篡改。AES是目前国际上广泛采用的一种块密码标准,因其高效性和安全性而备受推崇。 AES加密算法基于...