2011-12-01 112 views
0

我正在使用Java over SQL Server,并且有一个包含未加密信用卡列的表。 如何使用AES加密来加密列中的所有字段?加密SQL Server列中的所有值

SQL或Java(jdbc或hibernate)解决方案都可以。

我想开始使用Jasypt来加密未来的值,但我不知道如何加密现有的值。

这是jasypt弹簧加密定义使用:

<bean id="hibernateStringEncryptor" 
    class="org.jasypt.hibernate.encryptor.HibernatePBEStringEncryptor"> 
    <property name="registeredName"> 
     <value>strongHibernateStringEncryptor</value> 
    </property> 
    <property name="password"> 
     <value>1234</value> 
    </property> 
</bean> 

回答

0

您可以直接做到这一点的数据库上,这取决于你用什么数据库,以及是否支持您所使用的加密算法。

例如,如果您使用的是MySQL and AES,那么您可以使用SQL查询进行更新;

update credit_card_table set card_number = AES_ENCRYPT(card_number,'password'); 

毫无疑问,您需要先测试一下,并确保您不会泄露您的数据。

+0

谢谢,AES_ENCRYPT和HibernatePBEStringEncryptor使用默认算法做同样的加密吗?或者我应该使用不同的加密方案?(我正在使用sql server 2005) –