ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 1080|回复: 3

[分享] MD5加密

[复制链接]

TA的精华主题

TA的得分主题

发表于 2023-3-20 20:35 | 显示全部楼层 |阅读模式
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
本帖最后由 perfect131 于 2023-3-21 13:47 编辑

        直接用 System.Security.Cryptography.MD5CryptoServiceProvider,两种方式encode


  1. Function StringToMD5Hex(ByVal s As String) As String
  2.     Dim enc As Object
  3.     Dim bytes() As Byte
  4.     Dim pos As Long
  5.     Dim outstr As String
  6.     Set enc = CreateObject("System.Security.Cryptography.MD5CryptoServiceProvider")
  7.     bytes = encode(s)
  8.     bytes = enc.ComputeHash_2(encode(s))
  9.     outstr = ""
  10.     For pos = 1 To UBound(bytes) + 1
  11.        outstr = outstr & Right("0" & Hex(AscB(MidB(bytes, pos, 1))), 2)
  12.     Next pos
  13.     outstr = LCase(outstr)
  14.     StringToMD5Hex = outstr
  15.     Set enc = Nothing
  16. End Function
  17. Function StringToMD5Hex1(ByVal temp_sign As String) As String
  18.     Dim md As Object
  19.     Set md = CreateObject("System.Security.Cryptography.MD5CryptoServiceProvider")
  20.     Dim bytes() As Byte
  21.     bytes = md.ComputeHash_2(CreateObject("System.Text.UTF8Encoding").GetBytes_4(temp_sign))
  22.     Dim sign As String
  23.     sign = ""
  24.     For i = 1 To UBound(bytes) + 1
  25.         sign = sign & Right("0" & Hex(AscB(MidB(bytes, i, 1))), 2)
  26.     Next
  27.     md.Clear
  28.     Set md = Nothing
  29.     StringToMD5Hex1 = LCase(sign)
  30. End Function
  31. '''编码转换("我是学员","UTF-8","gbk")
  32. '''decode(encode("我是学员"),"gbk")
  33. '''decode(encode("我是学员","gbk"),"gbk")
  34. Function 编码转换(str, CharSet1, CharSet2)
  35.     编码转换 = ""
  36.     On Error GoTo err1
  37.     Dim ADODB_Stream
  38.     Set ADODB_Stream = CreateObject("ADODB.Stream")
  39.     Dim bytes()                                   As Byte
  40.     Dim gbk_txt                                   As String
  41.     With ADODB_Stream
  42.         .Charset = CharSet1
  43.         .Open
  44.         .WriteText str, 0
  45.         .Position = 0
  46.         .Type = 1
  47.         If CharSet1 = CharSet2 Then
  48.             .Position = 0
  49.         Else
  50.             .Position = 3 ''无 bom
  51.         End If
  52.         bytes = .Read()
  53.         .Close
  54.         .Open
  55.         .Type = 1
  56.         .Write bytes
  57.         .Position = 0
  58.         .Type = 2
  59.         .Charset = CharSet2
  60.         编码转换 = .ReadText()
  61.         .Close
  62.      End With
  63. err1:
  64.     Set ADODB_Stream = Nothing
  65. End Function
  66. Function encode(ss, Optional ByVal CharSet1 As String = "UTF-8") As Byte()
  67.     On Error GoTo err1
  68.     Dim ADODB_Stream
  69.     Set ADODB_Stream = CreateObject("ADODB.Stream")
  70.     With ADODB_Stream
  71.         .Charset = CharSet1
  72.         .Open
  73.         .WriteText ss, 0
  74.         .Position = 0
  75.         .Type = 1
  76.         If CharSet1 <> "UTF-8" Then
  77.             .Position = 0
  78.         Else
  79.             .Position = 3 ''无 bom
  80.         End If
  81.         encode = .Read()
  82.         .Close
  83.      End With
  84. err1:
  85.     Set ADODB_Stream = Nothing
  86. End Function
  87. Function decode(bytes, Optional ByVal CharSet2 As String = "UTF-8") As String
  88.     decode = ""
  89.     On Error GoTo err1
  90.     Dim ADODB_Stream
  91.     Set ADODB_Stream = CreateObject("ADODB.Stream")
  92.     With ADODB_Stream
  93.         .Open
  94.         .Type = 1
  95.         .Write bytes
  96.         .Position = 0
  97.         .Type = 2
  98.         .Charset = CharSet2
  99.         decode = .ReadText()
  100.         .Close
  101.      End With
  102. err1:
  103.     Set ADODB_Stream = Nothing
  104. End Function
复制代码

1.png

评分

3

查看全部评分

TA的精华主题

TA的得分主题

发表于 2024-5-16 01:03 来自手机 | 显示全部楼层
VBA还能用MD5呀!大佬主要用于什么用途

TA的精华主题

TA的得分主题

发表于 2024-5-16 07:25 来自手机 | 显示全部楼层
liuxin12 发表于 2024-5-16 01:03
VBA还能用MD5呀!大佬主要用于什么用途

好多网站的的请求都要用到

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-5-17 13:31 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
liuxin12 发表于 2024-5-16 01:03
VBA还能用MD5呀!大佬主要用于什么用途

MD5 一般用于
验证         比如某些网页 先用MD5加密一些数据 然后跟客户请求的MD5做比较从而判断 是不是正常请求
唯一值      比如 wps的嵌图 后返回一个MD5 作为图片的唯一ID
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-11-17 11:46 , Processed in 0.038210 second(s), 10 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表