首页 > 数据库 >sqlserver MD5加密

sqlserver MD5加密

时间:2022-12-29 15:14:35浏览次数:56  
标签:字符 加密 C# certificatenum sqlserver gb2312 SQLServer MD5

一、示例及分析

例如对 人力资源表(hrmresource)的 身份证号(certificatenum) 进行md5 加密

对于mysql 数据库 直接查询 md5 函数即可,但sqlServer 没有内置md5函数,处理起来相对麻烦一些

SELECT certificatenum, Upper(md5(certificatenum)) initSecondaryPwd FROM HrmResource;

实现步骤分析

1.先用HashBytes函数看看生成的结果

HashBytes ( '', { @input | 'input' } )

<algorithm>::= MD2 | MD4 | MD5 | SHA | SHA1

参数解释:

algorithm:标识用于对输入执行哈希操作的哈希算法。这是必选参数,无默认值。需要使用单引号。

@input : 数据类型为 varchar、nvarchar 或 varbinary

'input' 字符串数据

返回值:

varbinary (最大8000字节)

备注:允许的输入值限制为 8000 个字节。输出符合算法标准:MD2、MD4 和 MD5 为 128 位(即 16 个字节);SHA 和 SHA1 为 160 位(即 20 个字节)

SELECT certificatenum, HASHBYTES('MD5',certificatenum) initSecondaryPwd FROM HrmResource;

由于该函数返回的值是二进制 varbinary 数据,不是字符串不能直接使用,所以要将其转换为字符串

2.用sys.fn_varbintohexstr(@pbinin)

@pbinin : varbinary (max) 数据类型

返回:nvarchar 数据类型

SELECT certificatenum, sys.fn_varbintohexstr(HASHBYTES('MD5',certificatenum)) initSecondaryPwd FROM HrmResource;

3.如何得到32位的MD5值,貌似最大也就只能到32位,使用 Right 函数进行截取

RIGHT ( character_expression , integer_expression )
参数:
character_expression :可为字符或二进制数据表达式,常量,变量,列,任何能隐式转换为varchar或nvarchar的数据类型(text,ntext需要进行显示转换)
integer_expression :正整数,将返回的字符数
返回值:character_expression 若为 非Unicode 返回 varchar , 若为unicode 则返回nvarchar

SELECT certificatenum, RIGHT(sys.fn_varbintohexstr(HASHBYTES('MD5',certificatenum)),32) initSecondaryPwd FROM HrmResource;

4.如果需要统一大小写 可使用 lower(character_expression ) , upper(character_expression ) 进行转换

SELECT certificatenum, UPPER(RIGHT(sys.fn_varbintohexstr(HASHBYTES('MD5',certificatenum)),32)) initSecondaryPwd FROM HrmResource;

二:关于MD5加密的字符编码问题

先来几段对比

1.字符 “è”

image

SQLServer :C05FC85230C60ED8FECB3670E77E603D

结果:与C# gb2312对应

2. 字符 “这是汉字”

image

SQLServer : E8C9AB48B603F81B87F4ED4F1005BB6E

结果:与C# gb2312对应

3. 字符 “123456”

image

SQLServer : E10ADC3949BA59ABBE56E057F20F883E

结果:与C# gb2312,utf-8 , utf-7 , ascii 对应

4.字符 “pxs123”

image

SQLServer : 684D95499489435C9351EFCDD68B25F2

结果:与C# gb2312,utf-8 , utf-7 , ascii 对应

4.字符 “pxs!@#.”

image

SQLServer :FC05D7826726E773E993BDCA88F6B181

结果:与C# gb2312,utf-8 , ascii 对应

5.字符 英文符号“!@#.&*)|_;“

image

SQLServer :4C782D772102482D09696D11BDE1A02A

结果:与C# gb2312,utf-8 , ascii 对应

6.字符 中文英混合符号“《!)*、“

image

SQLServer :1A891B7B5B3285925E2783694C2A367C

结果:与C# gb2312对应

6.字符 中文英混合符号“汉字hanzi“

image

SQLServer :49212C24BDB2FA254880119A332F86D6

结果:与C# gb2312对应

8.字符 “プログラミン“

image

SQLServer :045B556A9CF5F0FE92EC7A7C9B3F66CA

结果:与C# gb2312对应

综上对比:

sqlserver中md5加密函数,字符存在非英文字符会按照gb2312方式编码计算出加密值,那么C#,JS等计算MD5加密值是就需要转为gb2312编码,才能得出一样的结果。

若为都为英文字符时,用utf-8编辑即可

原文地址:http://t.zoukankan.com/pengxingsong-p-5882906.html

标签:字符,加密,C#,certificatenum,sqlserver,gb2312,SQLServer,MD5
From: https://www.cnblogs.com/an-shiguang/p/17012570.html

相关文章

  • 【转载】C#使用Dotfuscator混淆代码以及加密
    C#编写的代码如果不进行一定程度的混淆和加密,那么是非常容易被反编译进行破解的,特别是对于一些商业用途的C#软件来说,因为盯着的人多,更是极易被攻破。使用Dotfuscator可以实......
  • 科普什么是JS混淆加密解密以及其价值
    JavaScript混淆加密是一种将JavaScript代码转换为不易被人阅读和理解的形式的技术。它通常用于保护代码的知识产权和减少被恶意修改的风险。使用​​JavaScript混淆加......
  • python 下载m3u8 加密与非加密 收集
    #!/usr/bin/envpython#encoding:utf-8importrequests,os,platform,timefromCrypto.CipherimportAESimportmultiprocessingfromretryingimportretryc......
  • MD5安全吗,MD5加密有哪些问题,如何提高安全性?
    MD5是一种散列函数,在计算机安全领域得到广泛应用。然而,MD5国际密码算法被王小云研究团队证实并不安全,因为MD5本身存在一些缺点,这些缺点导致了MD5并不是很安全,可能会带来信息......
  • unity 资源打包,MD5值计算注意点
    仅作记录:unity3d在修改资源时,有些类型的资源修改的是源文件,比如:fbx,mp3,.jpg,.png等。这些资源是外部资源导入unity3d中,untiy3d导入编译时,生成相应的meta文件,meta文件中保存......
  • go-dongle 0.2.3 版本发布,一个轻量级、语义化的 golang 编码解码、加密解密库
    dongle是一个轻量级、语义化、对开发者友好的Golang编码解码和加密解密库Dongle已被awesome-go收录,如果您觉得不错,请给个star吧github.com/golang-module/dong......
  • 修改配置 IIS 中的网站加密协议
    此处借助一个免费工具:IISCrypto 下载地址:https://www.nartac.com/Products/IISCrypto/它有GUI和CLI两个版本,方便操作的话,就选GUI版本  运行此工具后,会显示......
  • ef6不支持sqlserver 2008的offset语句分页解决
    一、问题项目中如果使用了EF6,数据库是2008,而分页会收到类似如下的错误提示:{"Depth":0,"ClassName":"","Message":"Incorrectsyntaxnear'OFFSET'.\r\nIn......
  • 安卓逆向 -- 自吐算法(MD5和SHA)
    一、主要框架,hook代码主要填写在try代码块里packagecom.bucuo.a20210908;importandroid.app.Application;importandroid.content.Context;importandroid.util.Log;impor......
  • .Net Core Md5 加密整理
    一、.NetCore中Md5使用说明.NetCore中自带Md5加密处理,使用方法和.NetFramework中相同所在命名空间:usingSystem.Security.Cryptography;usingSystem;us......