位置: 编程技术 - 正文

SQL Server储过程加密和解密原理深入分析(sqlserver存储过程写法)

编辑:rootadmin
开始: -------------------------------------------------------------------------------- 在网络上,看到有SQL Server 和SQL Server 的存储过程加密和解密的方法,后来分析了其中的代码,发现它们的原理都是一样的。后来自己根据实际的应用环境,编写了两个存储过程,一个加密存储过程(sp_EncryptObject),和一个解密存储过程(sp_EncryptObject),它们可以应用于SQL Server中的储过程,函数,视图,以及触发器。 感觉这两个存储过程蛮有意思的,拿来与大家分享;如果你看过类似的,就当作重温一下也好。 用于加密的存储过程 (sp_EncryptObject) : -------------------------------------------------------------------------------- 存储过程(sp_EncryptObject)加密的方法是在存储过程,函数,视图的“As”位置前加上“with encryption”;如果是触发器,就在“for”位置前加“with encryption”。 如果触发器是{ AFTER | INSTEAD OF} 需要修改下面代码"For"位置: 存储过程完成代码: 如果SQL Server ,请修改下面两个位置的代码。在SQL Server ,建议在使用throw来代替raiserror。 解密方法: 解密过程,最重要采用异或方法: [字符1]经过函数 fn_x(x)加密变成[加密后字符1],如果我们已知[加密后字符1],反过来查[字符1],可以这样: [字符1] = [字符2] ^ fn_x([字符2]) ^ [加密后字符1] 这里我列举一个简单的例子: [注]: 从SQL Server 至 SQL Server 采用异或方法都可以解密 用于解密的存储过程(sp_DecryptObject): 如果SQL Server ,请修改下面两个位置的代码。方法类似于前面的加密过程: 搭建测试环境: -------------------------------------------------------------------------------- 在一个测试环境中(DB: Test),先执行上面的加密存储过程(sp_EncryptObject)和解密存储过程(sp_EncryptObject);再创建两个表:TableA & TableB 接下来,我们要创建6个未加密的对象(对象类型包含 'P','V','TR','FN','IF','TF'): 1.视图(myView): 2.触发器(MyTrigger): 3.存储过程(MyProc): 4.用户定义表值函数(TF)(MyFunction_TF): 5.内联表值函数(IF) (MyFunction_IF): 6.标量函数(FN)(MyFunction_FN): 当执行完了上面的1-6步骤的脚本,我们通过查询系统视图sys.sql_modules,可以看到未加密前的定义信息: 加密测试: -------------------------------------------------------------------------------- 下面我就通过调用加密存储过程(sp_EncryptObject),一次性对它们进行加密:

当我们再查回系统视图sys.sql_modules,会发现definition列返回的是null值,说明定义内容已经给加密:

解密测试: -------------------------------------------------------------------------------- 解密过程,必须在DAC连接SQL Server,我们这里例子是从 SSMS(SQL Server Management Studio) 查询编辑器启动 DAC,如图: 解密存储过程(sp_DecryptObject),只能一次对一个存储过程、函数、视图或触发器,进行解密: 当定义内容长度超过,我们可以指定@MaxLength的值,如: 这里(fn_My)是一个函数,定义内容超过了:

... ...

小结: -------------------------------------------------------------------------------- 虽然,上面的脚本,我已经在SQL Server R2 和SQL Server 测试过,但无法避免一些未知错误 。如果你自己在测试上面的脚本,请不要在生产环境上。如果你在应用过程,碰到有什么问题或有什么意见和建议可以发email联系我或跟帖,在此非常感谢!

推荐整理分享SQL Server储过程加密和解密原理深入分析(sqlserver存储过程写法),希望有所帮助,仅作参考,欢迎阅读内容。

SQL Server储过程加密和解密原理深入分析(sqlserver存储过程写法)

文章相关热门搜索词:sqlsever存储过程,sql储存过程,sql server存储过程的作用,sqlserver数据库存储过程存储在哪里,sql server2008存储过程,sql server 存储过程,sql server 存储过程,sqlsever存储过程,内容如对您有帮助,希望把文章链接给更多的朋友!

Excel导入数据库时出现的文本截断问题解决方案 问题在把Excel导入到数据库中时,发生文本截断问题:即导入的数据每行只有一部分,原始的Excel数据为:忽略错误导入SQLServer过程中,如果源数据和

数据库日常维护常用的脚本概述及部分测试 有些数据库语句可能平时用得不多,所以使用的时候总是难免上网查询,略嫌麻烦,今日在CSDN论坛看到有贴收录这些语句,就顺手牵羊copy了一份,本想

sql安装后服务器改名造成名称不一致解决方法 用select@@servername和selectserverproperty('servername')一查看服务器名是否一致如果不一致,则以serverproperty('servername')为准解决办法:execsp_dropserver@server=‘服务

标签: sqlserver存储过程写法

本文链接地址:https://www.jiuchutong.com/biancheng/319120.html 转载请保留说明!

上一篇:SQL2008 附加数据库提示5120错误解决方法(sql2008附加数据库)

下一篇:Excel导入数据库时出现的文本截断问题解决方案(Excel导入数据库出错)

  • 税控盘的功能特点是
  • 房地产企业实收资本要求
  • 物业公司广告费返还会计分录
  • 网上报税需要准备什么资料
  • 支付的检测费计入什么科目
  • 居民企业核定征收企业所得税的情形有哪些
  • 无收入证明需要哪些手续
  • 买卖金融商品应交增值税计算
  • 赡养老人专项附加扣除可以是爷爷奶奶吗
  • 年终零余额账户有余额
  • 发票未到货已到怎么入账
  • 物业公司代收代付水电费会计分录
  • 增值税发票做假什么后果
  • 怎样冲减虚开发票的会计分录
  • 小微企业季度所得税和企业所得税怎么处理
  • 零申报的资产负债表不能为0
  • 提供物业管理服务税率
  • 在境外施工由国家承担吗
  • 免税农产品购进怎么做账
  • 跨年的发票可以补开吗
  • 1697510816
  • 鸿蒙系统最新版本
  • 运输费计入什么会计科目?
  • 收到厂家返利怎么做分录
  • 房地产企业将开发产品抵押后再销售
  • PHP:session_set_save_handler()的用法_Session函数
  • 耕地使用税的征收标准
  • 网站国际化方案
  • 房地产企业以房产对外投资需要交什么税
  • 股东分红应该在哪个科目
  • ChatGPT是如何训练得到的?通俗讲解
  • yolo v5 github
  • python编程自动化框架怎么搭建
  • 利息收入属于什么要素
  • 货款分批付的会计分录
  • 小规模纳税人增值税专用发票税率
  • 软件企业该怎么发展起来
  • sqlserver去掉字符串内的指定字符
  • 公司帐户转到法人私卡备用金行吗
  • 收到税务局退回的个税手续费怎么入账
  • 企业对公帐户怎么转出私人帐户
  • 其他应付款核算范围包括哪些
  • 建设工程项目设计阶段的投资控制方法有哪些
  • 专门从事研发的公司
  • 以存货抵偿债务
  • 帮其他公司交水费税差
  • 三栏式明细账适用于总分类账
  • 逾期纳税申报会被罚款吗
  • 固定资产后期可以折旧吗
  • 库存数据不准确
  • mysql 定点数和浮点数
  • mysql模糊查询like多个条件
  • windows10x预览版
  • mac和iphone互动
  • 简介linux系统中的10个常用命令及功能
  • linux系统怎么安装
  • linux限速
  • 鼠标的指针
  • cocos2d开发app
  • opengl中点画线算法
  • python中print函数的end参数
  • js原生dialog
  • Adding iAd in your App from Unity3d
  • python 类的用法
  • python中如何获取列表中位数
  • java教程 视
  • CLASS_CONFUSION JS混淆 全源码
  • 陕西省电子税务局
  • 工会经费什么时候交
  • 增值额未超过扣除项目金额20%是什么意思
  • 新都税务局咨询电话
  • 三方协议暂不支持缴款
  • 如何证明发货前货物完好
  • 企业所得税率2023年
  • 河南税务局发票查询系统
  • 税务稽查检查笔录范文
  • 贵州国家税务局陈开平
  • 关于车辆购置税的规定,下列说法正确的是
  • 开票系统红色预警情况说明怎么写
  • 城镇土地使用税优惠政策
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设