[小问题笔记(五)] 用SQL加密字符串(MD5、SHA1),顺便解决读取数据加密后不一样的问题
这里用到SQL Server内置的函数 HashBytes().
select HashBytes('MD5','bubu')
select HashBytes('SHA1','bubu')
以MD5为例,‘bubu’加密之后的MD5应是

用刚才的SQL查询结果是:

返回结果是VarBinary类型(以 0x 开头 16 进制形式的二进制数据)。我们一般都需要的是VarChar,用CAST或Convert转会乱码,变成这种鸟样---》 幐???iる
正确的办法,是使用下列函数:
select sys.fn_sqlvarbasetostr(HashBytes('MD5','bubu'))
不想要0x的话就截一下好啦:
select substring(sys.fn_sqlvarbasetostr(HashBytes('MD5','bubu')),3,32)
补充:
简单的加密字符串,当然很容易得到想要的结果。如果是从数据库里读取的数据,就有可能不一样的结果了。
select substring(sys.fn_sqlvarbasetostr(HashBytes('MD5','bubu')),3,32)
select substring(sys.fn_sqlvarbasetostr(HashBytes('MD5',[name])),3,32) from Agent where id=1 --读取结果为‘bubu’
结果:

这是由于[name]字段的类型是nvarchar导致的,所以在加密前需要强制转化一下类型:
select substring(sys.fn_sqlvarbasetostr(HashBytes('MD5',CAST([name] as varchar(50)))),3,32) from Agent where id=1
这样就妥妥的了~
[小问题笔记(五)] 用SQL加密字符串(MD5、SHA1),顺便解决读取数据加密后不一样的问题的更多相关文章
- 微信小程序笔记<五> 页面管理及生命周期(route)——getCurrentPages()
在小程序中所有页面的路由全部由框架进行管理,而框架以栈的形式维护了当前的所有页面. 当发生路由切换时,页面栈的表现: getCurrentPages() 用于获取当前页面栈的实例,可以把 getCur ...
- C#加密方法汇总(SHA1加密字符串,MD5加密字符串,可逆加密等)
using System;using System.Collections.Generic;using System.Text; namespace StringEncry{ class Encode ...
- 使用commons-codec包加密字符串(MD5,SHA1,BASE64)
1. [代码]MD5 String str = "abc"; DigestUtils.md5Hex(str); //附.net生成MD5的方法,生成内容跟java一致: Strin ...
- 使用MD5加密字符串
一.概念: MD5码以512位分组来处理输入的信息,且每一分组又被划分为16个32位子分组,经过了一系列的处理后,算法的输出由四个32位分组组成,将这四个32位分组级联后将生成一个128位散列值. 二 ...
- 品味性能之道<五>:SQL分析工具
一.SQL语句到底是怎么执行的? 想了解SQL语句到底是怎么执行的,那就需要进行SQL语句执行计划分析. 那什么是SQL语句执行计划呢? 就是Oracle服务器执行SQL语句的过程.例如确定是否使用索 ...
- 自学PHP笔记(五) PHP运算符
本文转发来自:自学PHP笔记(五) PHP运算符 首先我们需要了解运算符是什么,运算符是指的对变量.常量或者数据进行计算的一个符号,比如数学中学到的加减乘除等用来运算的代表符号,PHP中的运算符也是这 ...
- C# js asp.net 字符串MD5加密GetMD5Hash
赵小虎老师 using System; using System.Collections.Generic; using System.Linq; using System.Text; using Sy ...
- linux md5 加密字符串和文件方法
linux md5 加密字符串和文件方法 MD5算法常常被用来验证网络文件传输的完整性,防止文件被人篡改.MD5全称是报文摘要算法(Message-Digest Algorithm 5),此算法对任意 ...
- java之jvm学习笔记五(实践写自己的类装载器)
java之jvm学习笔记五(实践写自己的类装载器) 课程源码:http://download.csdn.net/detail/yfqnihao/4866501 前面第三和第四节我们一直在强调一句话,类 ...
随机推荐
- 数据库 - MySQL - 总结
总结: MySQL 表操作 - 练习题 多表查询 - 练习题 建表查询 - 作业
- 【opencv】imread 赋值 深拷贝浅拷贝
import cv2 import copy import os def filter_srcimg(dstimg): ss=3 srcimg=copy.deepcopy(dstimg) #aa=5 ...
- Flask之session相关
Flask的session简介 除请求对象之外,还有一个 session 对象.它允许你在不同请求间存储特定用户的信息.它是在 Cookies 的基础上实现的,并且对 Cookies 进行密钥签名要使 ...
- python爬虫防止IP被封的一些措施
在编写爬虫爬取数据的时候,因为很多网站都有反爬虫措施,所以很容易被封IP,就不能继续爬了.在爬取大数据量的数据时更是瑟瑟发抖,时刻担心着下一秒IP可能就被封了. 本文就如何解决这个问题总结出一些应对措 ...
- 【spring学习】中文乱码问题
问题: 在这样的一个控制器中: 返回字符串中文部分全是问号. 解决方案: 在spring-mvc.xml文件中加入以下代码: <!-- 支持spring3.0新的mvc注解 ,解决json中的中 ...
- PAT 1133 Splitting A Linked List[链表][简单]
1133 Splitting A Linked List(25 分) Given a singly linked list, you are supposed to rearrange its ele ...
- 如何将apk安装在模拟器上面
1.运行SDK Manager,选择模拟器,并运行模拟器 2.将需要安装的apk文件复制到platform-tools目录下(默认在:C:\Program Files\Android\android- ...
- 细说PHP7
PHP7带来的新东西 1.类型的声明. 可以使用字符串(string), 整数 (int), 浮点数 (float), 以及布尔值 (bool),来声明函数的参数类型与函数返回值. declare(s ...
- 20165324《Java程序设计》第四周
学号 2016-2017-2 <Java程序设计>第四周学习总结 教材学习内容总结 第五章:子类与继承 子类的定义:class 子类名 extends 父类名 { ... } 子类继承性: ...
- Debian中安装使用sudo命令
Debian中安装使用sudo命令 sudo可以让非root用户具有管理员的权限,安装好的Debian后还不能使用sudo,需要使用root用户登陆后安装sudo命令.#apt-get insta ...