
数据库账号密码加密详解及实例
数据库中经常有对数据库账号密码的加密,但是碰到一个问题,在使用UserService对密码进行加密的时候,spring security 也是需要进行同步配置的,因为spring security 中验证的加密方式是单独配置的。如下:
<authentication-manager>
<authentication-provider user-service-ref="userDetailService">
<password-encoder ref="passwordEncoder" />
</authentication-provider>
</authentication-manager>
<beans:bean class="comsapphiresecurityMyPasswordEncoder" id="passwordEncoder">
<beans:constructor-arg value="md5"></beans:constructor-arg>
</beans:bean>
如上述配置文件所示,passwordEncoder才是在spring security对账号加密校验的地方。
spring security在拦截之后,会首先对用户进行查找,通过自己定义的userDetailService来找到对应的用户,然后由框架进行密码的匹配验证。
从userDetailService得到user以后,就会进入到DaoAuthenticationProvider中,这是框架中定义的 ,然后跳入其中的authenticate方法中。
该方法会进行两个检查,分别是
preAuthenticationChecks : 主要进行的是对用户是否过期等信息的校验,调用的方法在userDetail中有定义的。
additionalAuthenticationChecks : 这个就是用户名密码验证的过程了。
而PasswordEncoder是我们xml中注入的bean,所以了,我们调用的则是我们自己完成的passwordEncoder
public class MyPasswordEncoder extends MessageDigestPasswordEncoder {
public MyPasswordEncoder(String algorithm) {
super(algorithm);
}
@Override
public boolean isPasswordValid(String encPass, String rawPass, Object salt) {
return encPassequals(DigestUtilsmd5DigestAsHex(rawPassgetBytes()));
}
}
这是我对其实现的一个简单版本,调用的就是spring自带的加密算法,很简单了,当然也可以使用复杂的加密方法,这个就靠自己了
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
1、首先我们电脑上要安装有SQL Server,然后要准备一个MDF数据库文件。打开SQL Server。
2、点开数据库这一级,右键点击数据库然后选择-所有任务-附加数据库-附加数据库。
3、在d出界面上点击…按钮,然后找到准备好的MDF数据库文件的存放位置。
4、找到之后选择MDF数据库文件,并点击确定按钮。
5、窗口自动关闭后你就会发现,数据库已经附加上了。
6、如果想把这个数据库去掉的话,那就右键该数据库(比如刚刚附加的数据库)选择所有任务—分离数据库—确定。
想要对数据库文件进行保密设置,可以通过风奥金甲的数据加密软件来实现,由于数据库的安全漏洞比较多,导致数据库本身泄密的风险也比较高,风奥金甲的数据库加密软甲通过对数据库文件的访问控制技术,可以控制数据库文件的拷贝、导出等二十多项 *** 作,同时数据库文件还可以自己备份。有效的对数据库文件进行保密。提高数据库的安全性。
插入加密数据:
1、INSERT
INTO
userdata(username,pasword,encryptedpassword)
2、VALUES
('smith','htims',AES_ENCRYPT('htims','key'))
上面的插入语句有三个字段,“用户名”、“密码”和“加密的密码”。
AES_ENCRYPT()函数需要一个“key”来协助加密,同样,解密也需要它。
从表中查询加密数据
1、SELECT
username,pasword,AES_DECRYPT(encryptedpassword,'key')
2、FROM
userdata
热心网友
在SQl2005下自带的函数hashbytes()
,此函数是微软在SQL
SERVER
2005中提供的,可以用来计算一个字符串的
MD5
和
SHA1
值,使用方法如下:
--获取123456的MD5加密串
select
hashbytes('MD5',
'123456')
;
--获取123456的SHA1加密串
select
hashbytes('SHA1',
'123456')
;有了这个函数可以在sqlserver中为字符串进行加密,但是hashbytes()
函数的返回结果是
varbinary类型,(以
0x
开头
16
进制形式的二进制数据)通常情况下,我们需要的都是字符串型的数据,很多人首先想到的可能就是用
CAST
或
Convert
函数将varbinary
转换为
varchar,但这样转换后的结果会是乱码,正确转换
varbinary
可变长度二进制型数据到
16
进制字符串应该使用系统内置函数
sysfn_varbintohexstr()(只在sqlserver2005下有),如下所示:select
sysfn_varbintohexstr(hashbytes('MD5',
'123456'))
然后就可以截取需要的部分select
lower(right(sysfn_varbintohexstr(hashbytes('MD5','123456')),32))为md5加密串。
以上就是关于如何对数据库进行加密和解密全部的内容,包括:如何对数据库进行加密和解密、sql server中怎么给数据库表中的用户密码加密、数据库文件如何有效的加密等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)