`
ivan19861025
  • 浏览: 42067 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

各种加密 解密 Java实现代码

    博客分类:
  • Java
阅读更多
AES
package com.sf.core.sgs.utils;

import java.security.Key;
import java.security.NoSuchAlgorithmException;

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

import org.apache.commons.codec.binary.Hex;

public class AESCoder {
	
	public static final String ALGORITHM = "AES";
	
	public static final String CIPHER_ALGORITHM = "AES/ECB/PKCS5Padding";
	
	public static byte[] initKey(){
		try {
			KeyGenerator keyGenerator = KeyGenerator.getInstance(ALGORITHM);
			keyGenerator.init(128);
			
			return keyGenerator.generateKey().getEncoded();
		} catch (NoSuchAlgorithmException e) {
			throw new RuntimeException(e.getMessage(), e);
		}
	}
	
	
	private static Key toKey(byte[] key){
		return new SecretKeySpec(key, ALGORITHM);
	}
	
	public static String encrypt(String data, String k) throws Exception {
		Key key = toKey(Hex.decodeHex(k.toCharArray()));
		Cipher cipher = Cipher.getInstance(CIPHER_ALGORITHM);
		//初始化, 设置为加密模式
		cipher.init(Cipher.ENCRYPT_MODE, key);
		byte[] enBytes = cipher.doFinal(data.getBytes());
		return String.valueOf(Hex.encodeHex(enBytes));
	}
	
	public static String decrypt(String data, String k) throws Exception{
		Key key = toKey(Hex.decodeHex(k.toCharArray()));
		Cipher cipher = Cipher.getInstance(CIPHER_ALGORITHM);
		//初始化, 设置为解密模式
		cipher.init(Cipher.DECRYPT_MODE, key);
		byte[] bytes = cipher.doFinal(Hex.decodeHex(data.toCharArray()));
		return new String(bytes);
	}
	
	public static void main(String[] args) throws Exception{
		String inputStr = "123456";
		byte[] k = AESCoder.initKey();
		
		String keyStr = String.valueOf(Hex.encodeHex(k));
		System.out.println("密钥: " + keyStr);
		String en = AESCoder.encrypt(inputStr, keyStr);
		System.out.println("密文: " + en);
		
		//解密
		String de = AESCoder.decrypt(en, keyStr);
		System.out.println("解密后明文: " + new String(de));
	}
}




HmacMD5
public class MACEncoder {
	
	public static final String ALGORITHM = "HmacMD5";
	
	public static byte[] initHmacMD5Key() throws Exception{
		KeyGenerator keyGenerator = KeyGenerator.getInstance(ALGORITHM);
		SecretKey secretKey = keyGenerator.generateKey();
		return secretKey.getEncoded();
	}
	
	public static byte[] encodeHmacMD5(byte[] data, byte[] key) throws Exception{
		SecretKey secretKey = new SecretKeySpec(key, ALGORITHM);
		Mac mac = Mac.getInstance(secretKey.getAlgorithm());
		mac.init(secretKey);
		return mac.doFinal(data);
	}
	
	
	public static void main(String[] args) throws Exception{
		String id = "13141283947192347174";
		String key = "11";
		long t1 = System.currentTimeMillis();
		System.out.println(encodeHmacMD5(id, key));
		System.out.println(encodeHmacMD5(id, key));
		System.out.println(encodeHmacMD5(id, key));
		System.out.println(encodeHmacMD5(id, key));
		System.out.println(System.currentTimeMillis() - t1);
		//System.out.println(Hex.encodeHex(initHmacMD5Key()));
	}
	
	public static String encodeHmacMD5(String data, String key) throws Exception{
		
		SecretKey secretKey = new SecretKeySpec(Hex.decodeHex(key.toCharArray()), "HmacMD5");
		Mac mac = Mac.getInstance(secretKey.getAlgorithm());
		mac.init(secretKey);
		return String.valueOf(Hex.encodeHex(mac.doFinal(data.getBytes())));
	}
	
}


MD5
public class MD5Encoder2 {
	
	public static void main(String[] args) {
		String str = "12345";
		try {
			MessageDigest digest = MessageDigest.getInstance("MD5");
			byte[] bytes = digest.digest(str.getBytes());
			System.out.println(Hex.encodeHex(bytes));
		} catch (Exception e) {
			e.printStackTrace();
		} 
	}
	
	
	
}



RSA
public class RSAEncoder {
	
	public static final String ALGORITHM = "rsa";
	
	public static final String PUBLIC_KEY = "RSAPublicKey";
	
	public static final String PRIVATE_KEY = "RSAPrivateKey";
	
	public static final int KEY_SIZE = 512;
	
	/**
	 * 私钥解密
	 * @param data
	 * @param key
	 * @return
	 * @throws Exception
	 */
	public static byte[] decryptByPrivateKey(byte[] data, byte[] key) throws Exception{
		PKCS8EncodedKeySpec pkcs8EncodedKeySpec = new PKCS8EncodedKeySpec(key);
		KeyFactory keyFactory = KeyFactory.getInstance(ALGORITHM);
		PrivateKey privateKey = keyFactory.generatePrivate(pkcs8EncodedKeySpec);
		
		Cipher cipher = Cipher.getInstance(keyFactory.getAlgorithm());
		cipher.init(Cipher.DECRYPT_MODE, privateKey);
		return cipher.doFinal(data);
	}
	
	/**
	 * 公钥加密
	 * @param data
	 * @param key
	 * @return
	 * @throws Exception
	 */
	public static byte[] encryptByPublicKey(byte[] data, byte[] key) throws Exception{
		X509EncodedKeySpec x509EncodedKeySpec = new X509EncodedKeySpec(key);
		KeyFactory keyFactory = KeyFactory.getInstance(ALGORITHM);
		PublicKey publicKey = keyFactory.generatePublic(x509EncodedKeySpec);
		Cipher cipher = Cipher.getInstance(keyFactory.getAlgorithm());
		cipher.init(Cipher.ENCRYPT_MODE, publicKey);
		return cipher.doFinal(data);
	}
	
	/**
	 * 公钥加密
	 * @param data
	 * @param key
	 * @return
	 * @throws Exception
	 */
	public static byte[] encryptByPublicKey(byte[] data, PublicKey publicKey) throws Exception {
		KeyFactory keyFactory = KeyFactory.getInstance(ALGORITHM);
		Cipher cipher = Cipher.getInstance(keyFactory.getAlgorithm());
		cipher.init(Cipher.ENCRYPT_MODE, publicKey);
		return cipher.doFinal(data);
	}
	
	/**
	 * 公钥解密
	 * @param data
	 * @param key
	 * @return
	 * @throws Exception
	 */
	public static byte[] decryptByPublicKey(byte[] data, byte[] key) throws Exception{
		X509EncodedKeySpec x509EncodedKeySpec = new X509EncodedKeySpec(key);
		KeyFactory keyFactory = KeyFactory.getInstance(ALGORITHM);
		PublicKey publicKey = keyFactory.generatePublic(x509EncodedKeySpec);
		Cipher cipher = Cipher.getInstance(keyFactory.getAlgorithm());
		cipher.init(Cipher.DECRYPT_MODE, publicKey);
		return cipher.doFinal(data);
	}
	
	/**
	 * 私钥加密
	 * @param data
	 * @param key
	 * @return
	 * @throws Exception
	 */
	public static byte[] encryptByPrivateKey(byte[] data, byte[] key) throws Exception{
		PKCS8EncodedKeySpec pkcs8EncodedKeySpec = new PKCS8EncodedKeySpec(key);
		KeyFactory keyFactory = KeyFactory.getInstance(ALGORITHM);
		PrivateKey privateKey = keyFactory.generatePrivate(pkcs8EncodedKeySpec);
		
		Cipher cipher = Cipher.getInstance(keyFactory.getAlgorithm());
		cipher.init(Cipher.ENCRYPT_MODE, privateKey);
		return cipher.doFinal(data);
	}
	
	/**
	 * 初始化密钥
	 * @return
	 * @throws Exception
	 */
	public static KeyPair initKey() throws Exception{
		KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance(ALGORITHM);
		KeyPair keyPair = keyPairGenerator.generateKeyPair();
		return keyPair;
	}
	
	public static void main(String[] args) throws Exception{
		KeyPair keyPair = initKey();//密钥对
		String data = "明文数据12345";
		
		System.out.println("私钥: " + String.valueOf(Hex.encodeHex(keyPair.getPrivate().getEncoded())));
		System.out.println("公钥: " + String.valueOf(Hex.encodeHex(keyPair.getPublic().getEncoded())));
		
		byte[] byte1 = encryptByPublicKey(data.getBytes(), keyPair.getPublic().getEncoded());
		System.out.println("公钥加密后: " + String.valueOf(Hex.encodeHex(byte1)));
		
		byte[] byte2 = decryptByPrivateKey(byte1, keyPair.getPrivate().getEncoded());
		System.out.println("私钥解密后: " + new String(byte2));
		
		byte[] byte3 = encryptByPrivateKey(data.getBytes(), keyPair.getPrivate().getEncoded());
		System.out.println("私钥加密后: " + String.valueOf(Hex.encodeHex(byte3)));
		
		byte[] byte4 = decryptByPublicKey(byte3, keyPair.getPublic().getEncoded());
		System.out.println("公钥解密后: " + new String(byte4));
	}
	
}







分享到:
评论

相关推荐

    Java实现的RSA加密解密算法示例

    Java中的RSA加密解密算法实现可以应用于各种Java项目,例如移动应用、Web应用等。 本文详细介绍了Java实现的RSA加密解密算法,包括密钥对生成、公钥和私钥的使用、加密和解密、密钥文件的生成等知识点。这些知识点...

    SM4国密加密解密JAVA代码实现.zip

    SM4国密加密解密JAVA代码实现

    des加密解密java实现版本

    在`cipher4j-master`这个项目中,可能包含了关于DES加密解密的Java实现,包括完整的类和示例代码,帮助开发者理解和使用DES。你可以下载并研究该项目,进一步了解如何在实际应用中集成DES加密解密功能。

    Des.java 加密解密JAVA源代码

    加密、解密过程,需要传递四个变量。 加密的四个变量依次为:明文,代码1,代码2,代码3 解密的四个变量依次为:密文,代码1,代码2,代码3

    java实现文件加密解密

    "java实现文件加密解密" Java 实现文件的加密与解密是指利用 Java 语言将资源文件(包括图片、动画等类型)进行简单的加密和解密。这种策略的原因和好处是将准备好的资源存储在云上,使用时通过网络进行读取即可,...

    SM2加密解密java代码完整示例

    国产加密算法SM2加密解密java代码完整示例。里面有加密解密的示例,生成秘钥的示例,本人亲测有效。默认maven环境编译。若无maven环境,里面也上传了相关依赖jar包。

    java实现的RC4加密解密算法示例

    "java实现的RC4加密解密算法示例" RC4加密解密算法是Symmetric-key block cipher的一种,使用同一个密钥进行加密和解密。java实现的RC4加密解密算法可以通过以下步骤实现: 1. 初始化数组:创建一个大小为256的...

    java加密解密代码

    一段java语言加密和解密的代码

    RC4加密解密Java实现

    RC4加密算法的Java实现代码 简单清楚,不需要复杂的调试

    java实现MD5加密解密算法

    java实现MD5加密解密算法,java源代码~

    Java 公钥和私钥加密解密代码

    以下是一个简单的Java代码示例,演示了如何生成公钥和私钥对,并使用它们进行加密和解密: ```java import java.security.KeyPair; import java.security.KeyPairGenerator; import java.security.PrivateKey; ...

    C#RSA加密与JAVA解密,实现相互通信

    总的来说,C#和Java之间的RSA加密解密通信涉及到多方面的知识,包括非对称加密原理、公钥私钥的生成和管理、不同编程语言间的互操作、数据安全传输以及可能的错误处理策略。掌握这些知识对于开发跨平台、高安全性的...

    排列码java实现,密码加密解密

    通过对代码的学习,你可以理解作者如何使用Java语言实现排列码加密和解密,并且可以根据实际需求进行修改或扩展。 总之,排列码在Java中的实现涉及到编码规则的生成、数据的预处理和后处理,以及核心的编码和解码...

    AES加密解密JAVA实现(带源码)

    ### 知识点详解 #### 一、AES加密算法简介 **高级加密标准(Advanced Encryption Standard,AES)**是一种对称加密算法...通过以上介绍,我们可以了解到如何在Java中实现AES加密解密的基本流程,以及相关的注意事项。

    AES加密解密java代码

    该java文件中的方法主要实现AES加密、解密的功能

    java加密解密zip压缩包

    以上代码示例展示了如何在Java中实现ZIP压缩包的加密和解密。需要注意的是,加密后的ZIP文件需要保存密码以供解密时使用。此外,加密的强度取决于所选的加密算法和密码的复杂性。在实际应用中,应确保密码的安全存储...

    文件加密与解密的java代码

    文件名:FileEncrypter.java JDK:1.40以上 说明:文件加密 加密方法:三重DES加密 加密过程:对选中的文件加密后在同文件夹下生成一个增加了".tdes"扩展名的加密文件 (完美加密,更改后缀名也不可以打开)解密过程:...

    Base64加密解密java/js

    因为是参照 js Base64写的java实现,所以代码可实现前台js,后台java的加密,解密的任意组合,当然也可自己简单改下参照序列顺序,使自己的加密解密变为独一的,网上无法使用工具解密出正确的数据。熟悉二进制的可...

    JAVA实现RSA加密解密

    在Java中实现RSA加密解密,可以帮助开发者保护敏感信息,例如在网络传输过程中防止数据被窃取。 首先,了解RSA的工作原理至关重要。它基于两个大素数的乘积,生成一对密钥:公钥和私钥。公钥可以公开,用于加密信息...

Global site tag (gtag.js) - Google Analytics