`

加密机制

 
阅读更多
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.security.SecureRandom;
import java.util.Arrays;

import javax.crypto.Cipher;
import javax.crypto.KeyGenerator;
import javax.crypto.SecretKey;
import javax.crypto.spec.SecretKeySpec;

public class EncryptUtil {
	public static final String ALGORITHM = "SHA-256";
	
	private static final String _KEY = "qwertyuiop1234567890";

	public static String SHA256Encrypt(String orignal) {
		MessageDigest md = null;
		try {
			md = MessageDigest.getInstance(ALGORITHM);
		} catch (NoSuchAlgorithmException e) {
			e.printStackTrace();
		}
		if (null != md) {
			md.update(orignal.getBytes());
			return getDigestStr(md.digest());
		}
		return null;
	}

	private static String getDigestStr(byte[] origBytes) {
		String tempStr = null;
		StringBuilder stb = new StringBuilder();
		for (int i = 0; i < origBytes.length; i++) {
			tempStr = Integer.toHexString(origBytes[i] & 0xff);
			if (tempStr.length() == 1) {
				stb.append("0");
			}
			stb.append(tempStr);

		}
		return stb.toString();
	}
	
	
	private static final byte[] hex2byte(String hex) throws IllegalArgumentException {
		if (hex.length() % 2 != 0) {
			throw new IllegalArgumentException();
		}
		char[] arr = hex.toCharArray();
		byte[] b = new byte[hex.length() / 2];
		for (int i = 0, j = 0, l = hex.length(); i < l; i++, j++) {
			String swap = "" + arr[i++] + arr[i];
			int byteint = Integer.parseInt(swap, 16) & 0xFF;
			b[j] = new Integer(byteint).byteValue();
		}
		return b;
	}
	
	private static String hexStringToString(String hexString) {
		int encodeType = 2;
		String result = "";
		int max = hexString.length() / encodeType;
		for (int i = 0; i < max; i++) {
			char c = (char)hexStringToAlgorism(hexString.substring(i * encodeType, (i + 1) * encodeType));
			result += c;
		}
		return result;
	}
	
	
	private static int hexStringToAlgorism(String hex) {
        hex = hex.toUpperCase();
        int max = hex.length();
        int result = 0;
        for (int i = max; i > 0; i--) {
            char c = hex.charAt(i - 1);
            int algorism = 0;
            if (c >= '0' && c <= '9') {
                algorism = c - '0';
            } else {
                algorism = c - 55;
            }
            result += Math.pow(16, max - i) * algorism;
        }
        return result;
    }
	
	public static String AESencrypt(String content) {
		try {
			KeyGenerator kgen = KeyGenerator.getInstance("AES");
			kgen.init(128, new SecureRandom(_KEY.getBytes()));
			SecretKey secretKey = kgen.generateKey();
			byte[] enCodeFormat = secretKey.getEncoded();
			SecretKeySpec key = new SecretKeySpec(enCodeFormat, "AES");
			Cipher cipher = Cipher.getInstance("AES");
			byte[] byteContent = content.getBytes("utf-8");
			cipher.init(Cipher.ENCRYPT_MODE, key);
			byte[] result = cipher.doFinal(byteContent);
			return getDigestStr(result);
		} catch (Exception e) {
			e.printStackTrace();
		}
		return null;
	} 
	
	public static String AESdecrypt(String str) {
		
		byte[] content = hex2byte(str);
		try {
			KeyGenerator kgen = KeyGenerator.getInstance("AES");
			kgen.init(128, new SecureRandom(_KEY.getBytes()));
			SecretKey secretKey = kgen.generateKey();
			byte[] enCodeFormat = secretKey.getEncoded();
			SecretKeySpec key = new SecretKeySpec(enCodeFormat, "AES");
			Cipher cipher = Cipher.getInstance("AES");
			cipher.init(Cipher.DECRYPT_MODE, key);
			byte[] result = cipher.doFinal(content);
			return hexStringToString(getDigestStr(result));
		} catch (Exception e) {
			e.printStackTrace();
		}
		return null;
	}
	
}

 

分享到:
评论

相关推荐

    C#加密机制实例源码-口令加密Exe【201903】

    C#作为一种强大的.NET编程语言,提供了丰富的加密机制来确保敏感信息的安全。本资源“C#加密机制实例源码-口令加密Exe【201903】”正是针对这一需求,提供了一个用C#实现的口令加密应用程序的实例源码。 口令加密是...

    用Java的加密机制来保护你的数据——转

    ### 使用Java加密机制保护数据 #### 一、Java加密机制简介 Java开发工具包(JDK)提供了强大的加密和安全支持功能,这对于开发者来说是非常重要的。JDK中的加密支持不仅能够帮助开发者保护数据的安全性,还能确保...

    RFID安全加密机制论文

    WLAN安全对策,基于混沌序列的RFID加密机制

    C#加密机制实例源码-口令加密Exe__0525).rar

    C#加密机制实例源码-口令加密Exe__0525).rar

    C#加密机制实例源码-口令加密Exe

    C#作为一种强大的.NET框架编程语言,提供了丰富的加密机制来确保信息的安全。本实例主要探讨的是使用C#进行口令加密,以保护应用程序(Exe)中的敏感数据。下面将详细介绍C#加密机制以及口令加密的实现方式。 一、...

    C#加密机制实例源码-口令加密Exe(最低分分享)

    本篇文章将详细探讨C#中的加密机制,并结合提供的“口令加密Exe”实例源码,解析如何在实际项目中应用这些知识。 C#加密主要依赖于.NET Framework或.NET Core提供的System.Security.Cryptography命名空间,该命名...

    C#加密机制实例源码-口令加密Exe_45.rar

    在C#编程语言中,加密机制是保护数据安全的关键组成部分。本实例源码"口令加密Exe_45"提供了使用C#实现基于口令的加密方法,这对于开发安全的应用程序至关重要。以下是对该主题的详细解释: 1. **加密的基本概念**...

    一种Android平台下高性能透明文件加密机制.pdf

    【Android客户端应用开发】在Android平台上,为了保护用户数据的安全,通常会采用文件加密机制。然而,现有的Android文件加密机制存在一个显著的问题,即在确保数据安全性的同时,往往牺牲了I/O性能,导致读写速度...

    C#加密机制实例源码-口令加密Exe__(0521).rar

    C#作为一种强大的编程语言,提供了丰富的加密机制来确保敏感信息的安全。这个压缩包“C#加密机制实例源码-口令加密Exe__(0521).rar”显然包含了关于C#密码加密的源代码实例,可以帮助开发者深入理解并应用C#的加密...

    C#加密机制实例源码-口令加密Exe.rar

    C#作为一种广泛使用的编程语言,提供了丰富的加密机制来确保数据的安全性。本资源“C#加密机制实例源码-口令加密Exe.rar”正是一个专注于C#密码加密技术的实例应用,包含了源代码,可以帮助开发者更好地理解和实现...

    基于DES和RSA的混合加密机制

    加密机制大体上可以分为对称加密和非对称加密两大类。对称加密使用相同的密钥进行加密和解密操作,而非对称加密则涉及一对密钥:公钥和私钥。本文将详细介绍两种代表性的加密算法:DES(数据加密标准)和RSA(由...

    Android移动设备数据加密机制

    Android移动设备数据加密机制,主要是讲解Android系统怎么对数据进行加密

    C#加密机制实例源码-口令加密Exe.rar.rar

    C#作为一种强大的面向对象的编程语言,提供了丰富的加密机制来确保数据的安全性。本文将深入探讨C#中的加密技术,特别是口令加密Exe的实例,这通常涉及到对用户密码进行安全存储和验证。 在C#中,我们可以使用内置...

    云计算中属性基加密机制研究.pdf

    【云计算中属性基加密机制研究】 云计算作为一种新兴的计算模式,已经深入到各个行业和领域。然而,随着数据量的快速增长和对隐私保护的需求日益增强,传统的加密技术在云环境中面临着诸多挑战。属性基加密...

    C#加密机制实例源码-口令加密Exe__0525.rar

    C#作为一种强大的面向对象的编程语言,提供了多种加密机制来确保数据的安全性。本文将深入探讨C#中的加密技术,特别是口令加密的实现,这正是"C#加密机制实例源码-口令加密Exe__0525.rar"这个压缩包文件所包含的内容...

Global site tag (gtag.js) - Google Analytics