- 浏览: 1027948 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (675)
- ios (214)
- android-course (5)
- unity3d (7)
- cocos2d (36)
- html5 (3)
- game (5)
- android (42)
- java (57)
- php (12)
- 创业 (10)
- SEO (3)
- 架构 (2)
- 数据库 (3)
- 产品设计 (9)
- 操作系统 (10)
- Web前端 (11)
- 其他 (50)
- GAE (1)
- mac os (8)
- Open Source (2)
- 序列号 (10)
- C (2)
- database (2)
- 算法 (6)
- 设计模式 (1)
- photoshop (1)
- 3dmax (1)
- maya (1)
- opengl (3)
- 游戏设计 (1)
- 趋势 (1)
- cocos2d-x (4)
- shell (3)
- c++ (30)
- lua (5)
- flash (1)
- spring (3)
- mysql (4)
- Git (6)
- xmpp (1)
- cocos2dx (14)
- mac (2)
- 编程规范 (2)
- windows (1)
- linux (5)
- coocs2dx (1)
- ubuntu (2)
- aws (1)
- OPENGLES (1)
- 原画 (1)
最新评论
-
jlees:
Best mobile app testing tool pc ...
iOS + XCode 4 + GHUnit = Mobile TDD+Continuous testing -
ipanda:
楼主,能否给一个Micro CloudFoundry的虚机或者 ...
Cloud Foundry使用及开发向导 -
love_zongming:
谢谢分享。。
visio2007序列号 -
雨花台舞水:
你这才是枪文把
套在 360 黑匣子外面的黑盒子:你被技术型枪稿吓到了么? -
hugh.wang:
改天试试
Mac版魔兽争霸3 1.24e下载
密码学中的高级加密标准(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运算;每个子密钥由密钥生成方案产生。 最后一个加密循环中省略MixColumns步骤,而以另一个AddRoundKey取代。
2. SubBytes — 透过一个非线性的替换函数,用查找表的方式把每个字节替换成对应的字节。
3. ShiftRows — 将矩阵中的每个横列进行循环式移位。
4. MixColumns — 为了充分混合矩阵中各个直行的操作。这个步骤使用线性转换来混合每行内的四个字节。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);
评论
发表评论
-
Android监听键盘是否弹出,以及获取软键盘的高度
2015-07-02 19:31 1485网上介绍过监听键盘是否弹出的方法,我自己也是尝试过,不是 ... -
linux安装android NDK
2015-04-20 19:14 1901Error:Execution failed for ta ... -
android studio 添加项目修改gradle2.2.3
2015-04-20 15:22 16001.build.gradle(Module:app) 去除对 ... -
Android.mk无需手动添加cpp文件(cocos2d-x 3.2正式版)
2014-09-11 14:41 1024LOCAL_PATH := $(call my-dir) ... -
cocos2dx 在android中编译
2014-08-08 17:11 8491在全局环境变量中设置NDK_ROOT -
android实现通过浏览器点击链接打开本地应用(APP)并拿到浏览器传递的数据
2014-08-07 16:54 2560为了实现这个功能可折腾了我好久,先上一份代码,经楼主验证是绝 ... -
用Gradle 构建你的android程序
2014-03-21 17:15 833前言 android gradle 的插 ... -
Hackborn的吐槽和Munn的剖析: Android graphics低性能背后的真像
2013-10-23 14:52 792Google+上有意思的讨论 ... -
mac 不识别 android samsung手机
2013-10-21 16:30 1882使用Mac开发Android时,有可能无法识别手机,可以通过 ... -
Mac下配置Android NDK环境并搭建Cocos2d-x环境并Eclipse正常编译运行Cocos2dX自带TestsDemo项目!
2013-04-04 00:58 1219大家都知道Cocos2d-X是个多平台支持的游戏引擎,那么 ... -
让Java跟Javascript更加亲密
2013-04-02 22:30 1143在移动App开发中,为了快速迭代,通常都会使用Native+ ... -
技术文章收藏夹
2013-02-13 19:59 812COCOS2D-X跨ANDROID&IOS平台开发入 ... -
eclipse failed to create the java virtual machine 问题图文解析
2013-01-27 11:16 685解决方法: 1.问题现象 2.java虚拟机初始化失败 ... -
cocosd-android原来是个山寨货
2012-06-13 09:25 9741、技术团队无优势:Cocos2D-Android版本与iPh ... -
How Secure Are Query Strings Over HTTPS?
2012-03-09 12:29 1262A common question we hear is ... -
Android禁止横屏竖屏切换
2012-04-20 00:13 1697在AndroidManifest.xml的activity(需 ... -
Facebook还发布了Ringmark手机浏览器测试套件
2012-02-28 09:17 1094Facebook还发布了Ringmark手机浏览器测试套件 -
图解 Android 广播机制
2012-02-16 16:35 911从现实生活中理解广播机制 一听到广播我们第一感觉就会联 ... -
Handling Android 2.3 WebView's broken AddJavascriptInterface
2012-02-12 15:05 1459The Google Android team rele ... -
Error executing aapt解决
2012-02-11 23:31 4558安装完SDK和ADT时貌似出现些问题。 Description ...
相关推荐
综上所述,"Android中JNI实现AES加密源代码"涉及的知识点包括Android JNI的使用、AES加密算法的实现、NDK开发环境的配置、C/C++与Java的交互,以及数据安全和性能优化。通过这样的实现,开发者可以在Android应用中...
总结来说,Android RSA AES加密库是将RSA非对称加密和AES对称加密相结合,利用JNI技术在C/C++层实现高效加密解密的工具,为Android应用提供了强大的数据安全保障。开发者可以通过这样的库,为自己的应用添加高级别的...
"iOS与Android通用AES加密"是一个针对这两个主流操作系统实现的数据加密方案,确保信息在传输和存储过程中的安全性。 AES(Advanced Encryption Standard),即高级加密标准,是一种广泛使用的对称加密算法,因其...
本篇文章将深入探讨AES加密在Java、Android、iOS以及C#中的应用,以及如何实现这些平台之间的通用加密方式。 AES,即高级加密标准,是一种块密码,采用128位的块大小进行操作,并支持128、192和256位的密钥长度。其...
- **多层加密**:除了AES,可以结合其他加密技术,如哈希函数和非对称加密,增加一层防护。 - **完整性校验**:计算并保存加密前的哈希值,解密后对比哈希值,确保数据未被篡改。 综上所述,本地图片AES加密解密是...
AES加密是一种广泛应用于数据安全领域...总之,理解AES加密的核心原理,并在Java、Android、iOS及JavaScript上实现同步操作,是保障多平台数据安全的基础。开发者应深入学习并实践这些技术,确保应用中的信息安全无虞。
在Android中,可以使用Java的`javax.crypto.Cipher`类来实现AES加密。首先,生成一个随机的AES密钥,然后使用这个密钥对数据进行加密。 2. **RSA公钥加密AES密钥**: AES加密后的密文相对安全,但AES密钥本身仍然...
在这个"android jni 加密demo"中,开发者使用JNI来实现多种加密算法,包括RSA、3DES、AES、MD5以及BASE64,这些都是信息安全领域常用的加密和哈希方法。以下是对这些技术的详细解释: 1. **RSA**:RSA是一种非对称...
在Android中,可以使用Java的javax.crypto包来实现AES加密。首先,需要生成一个随机密钥,然后使用这个密钥对数据进行加密。解密时,用相同的密钥将加密后的数据还原。AES的优点在于它的高效性和安全性,但缺点是...
本压缩包"uniapp 前后端AES加密解密.rar"正是为了解决这一问题,它包含了在uniapp环境下实现前后端AES加密解密的方法。AES(Advanced Encryption Standard),即高级加密标准,是一种广泛使用的对称加密算法,具有...
在Android平台上,对大文件进行安全传输或存储时,通常会采用加密技术来保护数据的安全。本示例中,我们关注的是使用AES(Advanced Encryption Standard)加密算法对文件进行分段加密,特别是针对2M长度的文件片段...
在Android平台上进行数据安全存储或传输时,加密技术起着至关重要的作用。本文将深入探讨如何使用AES(Advanced Encryption Standard)加密算法实现准确且可逆的加密解密过程。AES是一种广泛采用的对称加密标准,它...
在这个主题中,我们将深入探讨如何在Android的JNI层获取签名以及实现AES加密。 首先,让我们了解如何在JNI中获取签名。在Android应用中,签名主要用于验证应用的身份,确保其来源可靠。在JNI中获取签名,通常是为了...
综上所述,Android AES加密的实现涉及到密钥生成、加密解密流程、兼容性处理、密钥存储以及错误管理等多个方面。通过合理的编程实践,可以确保在各种Android设备上实现可靠且安全的数据加密。对于开发者来说,理解并...
AES加密标准最初由比利时密码学家Joan Daemen和Vincent Rijmen设计,后在2001年被美国国家标准与技术研究所(NIST)采纳为新的数据加密标准,替代了DES。AES支持128、192和256位的密钥长度,以及128位的数据块大小。...
在Android中实现AES加密,通常需要以下步骤: 1. **生成Key**:为了进行AES加密,首先要生成一个密钥。`generateKey()`函数使用了`SecureRandom`类生成一个随机的20字节密钥,然后将其转换为16进制字符串。在4.2及...
在IT行业中,对称加密是一种常见的数据保护方法,AES(Advanced ...这不仅涉及到技术实现,也包括了软件包管理、配置调整以及可能的代码修改。理解AES加密的工作原理和正确使用这些库是保证项目数据安全的重要环节。
在Android开发中,安全传输和存储数据是至关重要的,为此,开发者常常采用加密技术来保护敏感信息。本文将详细介绍一个基于AES(Advanced Encryption Standard)加密的Android工具类,该类实现了PKCS5Padding填充...
在Android中实现AES加密,通常需要以下步骤: 1. **密钥生成**:首先,你需要生成一个AES密钥。这可以通过KeyGenerator类实现,指定算法为"AES"。密钥生成器会根据你选择的密钥长度(128、192或256位)生成随机密钥...
AES256加密是一种强大的对称加密算法,用于保护数据的隐私性和安全性。...然而,任何加密技术都不是绝对安全的,用户还需要结合其他安全措施,如安全编程、定期更新软件和安全策略,以确保数据的全面保护。