import java.security.SecureRandom;
import javax.crypto.Cipher;
import javax.crypto.KeyGenerator;
import javax.crypto.SecretKey;
import javax.crypto.spec.SecretKeySpec;
/**
* Android 加密解密字符串(转载eoe)
* @author
*
*/
public class SimpleCrypto {
public static void main(String[] args) throws Exception {
System.out.println(encrypt("xwq",""));
}
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).byteValue();
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));
}
}
分享到:
相关推荐
在这个Demo中,Presenter可以调用Retrofit的服务接口,处理加密字符串的请求和响应,而View(通常是Activity或Fragment)则展示解密后的数据。 为了实现MVP,你需要创建一个接口定义 Presenter 和 View 之间的交互...
标题提到的"Android-一款自动对dex文件中的字符串进行加密Android插件工具"是指用于增强应用安全性的技术实践,特别是针对 Dex 文件(Dalvik 可执行文件)中的字符串进行加密。在Android系统中,Dex文件包含了应用...
"Android 加密压缩解密解压缩字符串简单DEMO"是一个示例项目,它展示了如何处理字符串的加密、压缩、解密和解压缩过程,这对于处理大量数据在后台与前台之间传输的情况非常有用。下面,我们将详细探讨这些关键知识点...
Android md5 加密字符串
1. `encrypt(String seed, String cleartext)`:这个方法用于加密字符串。它首先使用`getRawKey()`方法从种子字符串(`seed`)生成AES的128位密钥,然后用这个密钥对明文字符串(`cleartext`)进行加密,并返回十六...
Gradle插件-混淆器字符串加密(Android / Java) 这个项目是一个简单的Gradle插件,可帮助您在编译时加密Android Java代码的所有String值。 重要提示:如果您的项目不受git或SVN之类的SCM工具管理,则Enigma插件将...
本文将深入探讨如何在Xamarin中使用C#进行字符串的加密和解密操作,以确保数据的安全传输和存储。 首先,我们需要理解加密的基本原理。加密是将明文数据转化为无法直接读取的密文,而解密则是将密文还原为原始的...
Android逆向,frida hook脚本,hook测试demo的加密字符串。 包含spawn_hook 和 导出函数hook ,打印参数返回值寄存器值等。 对应文章:https://blog.csdn.net/u013170888/article/details/141753349
总的来说,"StringCare Android库" 是一个针对Android平台设计的字符串加密混淆解决方案,旨在提升应用的安全防护级别,对抗逆向工程的威胁。通过使用这个库,开发者可以更好地保护他们的知识产权,为用户创造更安全...
在Android开发中,`android.intent.action` 是一个常用来定义Intent动作的字符串,比如启动应用、打开设置等。在描述中提到的"转为97,110,100,114,95,65,68,68,69这种数字",实际上是将字符串转换为ASCII码的数值...
4. **运行时解密**: 应用在设备上运行时,StringFog的解密逻辑会自动处理加密字符串,确保程序正常运行。 StringFog的开源特性意味着开发者可以自由查看其源代码,理解其工作原理,并根据项目需求进行定制。开源...
对抗Android恶意软件中的字符串加密
"Android全盘加密之详解" Android全盘加密是指使用已加密的密钥对Android设备上的所有用户数据进行编码的过程。...为了触发这些操作,vold.decrypt属性会被设为多种字符串。要结束和重启服务,请使用以下init命令:
例如,如果要加密一个字符串,可以使用AES,首先生成一个密钥,然后用密钥对数据进行加密。解密过程则与之相反,用同样的密钥解密数据。 五、项目暂停维护的影响 虽然此项目已暂停维护,但其核心算法和技术仍然是...
DroidCrypt是一个专门为Android平台设计的轻量级加密库,其主要功能是使用AES(Advanced Encryption Standard)算法对字符串进行加密操作。AES是一种广泛应用于现代数据安全的对称加密标准,以其高效和安全性著称。...
在IT领域,字符串加密解密是一项至关重要的技术,特别是在数据安全、网络安全以及应用程序保护方面。本文将深入探讨Delphi编程环境中实现字符串加密解密的方法,同时结合提供的资源——"又一个字符串加密解密实例,...
在Android开发中,有时我们需要将字符串与十六进制值之间进行转换,这在处理数据存储、网络通信或者加密解密等场景中非常常见。然而,当涉及到非ASCII字符,特别是中文字符时,可能会遇到乱码问题。这是因为中文字符...
有个同事咨询我有关Android DES加密的相关实现,简单的实现了一下,今天来总结一下。 其他几种加密方式: •Android数据加密之Rsa加密 •Android数据加密之Aes加密 •Android数据加密之Des加密 •Android...