‘壹’ sql如何加密
对MSSQL的用户信息有兴趣的,可能会发现master.dbo.sysxlogins里面存放着用户的口令,可是呢,password字段如果不是null就是一堆看不懂的binary,这个口令是怎么加密的呢?
其实只要仔细看看master.dbo.sp_addlogin就知道了,MSSQL的sp都可以看到代码,真是不错。
让我们来看看它是怎么做的,注意这一行select @passwd = pwdencrypt(@passwd),这个时后@passwd就被加密了,让我们也来试一下
DECLARE @ClearPWD varchar(255)
DECLARE @EncryptedPWD varbinary(255)
SELECT @ClearPWD = 'test'
SELECT @EncryptedPWD = CONVERT(varbinary(255), pwdencrypt(@ClearPWD))
SELECT @EncryptedPWD
看上去不错,确实被加密了,可是我怎么还原呢?
呵呵,这就没戏了,口令加密都是单向的,用加密后的密文来比较就可以了。
继续看看其它用户相关的sp,可以发现master.dbo.sp_password里面有口令比较的内容。
pwdcompare(@old, password, (CASE WHEN xstatus&2048 = 2048 THEN 1 ELSE 0 END))
不用去理会xstatus,这是一个状态掩码,一般我们用的时候就直接用0就可以了
DECLARE @ClearPWD varchar(255)
DECLARE @EncryptedPWD varbinary(255)
SELECT @ClearPWD = 'test'
SELECT @EncryptedPWD = CONVERT(varbinary(255), pwdencrypt(@ClearPWD))
SELECT pwdcompare(@ClearPWD, @EncryptedPWD, 0)
SELECT pwdcompare('ErrorPassword', @EncryptedPWD, 0)
这样我们就可以使用这两个函数来加密自己的密码了
‘贰’ 请问SQL怎么对数据进行加密
--以下代码包括创建密钥,加密,解密和删除密钥
/*
1.利用对称密钥
搭配EncryptByKey进行数据加密
使用DecryptByKey函数进行解密
这种方式比较适合大数据量
*/
='XIAOMA'
='ZXCCERTIFICATE',EXPIRY_DATE='2015/01/01'
CREATESYMMETRICKEYSYM_TOMWITHALGORITHM=
OPENSYMMETRICKEYSYM_
SELECTCONVERT(NVARCHAR(10),Decryptbykey((Encryptbykey(Key_guid('SYM_TOM'),N'TOM3'))))
CLOSESYMMETRICKEYSYM_TOM
DROPSYMMETRICKEYSYM_TOM
DROPCERTIFICATETOMCERT;
DROPMASTERKEY;
--或--
=AES_256ENCRYPTIONBYPASSWORD='ZXC123456'
='ZXC123456'
SELECTCONVERT(VARCHAR(10),Decryptbykey(Encryptbykey(Key_guid('ZXC'),'YHDH_C')))
CLOSESYMMETRICKEYZXC;
DROPSYMMETRICKEYZXC;
/*
2.利用非对称密钥
搭配EncryptByAsymKey进行数据加密
使用DecryptByAsymKey函数进行解密
用于更高安全级别的加解密数据
*/
='XIAOMA'
=RSA_2048ENCRYPTIONBYPASSWORD='ZXC123456'
(DECRYPTIONBYPASSWORD='ZXC123456')
SELECTCONVERT(VARCHAR(100),Decryptbyasymkey(Asymkey_id('ABC'),Encryptbyasymkey(Asymkey_id('ABC'),'ZXC123456')))
DROPASYMMETRICKEYABC;
DROPMASTERKEY
/*
3.利用凭证的方式
搭配EncryptByCert进行加密
DecryptByCert函数进行解密
比较类似非对称密钥
*/
='XIAOMA'
='ZXCCERTIFICATE',EXPIRY_DATE='2015/01/01'
SELECTCONVERT(VARCHAR(20),Decryptbycert(Cert_id('ZXC'),Encryptbycert(Cert_id('ZXC'),'123456')))
DROPCERTIFICATEZXC;
DROPMASTERKEY
--或--
='Mary5',
SECRET='123456';
ALTERLOGINUser1
ADDCREDENTIALAlterEgo
DropCREDENTIALAlterEgo
DROPCREDENTIALAlterEgo
/*
4.利用密码短语方式
搭配EncryptBypassPhrase进行加密
使用DecryptByPassPhrase函数来解密
比较适合一般的数据加解密
*/
SELECTCONVERT(VARCHAR(100),Decryptbypassphrase('xiaoma',Encryptbypassphrase('xiaoma','123456')))
‘叁’ sql server中怎么给数据库表中的用户密码加密
1、首先我们电脑上要安装有SQL Server,然后要准备一个MDF数据库文件。打开SQL Server。
‘肆’ 登陆界面连接sql server数据库用MD5类的Hash算法加密
说原理就行了。一般来说用户注册之后,把用户提交的密码,用MD5加密,数据库保存加密之后的密文,可以不保存原始的明文。下次用户登录,输入密码之后,用MD5加密,然后用加密之后的密文和数据库的密文匹配。如果一致的话就允许登录。验证的过程不需要验证明文,密文一致就行了。数据库被人盗了别人也很难破解原始的明文。
‘伍’ mssql数据库的表当中密码是加密的43位的数字密文,请问这是什么加密方式该如何破解呢
这是自定义的加密方式。
该如何破解:
1、暴力破解:测试用软件测试,强行破解;
2、正常加密一个,知道密码的,用这个替代不知道的即可;