我想将网站的用户账号和论坛的用户账号同步(网站和论坛的加密方式不同),我的思路是想在数据库里用触发器进行同步(其他方法我有想过,感觉都不合适),网站对网站对应用户表进行增改时,执行触发器里面的程序,对增改的用户相对应密码的密码进行密文转换(网站的不清楚是什么加密方式,但我有加密和解密的程序,论坛则是MD5),然后再增改论坛对应的用户表。请问各位大神这个触发器要怎么写?
4 个解决方案
#1
MD5 也有现成的加密算法,SQL 版的也可以搜索到。
只是这个 MD5 是非对称的加密,不能逆向解密;
只是这个 MD5 是非对称的加密,不能逆向解密;
#2
如果要比较两个值,直接比较密文就可以了,不用解密出来;
#3
你可以没看懂我的意思。
网站的账号是存在A数据库的用户表里面,论坛的账号是存在B数据库的用户表里面,两者的加密方法不一样。
我想做个触发器,当A数据库里面增改用户表里数据时,也对B数据库里的用户表进行增改,但是要将A数据库用户表里的密文转换成B数据库用户表的密文。
#4
作为参考,数据本身提供的字符串加密方法:
------------1.HASHbytes---------------
SELECT sys.fn_sqlvarbasetostr(HASHbytes('MD5','2324243')),sys.fn_VarBinToHexStr(HASHbytes('MD5','2324243'))
------------2. EncryptByPassPhrase 带公钥---------------
--公钥最好保存在其他地方
declare @pwd varbinary(max) ,@password nvarchar(1000) , @EncrptString nvarchar(max)
set @password ='1234567'
set @EncrptString= N'我是中国人'
--加密
SELECT @pwd = EncryptByPassPhrase( @password, @EncrptString)
select @pwd
--解密
SELECT @EncrptString =CAST( DecryptByPassPhrase(@password,@pwd) as nvarchar(max))
select @EncrptString
#1
MD5 也有现成的加密算法,SQL 版的也可以搜索到。
只是这个 MD5 是非对称的加密,不能逆向解密;
只是这个 MD5 是非对称的加密,不能逆向解密;
#2
如果要比较两个值,直接比较密文就可以了,不用解密出来;
#3
你可以没看懂我的意思。
网站的账号是存在A数据库的用户表里面,论坛的账号是存在B数据库的用户表里面,两者的加密方法不一样。
我想做个触发器,当A数据库里面增改用户表里数据时,也对B数据库里的用户表进行增改,但是要将A数据库用户表里的密文转换成B数据库用户表的密文。
#4
作为参考,数据本身提供的字符串加密方法:
------------1.HASHbytes---------------
SELECT sys.fn_sqlvarbasetostr(HASHbytes('MD5','2324243')),sys.fn_VarBinToHexStr(HASHbytes('MD5','2324243'))
------------2. EncryptByPassPhrase 带公钥---------------
--公钥最好保存在其他地方
declare @pwd varbinary(max) ,@password nvarchar(1000) , @EncrptString nvarchar(max)
set @password ='1234567'
set @EncrptString= N'我是中国人'
--加密
SELECT @pwd = EncryptByPassPhrase( @password, @EncrptString)
select @pwd
--解密
SELECT @EncrptString =CAST( DecryptByPassPhrase(@password,@pwd) as nvarchar(max))
select @EncrptString