加密: aes_encrypt('内容','秘钥')。:
比如sql:insert into Test(money)values(aes_encrypt(‘a’,'1')),其中money是blob类型。
解密 select aes_encrypt(money,'1') from Test
以上只是用纯sql,在hibernernate用hql会遇到诸多困难,
1. 函数不被识别。
2.hql 不支持insert into
--》函数不识别的解决方法: 重写mysql方言,使函数被认可
public class MySQLLocaDialect extends MySQL5Dialect {
public MySQLLocaDialect() {
super();
SQLFunctionTemplate t = new SQLFunctionTemplate(Hibernate.STRING,
"AES_ENCRYPT(?1,?2)");
registerFunction("aes_encrypt", t);
SQLFunctionTemplate t2 = new SQLFunctionTemplate(Hibernate.STRING,
"AES_DECRYPT(?1,?2)");
registerFunction("aes_decrypt", t2);
}
}
--》不支持insert into,暂时也没想出好方法。session.save()应该不能调用mysql的函数,不过还好都是aes,可以保存时应该可以用java的aes替代吧