`
夏文权
  • 浏览: 243022 次
  • 性别: Icon_minigender_1
  • 来自: 贵州
社区版块
存档分类
最新评论

android 加密字符串

阅读更多
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));
	}

}
分享到:
评论

相关推荐

    Retrofit2.0 处理返回的加密String字符串 Demo

    在这个Demo中,Presenter可以调用Retrofit的服务接口,处理加密字符串的请求和响应,而View(通常是Activity或Fragment)则展示解密后的数据。 为了实现MVP,你需要创建一个接口定义 Presenter 和 View 之间的交互...

    Android-一款自动对dex文件中的字符串进行加密Android插件工具

    标题提到的"Android-一款自动对dex文件中的字符串进行加密Android插件工具"是指用于增强应用安全性的技术实践,特别是针对 Dex 文件(Dalvik 可执行文件)中的字符串进行加密。在Android系统中,Dex文件包含了应用...

    Android 加密压缩解密解压缩字符串简单DEMO

    "Android 加密压缩解密解压缩字符串简单DEMO"是一个示例项目,它展示了如何处理字符串的加密、压缩、解密和解压缩过程,这对于处理大量数据在后台与前台之间传输的情况非常有用。下面,我们将详细探讨这些关键知识点...

    MD5 加密 字符串

    Android md5 加密字符串

    Android 加密解密字符串详解

    1. `encrypt(String seed, String cleartext)`:这个方法用于加密字符串。它首先使用`getRawKey()`方法从种子字符串(`seed`)生成AES的128位密钥,然后用这个密钥对明文字符串(`cleartext`)进行加密,并返回十六...

    谜题:Gradle插件-混淆器字符串加密(AndroidJava)

    Gradle插件-混淆器字符串加密(Android / Java) 这个项目是一个简单的Gradle插件,可帮助您在编译时加密Android Java代码的所有String值。 重要提示:如果您的项目不受git或SVN之类的SCM工具管理,则Enigma插件将...

    C#之加密加密字符串——在xamarin上实现

    本文将深入探讨如何在Xamarin中使用C#进行字符串的加密和解密操作,以确保数据的安全传输和存储。 首先,我们需要理解加密的基本原理。加密是将明文数据转化为无法直接读取的密文,而解密则是将密文还原为原始的...

    Android逆向,frida hook脚本,hook测试demo的加密字符串

    Android逆向,frida hook脚本,hook测试demo的加密字符串。 包含spawn_hook 和 导出函数hook ,打印参数返回值寄存器值等。 对应文章:https://blog.csdn.net/u013170888/article/details/141753349

    AndroidLibrary,android库混淆字符串.zip

    总的来说,"StringCare Android库" 是一个针对Android平台设计的字符串加密混淆解决方案,旨在提升应用的安全防护级别,对抗逆向工程的威胁。通过使用这个库,开发者可以更好地保护他们的知识产权,为用户创造更安全...

    ASC和字符串互转

    在Android开发中,`android.intent.action` 是一个常用来定义Intent动作的字符串,比如启动应用、打开设置等。在描述中提到的"转为97,110,100,114,95,65,68,68,69这种数字",实际上是将字符串转换为ASCII码的数值...

    StringFog, 一款自动对字节码中的字符串进行加密Android插件工具.zip

    4. **运行时解密**: 应用在设备上运行时,StringFog的解密逻辑会自动处理加密字符串,确保程序正常运行。 StringFog的开源特性意味着开发者可以自由查看其源代码,理解其工作原理,并根据项目需求进行定制。开源...

    对抗Android恶意软件中的字符串加密.zip

    对抗Android恶意软件中的字符串加密

    Android加密之全盘加密详解

    "Android全盘加密之详解" Android全盘加密是指使用已加密的密钥对Android设备上的所有用户数据进行编码的过程。...为了触发这些操作,vold.decrypt属性会被设为多种字符串。要结束和重启服务,请使用以下init命令:

    Android 加密工具包.zip

    例如,如果要加密一个字符串,可以使用AES,首先生成一个密钥,然后用密钥对数据进行加密。解密过程则与之相反,用同样的密钥解密数据。 五、项目暂停维护的影响 虽然此项目已暂停维护,但其核心算法和技术仍然是...

    DroidCrypt,一个简单的android库。这个android库使用aes加密对字符串执行加密非常容易,它还可以用于保存到共享引用。.zip

    DroidCrypt是一个专门为Android平台设计的轻量级加密库,其主要功能是使用AES(Advanced Encryption Standard)算法对字符串进行加密操作。AES是一种广泛应用于现代数据安全的对称加密标准,以其高效和安全性著称。...

    又一个字符串加密解密实例,Delphi代码下载..rar

    在IT领域,字符串加密解密是一项至关重要的技术,特别是在数据安全、网络安全以及应用程序保护方面。本文将深入探讨Delphi编程环境中实现字符串加密解密的方法,同时结合提供的资源——"又一个字符串加密解密实例,...

    Android字符串和十六进制相互转化出现的中文乱码问题

    在Android开发中,有时我们需要将字符串与十六进制值之间进行转换,这在处理数据存储、网络通信或者加密解密等场景中非常常见。然而,当涉及到非ASCII字符,特别是中文字符时,可能会遇到乱码问题。这是因为中文字符...

    Android数据加密之Des加密

    有个同事咨询我有关Android DES加密的相关实现,简单的实现了一下,今天来总结一下。  其他几种加密方式:  •Android数据加密之Rsa加密  •Android数据加密之Aes加密  •Android数据加密之Des加密  •Android...

Global site tag (gtag.js) - Google Analytics