zoukankan      html  css  js  c++  java
  • 简单加密技术及mysql数据库自带函数加解密

    Java代码实现简单可逆加解密

    import javax.crypto.Cipher;
    import javax.crypto.spec.IvParameterSpec;
    import javax.crypto.spec.SecretKeySpec;
    
    import sun.misc.BASE64Decoder;
    import sun.misc.BASE64Encoder;
    
    public class SecureStorageTool {
    	 private static final String AES="AES";
    	    private static final String CHAR_SET_NAME1="UTF-8";
    	    private static final String CHAR_SET_NAME2="ASCII";
    	    private static final String CIPHER_KEY="AES/CBC/PKCS5Padding";
    
    	    /**
    	     * 加密用的Key 可以用26个字母和数字组成 此处使用AES-128-CBC加密模式,key需要为16位。
    	     */
    	    private static final String IV_PARAMETER="kuc#fcp84d2x.pr8";
    	    /**
    	     * 可以用26个字母和数字组成 此处使用AES-128-CBC加密模式,需要为16位。
    	     */
    	    private static final String S_KEY="idpj587l0#4@7oj7";
    
    
    	    /**
    	     * 加密
    	     * @param param
    	     * @return
    	     * @throws Exception
    	     */
    	    public static String encryption(String param) {
    	    	 if(param==null) {
    	    		 return null;
    	    	 }
    	    	 if(param.isEmpty()) {
    	    		 return "";
    	    	 }
    	    	 String encode = "";
    	    	try {
    	    		 Cipher cipher= Cipher.getInstance(CIPHER_KEY);
    	 	        SecretKeySpec skeySpec = new SecretKeySpec(S_KEY.getBytes(), AES);
    	 	        // 使用CBC模式,需要一个向量iv,可增加加密算法的强度
    	 	        IvParameterSpec iv = new IvParameterSpec(IV_PARAMETER.getBytes());
    	 	        cipher.init(Cipher.ENCRYPT_MODE, skeySpec, iv);
    	 	        // 此处使用BASE64做转码。
    	 	        encode = new BASE64Encoder().encode(cipher.doFinal(param.getBytes(CHAR_SET_NAME1)));
    				
    			} catch (Exception e) {
    				encode = null;
    			}
    	       
    	        return encode;
    
    	    }
    
    	    /**
    	     *  解密
    	     * @param value
    	     * @return
    	     * @throws Exception
    	     */
    	    public static String decrypt(String value) {	    	 
    	    	 if(value==null) {
    	    		 return null;
    	    	 }
    	    	 if(value.isEmpty()) {
    	    		 return "";
    	    	 }
    	    	 String decode = "";
    	    	try {
    	    	    SecretKeySpec skeySpec = new SecretKeySpec(S_KEY.getBytes(CHAR_SET_NAME2), AES);
    	  	        Cipher cipher = Cipher.getInstance(CIPHER_KEY);
    	  	        IvParameterSpec iv = new IvParameterSpec(IV_PARAMETER.getBytes());
    	  	        cipher.init(Cipher.DECRYPT_MODE, skeySpec, iv);
    	  	        // 先用base64解密
    	  	        decode = new String(cipher.doFinal(new BASE64Decoder().decodeBuffer(value)), CHAR_SET_NAME1);
    			} catch (Exception e) {
    				decode = null;
    			}
    	  
    	        return decode;
    	    }
    
    
    	    /**
    	     测试
    	     * @throws Exception 
    	     */
    	   
    	    public static void main(String[] args) throws Exception {
    	    	  String key="usemeiguogou";
    		        System.out.println("key="+key);
    		        //输出 key=123
    		        String value=encryption(key);
    		        System.out.println("encryption value="+value);
    		        //输出 encryption value=OTslJ40Fa9a7ImOmCbmLPw==
    		        System.out.println("decrypt:"+decrypt("  "));
    		        //输出 decrypt key=123
    		}
    
    }
    
    

    mysql数据库自带函数加解密

    		加密
    		HEX(AES_ENCRYPT(#{},<include refid="key" />))
    		
    		解密
    		AES_DECRYPT(UNHEX(),<include refid="key" />)
    
  • 相关阅读:
    软件工程-案例分析作业 开源代码托管平台
    软件工程-个人阅读作业 #2
    软件工程-个人阅读作业 #1
    提问回顾与个人总结
    软工案例分析作业
    结对编程——第二阶段
    软工个人阅读作业#2
    软工个人阅读作业#1
    OO补给站总结
    BUAA_2021_SE_Final_Report
  • 原文地址:https://www.cnblogs.com/InternetJava/p/14350236.html
Copyright © 2011-2022 走看看