sql server2005 自动生成密码

一、sql server 2005随机函数

--取得随机数的视图
CREATE VIEW v_RAND
AS
SELECT re=STUFF(RAND(),1,2,'')
GO


--生成随机编号的函数
CREATE FUNCTION f_RANDBH(@BHLen int)
RETURNS varchar(50)
AS
BEGIN
    DECLARE @r varchar(50)
    IF NOT(ISNULL(@BHLen,0) BETWEEN 1 AND 50)
        SET @BHLen=10

lb_bh:    --生成随机编号的处理
    SELECT @r=re FROM v_RAND
    WHILE LEN(@r)<@BHLen
        SELECT @r=@r+re FROM v_RAND
    SET @r=LEFT(@r,@BHLen)

    --检查编号在基础数据表中是否存在 tb为存储随机数的自建表
    IF EXISTS(SELECT * FROM tb WITH(XLOCK,PAGLOCK) WHERE BH=@r)
        GOTO lb_bh

    RETURN(@r)
END
GO
二、-- =============================================
--功能: 实现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')
三、导入指定的表
insert into login_temp
select R_ENT_ID,EntName,dbo.MD5(RealPswd),0,dbo.f_RANDBH(6) from ent



参考资料一
参考资料二
lunzi   2010-04-27 17:00:28 评论:0   阅读:631   引用:0

发表评论>>

署名发表(评论可管理,不必输入下面的姓名)

姓名:

主题:

内容: 最少15个,最长1000个字符

验证码: (如不清楚,请刷新)

Copyright@2004-2010 powered by YuLog