MySQl数据库加密解密
待加密字段varchar
INSERT INTO base_info(id,school_db_host) VALUES('1111254',HEX(AES_ENCRYPT(('要加密的'),'coco') )); SELECT AES_DECRYPT(UNHEX(school_db_host), 'coco') FROM base_info;
待加密字段varbinary
INSERT INTO base_info(id,school_db_host) VALUES('111254',AES_ENCRYPT(('要加密的'),'coco')); SELECT AES_DECRYPT(school_db_host, 'coco') FROM base_info;
Java代码加密解密配合使用
import java.io.UnsupportedEncodingException;import javax.crypto.Cipher;import javax.crypto.spec.SecretKeySpec;import mons.codec.binary.Hex;/**通常mysql中AES加密,和java中不一致,* 也就是说mysql中AES加密的东西,copy出来,* 用java代码不能解密* 下面大佬就来秀一波操作* */public class AESUtil {/**加密的Key*/private static String AESKEY = "zhfw_700";/**同意是用的编码*/private static String AESCODE = "UTF-8";public static SecretKeySpec generateMySQLAESKey(final String key, final String encoding) {try {final byte[] finalKey = new byte[16];int i = 0;for(byte b : key.getBytes(encoding))finalKey[i++%16] ^= b;return new SecretKeySpec(finalKey, "AES");} catch(UnsupportedEncodingException e) {throw new RuntimeException(e);}}/**AES 解密* data : 待解密的数据 * */public static String decrpt(String data) throws Exception {// Decryptfinal Cipher decryptCipher = Cipher.getInstance("AES");decryptCipher.init(Cipher.DECRYPT_MODE, generateMySQLAESKey(AESKEY, AESCODE));return new String(decryptCipher.doFinal(Hex.decodeHex(data.toCharArray())));}/**AES加密* data : 待加密 的数据 * */public static String encrpt(String data) throws Exception {// Encryptfinal Cipher encryptCipher = Cipher.getInstance("AES");encryptCipher.init(Cipher.ENCRYPT_MODE, generateMySQLAESKey(AESKEY, AESCODE)); char[] code= Hex.encodeHex(encryptCipher.doFinal(data.getBytes(AESCODE)));StringBuilder builder = new StringBuilder();for(char d:code) {builder.append(d);}String strning = builder.toString();return strning;}public static void main(String... args) throws Exception {// Decrypt// final Cipher decryptCipher = Cipher.getInstance("AES");// decryptCipher.init(Cipher.DECRYPT_MODE, generateMySQLAESKey("coco", "UTF-8"));// System.out.println(new String(decryptCipher.doFinal(Hex.decodeHex("d1314e21a741b85e00fb975529a217ac98fab03b6fca017c0a6bf1cd621ef7ae".toCharArray()))));// Encrypt// final Cipher encryptCipher = Cipher.getInstance("AES");// encryptCipher.init(Cipher.ENCRYPT_MODE, generateMySQLAESKey("coco", "UTF-8")); // System.out.println(Hex.encodeHex(encryptCipher.doFinal("要加密的".getBytes("UTF-8"))));System.out.println(encrpt("要加密的")); //加密 System.out.println(decrpt(encrpt("要加密的"))); //解密 加密的数据}}