热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

在SqlServer中按照指定规则加密每日更换用户密码

一、问题描述为了防止密码泄露,每个月需要人工更换一次admin管理员用户的密码,在项目交接时领导提出建议每日更换一次密码且不用人工修改,类似于动态密码,按照指定规则生成密码,只要知道生

一、问题描述

为了防止密码泄露,每个月需要人工更换一次admin管理员用户的密码,在项目交接时领导提出建议每日更换一次密码且不用人工修改,类似于动态密码,按照指定规则生成密码,只要知道生成密码规则的人才可以算出密码。这样就节省了人工修改的时间,也防止了忘记修改密码等等问题。

二、解决思路

1.首先想到的是,在sqlserver中添加一个作业,定时执行一段sql语句或存储过程,来完成按照指定规则每日修改密码。

2.接着需要制定一个规则来生成密码,然后对该密码明文进行加密(这里使用MD5加密进行举例)。

三、解决步骤

1.SqlServer中的加密函数hashbytes(),sys.fn_varbintohexstr()将varbinary数据类型转换成字符串

--假如admin123为我们要加密的字符串,这里使用MD5加密方式加密
select hashbytes('MD5','admin123') --0x0192023A7BBD73250516F069DF18B500 varbinary类型
select sys.fn_varbintohexstr(hashbytes('MD5','admin123')) --0x0192023a7bbd73250516f069df18b500 varchar类型
select SUBSTRING(UPPER(sys.fn_varbintohexstr(hashbytes('MD5','admin123'))),3,32) --0192023A7BBD73250516F069DF18B500


2.在存储过程中制定规则加密、修改

USE [DataBaseTest]
GO
/****** Object:  StoredProcedure [dbo].[PwdChangeEveryday]    Script Date: 2017/6/19 14:47:29 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author:		
-- Create date: 
-- Description:	
-- =============================================
ALTER PROCEDURE [dbo].[PwdChangeEveryday]
	-- Add the parameters for the stored procedure here
AS
declare @NewPwd varchar(100)
declare @GuiZe varchar(100)
BEGIN
	-- SET NOCOUNT ON added to prevent extra result sets from
	-- interfering with SELECT statements.
	SET NOCOUNT ON;

    -- Insert statements for procedure here
	select @GuiZe=convert(varchar(100),GETDATE(),112)+'suibianzuhea'--此处的规则就是取当天的日期然后加上一个字符串 例如20170619suibianzuhea
	select @NewPwd= SUBSTRING(UPPER(sys.fn_varbintohexstr( hashbytes('MD5',@GuiZe))),3,32)--加密结果E077DC15B0C52FCEE757DDB9BD66C482
	update Peo_Table set Password=@NewPwd where UserName='admin'--更新密码
END

3.新建作业每天定时执行存储过程

1.Sql Server代理>>右键新建作业

2.填写常规相


3.填写步骤


4.填写计划


四、总结



推荐阅读
  • 在运行于MS SQL Server 2005的.NET 2.0 Web应用中,我偶尔会遇到令人头疼的SQL死锁问题。过去,我们主要通过调整查询来解决这些问题,但这既耗时又不可靠。我希望能找到一种确定性的查询模式,确保从设计上彻底避免SQL死锁。 ... [详细]
  • 本文介绍了 Oracle SQL 中的集合运算、子查询、数据处理、表的创建与管理等内容。包括查询部门号为10和20的员工信息、使用集合运算、子查询的注意事项、数据插入与删除、表的创建与修改等。 ... [详细]
  • Docker 环境下 MySQL 双主同步配置指南
    本文介绍了如何在 Docker 环境中配置 MySQL 的双主同步,包括目录结构的创建、配置文件的编写、容器的创建与设置以及最终的验证步骤。 ... [详细]
  • 2020年9月15日,Oracle正式发布了最新的JDK 15版本。本次更新带来了许多新特性,包括隐藏类、EdDSA签名算法、模式匹配、记录类、封闭类和文本块等。 ... [详细]
  • MySQL初级篇——字符串、日期时间、流程控制函数的相关应用
    文章目录:1.字符串函数2.日期时间函数2.1获取日期时间2.2日期与时间戳的转换2.3获取年月日、时分秒、星期数、天数等函数2.4时间和秒钟的转换2. ... [详细]
  • Oracle将表t_uaer的字段ID设置为自增:(用序列sequence的方法来实现)----创建表Createtablet_user(Idnumber(6),use ... [详细]
  • 按:只要接触了电脑,乱码问题总会遇到过。这是一个让人恼火的问题。如果对字符编码一知半解,乱码就仿佛一种神秘咒语,似乎一不小心就触怒了电脑爷,扔出一堆天书般的乱码来;而如果深入理解了字符编码,各种 ... [详细]
  • 理解GiST索引的空间构造原理
    通过空间思维解析GiST索引的构建方式及其在空间数据检索中的应用。 ... [详细]
  • ipsec 加密流程(二):ipsec初始化操作
    《openswan》专栏系列文章主要是记录openswan源码学习过程中的笔记。Author:叨陪鲤Email:vip_13031075266163.comDate:2020.1 ... [详细]
  • 本文介绍了如何在 Spring Boot 项目中使用 spring-boot-starter-quartz 组件实现定时任务,并将 cron 表达式存储在数据库中,以便动态调整任务执行频率。 ... [详细]
  • SQLServer2008全套 数据库简介,分离,收缩,快照
    第三课视频笔记:联机丛书的使用附加和分离数据库---收缩数据库--------数据库快照 ... [详细]
  • sqldouble222.22222222如何转换成字符串222.22222222%convertcast都是保留4位小数。 ... [详细]
  • SqlServer分区表概述(转载)
    什么是分区表一般情况下,我们建立数据库表时,表数据都存放在一个文件里。但是如果是分区表的话,表数据就会按照你指定的规则分放到不同的文件里,把一个大的数据文件拆分为多个小文件,还可以把这些小文件 ... [详细]
  • 本文主要介绍关于数据库,sql,sqlserver的知识点,对【数据库——概述】和【数据库到底要怎么做】有兴趣的朋友可以看下由【用编程写诗】投稿的技术文章,希望该技术和经验能帮到你解决你所遇的数据库相 ... [详细]
  • Asp.net网站部署时遇到的一些问题
    很少部署网站,这几天有一个网站帮朋友部署,期间遇到一些问题,经查找各种网络资源,最终解决,先将遇到的问题及解决办法分享一下。系统Win7+iis7.5+sqlserver2008+.Ne ... [详细]
author-avatar
拍友2502940977
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有