怎么在sql语句中对数据进行md5加密

师太请留步 2011-05-05 10:02:36
我现在想写一个触发器在user表中插入一条数据时,同时在user_p表中也插入同样的数据,但由于两个表分属不同的程序,user_p是discuz中的一张表它是md5加密,所以我不能在程序中对插入的数据加密,所以我现在想在执行insert触发器时在sql语句中对数据进行md5加密,这样的sql语句怎么写???
...全文
3282 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
师太请留步 2011-05-05
  • 打赏
  • 举报
回复
sql2005才有这个内置函数,我想要它的解密方法
fuxiaoyang13 2011-05-05
  • 打赏
  • 举报
回复
sql2000没有啊
师太请留步 2011-05-05
  • 打赏
  • 举报
回复
那怎么解密呢??
ringobob 2011-05-05
  • 打赏
  • 举报
回复
以上是2种方法,选一个即可
ringobob 2011-05-05
  • 打赏
  • 举报
回复

在 SQL Server 2005 中,微软提供了一个函数 hashbytes() 可以用来计算一个字符串的 MD5 和 SHA1 值,以下语句分别获得字符串 “12345” 的 MD5 和 SHA1:
SELECT hashbytes('MD5', '12345') ;
SELECT hashbytes('SHA1', '12345') ;
//////////////////////////
SQL code-- =============================================
--功能: 实现MD5加密算法,返回对字符串的加密结果串
--使用:PRINT dbo.MD5('111111')
-- =============================================
CREATE FUNCTION [dbo].[MD5]
(
@src varchar(255) -- 源字符串
)
RETURNS varchar(255)
WITH EXECUTE AS CALLER
AS
BEGIN
-- 存放md5加密串(ox)
DECLARE @smd5 varchar(34)
-- 加密字符串
SELECT @smd5 = sys.fn_VarBinToHexStr(hashbytes('MD5', @src));

SELECT @smd5 = SUBSTRING(@smd5,3,32) --32位
-- 返回加密串
RETURN @smd5
END
GO
--使用方法如下
PRINT dbo.MD5('111111')
ringobob 2011-05-05
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 xiaomaomoa 的回复:]

sql2005才有这个内置函数,我想要它的解密方法
[/Quote]
MD5不可逆加密,你怎么可以解密?
一般用MD5加密后,只能将 传入的参数同样的加密,然后对加密后的传入参数进行比对。

如果你想要可逆的加密,可以试试DES加密

22,207

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧