这里用到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),顺便解决读取数据加密后不一样的问题的更多相关文章

  1. 微信小程序笔记<五> 页面管理及生命周期(route)——getCurrentPages()

    在小程序中所有页面的路由全部由框架进行管理,而框架以栈的形式维护了当前的所有页面. 当发生路由切换时,页面栈的表现: getCurrentPages() 用于获取当前页面栈的实例,可以把 getCur ...

  2. C#加密方法汇总(SHA1加密字符串,MD5加密字符串,可逆加密等)

    using System;using System.Collections.Generic;using System.Text; namespace StringEncry{ class Encode ...

  3. 使用commons-codec包加密字符串(MD5,SHA1,BASE64)

    1. [代码]MD5 String str = "abc"; DigestUtils.md5Hex(str); //附.net生成MD5的方法,生成内容跟java一致: Strin ...

  4. 使用MD5加密字符串

    一.概念: MD5码以512位分组来处理输入的信息,且每一分组又被划分为16个32位子分组,经过了一系列的处理后,算法的输出由四个32位分组组成,将这四个32位分组级联后将生成一个128位散列值. 二 ...

  5. 品味性能之道<五>:SQL分析工具

    一.SQL语句到底是怎么执行的? 想了解SQL语句到底是怎么执行的,那就需要进行SQL语句执行计划分析. 那什么是SQL语句执行计划呢? 就是Oracle服务器执行SQL语句的过程.例如确定是否使用索 ...

  6. 自学PHP笔记(五) PHP运算符

    本文转发来自:自学PHP笔记(五) PHP运算符 首先我们需要了解运算符是什么,运算符是指的对变量.常量或者数据进行计算的一个符号,比如数学中学到的加减乘除等用来运算的代表符号,PHP中的运算符也是这 ...

  7. C# js asp.net 字符串MD5加密GetMD5Hash

    赵小虎老师 using System; using System.Collections.Generic; using System.Linq; using System.Text; using Sy ...

  8. linux md5 加密字符串和文件方法

    linux md5 加密字符串和文件方法 MD5算法常常被用来验证网络文件传输的完整性,防止文件被人篡改.MD5全称是报文摘要算法(Message-Digest Algorithm 5),此算法对任意 ...

  9. java之jvm学习笔记五(实践写自己的类装载器)

    java之jvm学习笔记五(实践写自己的类装载器) 课程源码:http://download.csdn.net/detail/yfqnihao/4866501 前面第三和第四节我们一直在强调一句话,类 ...

随机推荐

  1. C#、devExpress 的 给bandedGrid加菜单功能 :复制、粘贴的例子(转)

    C#.devExpress 的 给bandedGrid加菜单功能 :复制.粘贴的例子 CopyFromGrid PasteToGrid PasteNewRowsToGrid private void ...

  2. git学习------>Git 分支管理最佳实践

    ps:本文转载于 : https://www.ibm.com/developerworks/cn/java/j-lo-git-mange/index.html Git 是目前最流行的源代码管理工具.大 ...

  3. flask请求和应用上下文

    关于WSGI WSGI(全称Web Server Gateway Interface),是为 Python 语言定义的Web服务器和Web应用程序之间的一种简单而通用的接口,它封装了接受HTTP请求. ...

  4. foo ?

    我们经常看到一些基础教程,面试题中经经常使用foo来命名,甚至有时候我们也会用过,可是你是否又知道foo是什么意思?(实际上,知道不知道又不会对你编码有不论什么影响~) 从编程黑马的王轶男的话来解释, ...

  5. ALV tree标准DEMO

    BCALV_TREE_01 ALV 树控制:构建层次树 BCALV_TREE_02 ALV 树控制:事件处理 BCALV_TREE_03 ALV 树控制:使用自己的上下文菜单 BCALV_TREE_0 ...

  6. PHP计算经纬度之间的距离

    <?php /** * 求两个已知经纬度之间的距离,单位为米 * * @param lng1 $ ,lng2 经度 * @param lat1 $ ,lat2 纬度 * @return floa ...

  7. java static成员变量方法和非static成员变量方法的区别 ( 二 )

    原创文章,未经作者允许,禁止转载!!! 静态成员变量不用new对象,在类加载的过程中就已经初始化存放在数据区域,静态成员变量是类和所有对象共有的,类和对象都可以改变它的值,每一次改变值之后,静态成员变 ...

  8. crm 使用stark组件

    # Create your models here. from django.db import models class Department(models.Model): "" ...

  9. __all__方法的作用

    在__all__里面写了谁,到时候就只能用谁,其他的用不了,from 模块 import *时就只能用__all__里的 __all__=['test1','Test'] def test1(): p ...

  10. [Windows Powershell]-学习笔记(3)

    Powershell 通过函数扩展别名 在powershell中设置别名的确方便快捷,但是在设置别名的过程中并设置参数的相关信息,尽管别名会自动识别参数,但是如何把经常使用的参数默认设定在别名里面呢? ...