zoukankan      html  css  js  c++  java
  • Java常见加密算法

    常见

    package com.example.decript;
    
    import java.io.UnsupportedEncodingException;
    import java.security.InvalidKeyException;
    import java.security.MessageDigest;
    import java.security.NoSuchAlgorithmException;
    import java.security.SecureRandom;
    import javax.crypto.BadPaddingException;
    import javax.crypto.Cipher;
    import javax.crypto.IllegalBlockSizeException;
    import javax.crypto.KeyGenerator;
    import javax.crypto.NoSuchPaddingException;
    import javax.crypto.SecretKey;
    import javax.crypto.spec.SecretKeySpec;
    
    public class DecriptTest {
    
    	public static String SHA1(String decript) {
    		try {
    			MessageDigest digest = java.security.MessageDigest
    					.getInstance("SHA-1");
    			digest.update(decript.getBytes());
    			byte messageDigest[] = digest.digest();
    			// Create Hex String
    			StringBuffer hexString = new StringBuffer();
    			// 字节数组转换为 十六进制 数
    			for (int i = 0; i < messageDigest.length; i++) {
    				String shaHex = Integer.toHexString(messageDigest[i] & 0xFF);
    				if (shaHex.length() < 2) {
    					hexString.append(0);
    				}
    				hexString.append(shaHex);
    			}
    			return hexString.toString();
    
    		} catch (NoSuchAlgorithmException e) {
    			e.printStackTrace();
    		}
    		return "";
    	}
    
    	public static String SHA(String decript) {
    		try {
    			MessageDigest digest = java.security.MessageDigest
    					.getInstance("SHA");
    			digest.update(decript.getBytes());
    			byte messageDigest[] = digest.digest();
    			// Create Hex String
    			StringBuffer hexString = new StringBuffer();
    			// 字节数组转换为 十六进制 数
    			for (int i = 0; i < messageDigest.length; i++) {
    				String shaHex = Integer.toHexString(messageDigest[i] & 0xFF);
    				if (shaHex.length() < 2) {
    					hexString.append(0);
    				}
    				hexString.append(shaHex);
    			}
    			return hexString.toString();
    
    		} catch (NoSuchAlgorithmException e) {
    			e.printStackTrace();
    		}
    		return "";
    	}
    
    	public static String MD5(String input) {
    		try {
    			// 获得MD5摘要算法的 MessageDigest 对象
    			MessageDigest mdInst = MessageDigest.getInstance("MD5");
    			// 使用指定的字节更新摘要
    			mdInst.update(input.getBytes());
    			// 获得密文
    			byte[] md = mdInst.digest();
    			// 把密文转换成十六进制的字符串形式
    			StringBuffer hexString = new StringBuffer();
    			// 字节数组转换为 十六进制 数
    			for (int i = 0; i < md.length; i++) {
    				String shaHex = Integer.toHexString(md[i] & 0xFF);
    				if (shaHex.length() < 2) {
    					hexString.append(0);
    				}
    				hexString.append(shaHex);
    			}
    			return hexString.toString();
    		} catch (NoSuchAlgorithmException e) {
    			e.printStackTrace();
    		}
    		return "";
    	}
    
    	/**
    	 * 加密
    	 * 
    	 * @param content
    	 *            需要加密的内容
    	 * @param password
    	 *            加密密码
    	 * @return
    	 */
    	public static byte[] encryptAES(String content, String password) {
    		try {
    			KeyGenerator kgen = KeyGenerator.getInstance("AES");
    			kgen.init(128, new SecureRandom(password.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 result; // 加密
    		} catch (NoSuchAlgorithmException e) {
    			e.printStackTrace();
    		} catch (NoSuchPaddingException e) {
    			e.printStackTrace();
    		} catch (InvalidKeyException e) {
    			e.printStackTrace();
    		} catch (UnsupportedEncodingException e) {
    			e.printStackTrace();
    		} catch (IllegalBlockSizeException e) {
    			e.printStackTrace();
    		} catch (BadPaddingException e) {
    			e.printStackTrace();
    		}
    		return null;
    	}
    
    	/**
    	 * 解密
    	 * 
    	 * @param content
    	 *            待解密内容
    	 * @param password
    	 *            解密密钥
    	 * @return
    	 */
    	public static byte[] decryptAES(byte[] content, String password) {
    		try {
    			KeyGenerator kgen = KeyGenerator.getInstance("AES");
    			kgen.init(128, new SecureRandom(password.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 result; // 加密
    		} catch (NoSuchAlgorithmException e) {
    			e.printStackTrace();
    		} catch (NoSuchPaddingException e) {
    			e.printStackTrace();
    		} catch (InvalidKeyException e) {
    			e.printStackTrace();
    		} catch (IllegalBlockSizeException e) {
    			e.printStackTrace();
    		} catch (BadPaddingException e) {
    			e.printStackTrace();
    		}
    		return null;
    	}
    
    	/**
    	 * BASE64解密
    	 * 
    	 * @param key
    	 * @return
    	 * @throws Exception
    	 */
    	public static String decryptBASE64(String key) {
    
    		return "";
    	}
    
    	/**
    	 * BASE64加密
    	 * 
    	 * @param key
    	 * @return
    	 * @throws Exception
    	 */
    	public static String encryptBASE64(String key) {
    
    		return "";
    	}
    }
    

      

  • 相关阅读:
    .NET + Jcrop 实现在线裁图功能
    jquery表格可编辑修改表格里面的值,点击td变input无刷新更新表格
    A、B、C、D和E类IP地址
    linux内核源码阅读之facebook硬盘加速flashcache之四
    Help-IntelliJIDEA-2019.3.4-插件:插件下载,安装,重启idea
    Help-IntelliJIDEA-2019.3.4-基础设置:14. intellij idea怎么调整菜单栏字体大小
    Help-IntelliJIDEA-2019.3.4-基础设置:13. 统一设置编码
    Help-IntelliJIDEA-2019.3.4-基础设置:12. Intellij IDEA的代码提示功能
    Help-IntelliJIDEA-2019.3.4-基础设置:11. idea 自动补全返回值,自动补全变量名称和属性名称
    Help-IntelliJIDEA-2019.3.4-基础设置:10.Maven自动下载源码包,告别反编译,直接上源码注释
  • 原文地址:https://www.cnblogs.com/kxdblog/p/6023407.html
Copyright © 2011-2022 走看看