base64编码 vba_【VBA研究】如何用Base64 编解码方法实现简单的加解密
Base64编码的思想是是采用64个基本的ASCII码字符对数据进行重新编码,将数据变成字符串实现文本传输。由于编码简单,所以很容易实现,代码也是现成的。利用这个编码规则可以实现简单的加解密。编解码方法见: VB实现Base64 编解码
我用VBA做了个简单的系统,其中用到用户登录,自然要保存用户名和密码。密码存放在数据库中,不想明码保存,于是就想到用这个编码方法进行加密。Base64编码是按照64个字符字典进行编码的,为了加密,这64个字符可以打乱原来的顺序,也可以用其他字符替换掉部分字符,如果不考虑解码,这个字符字典中的字符甚至可以重复。比如密码保存,只需比较密文,不需要还原成明文进行比较,那么字符字典中重复也是没有问题的,可以任意取64个字符作为字典。
下面这个函数就可以用来生成密码的密文,其中的数据字典是用个随机函数随意生成的:
Function B64Encode(sou_str As String) As String 'Base64 编码
On Error GoTo over '排错
Dim buf() As Byte, length As Long, mods As Long
Dim Str() As Byte, kk As Long, i As Long
'字符字典(用随机产生的)
Const B64_CHAR_DICT = "Qx7mCcL2XsYm!Q^ZjKeLn#r2H4rV6B(Xu$v$zU2@CnHfVf7tH9XrBcB9WyA6F%Ah."
kk = Len(sou_str) - 1
ReDim Str(kk)
For i = 0 To kk
Str(i) = Asc(Mid(sou_str, i + 1, 1))
Next i
mods = (UBound(Str) + 1) Mod 3 '除以3的余数
length = UBound(Str) + 1 - mods
ReDim buf(length / 3 * 4 + IIf(mods <> 0, 4, 0) - 1)
For i = 0 To length - 1 Step 3
buf(i / 3 * 4) = (Str(i) And &HFC) / &H4
buf(i / 3 * 4 + 1) = (Str(i) And &H3) * &H10 + (Str(i + 1) And &HF0) / &H10
buf(i / 3 * 4 + 2) = (Str(i + 1) And &HF) * &H4 + (Str(i + 2) And &HC0) / &H40
buf(i / 3 * 4 + 3) = Str(i + 2) And &H3F
Next
If mods = 1 Then
buf(length / 3 * 4) = (Str(length) And &HFC) / &H4
buf(length / 3 * 4 + 1) = (Str(length) And &H3) * &H10
buf(length / 3 * 4 + 2) = 64
buf(length / 3 * 4 + 3) = 64
ElseIf mods = 2 Then
buf(length / 3 * 4) = (Str(length) And &HFC) / &H4
buf(length / 3 * 4 + 1) = (Str(length) And &H3) * &H10 + (Str(length + 1) And &HF0) / &H10
buf(length / 3 * 4 + 2) = (Str(length + 1) And &HF) * &H4
buf(length / 3 * 4 + 3) = 64
End If
For i = 0 To UBound(buf)
B64Encode = B64Encode + Mid(B64_CHAR_DICT, buf(i) + 1, 1)
Next
over:
End Function
'调用测试
Private Sub ttt()
aa = B64Encode("iamlaosong")
bb = B64Encode("iamlaosong")
MsgBox aa & " " & bb
End Sub
关于随机字符串的产生,见:【VBA研究】生成随机密码
---------------------
base64编码 vba_【VBA研究】如何用Base64 编解码方法实现简单的加解密相关推荐
- base64编码_几分钟看懂Base64编码原理
Base64简介 Base64是基于64个可打印字符(小写字母a-z,大写字母A-Z,数字0-9,符号"+","/" 再加上作为垫字的"=" ...
- Python学习教程:Python3内置模块之base64编解码方法小结
Python学习教程:Python3内置模块之base64编解码方法小结 概述 Base64 是网络上最常见的用于传输 8Bit 字节码的编码方式之一,Base64 就是一种基于 64 个可打印字符来 ...
- 图片进行base64编解码方法
2019独角兽企业重金招聘Python工程师标准>>> package com.vista.test; import java.io.FileInputStream; import ...
- 集显也能硬件编码:Intel SDK 各种音视频编解码学习详解
http://blog.sina.com.cn/s/blog_4155bb1d0100soq9.html INTEL MEDIA SDK是INTEL推出的基于其内建显示核心的编解码技术,我们在播放高清 ...
- base64编码 vba_VB VBA ASP 可通用的基于Base64进行加密和解密的函数
VB VBA ASP 可通用的基于Base64进行加密和解密的函数 可用于Access VBA 以及 Excel VBA对字符串 数据甚至文本文件进行加密和解密,以保证您数据的安全. 先创建一个模块, ...
- php解压base64编码,PHP函数分享之解压缩base64压缩文件
解压缩base64 压缩文件,稍微解释一下,比如你有一个pdf文件,使用软件压缩成了.gz格式的文件,然后再把这个文件做成了basa64 String 传输给某个人,比如这个人就是我,好吧,问题来了, ...
- 研究语音和音频编解码的相关大学和链接
美国圣塔芭芭拉加州大学:(缩写UCSB) http://www.scl.ece.ucsb.edu/html/index.html 瑞典皇家理工学院工程:() http://www.s3.kth.se/ ...
- Excel VBA高效办公应用-第十六章-VBA高效文件操作(同时给多个工作簿加解密)
本示例演示了批量加解密文件操作. Option ExplicitPrivate Sub ComboBox1_Change()'增加列表框的选项 ListBox1.AddItem ComboBox1.T ...
- Java中BASE64 编码
2019独角兽企业重金招聘Python工程师标准>>> BASE64 编码是一种常用的字符编码,在很多地方都会用到.JDK 中提供了非常方便的 BASE64Encoder 和 BAS ...
最新文章
- 通过TA binary查看TA的uuid和stack
- Java工程师学习步骤
- GitHub的DGit改进了平台的可靠性、性能以及可用性
- 3.4 改进定向搜索
- 球球大作战c语言源代码,球球大作战,源码分享
- FastAPI(56)- 使用 Websocket 打造一个迷你聊天室
- iPhoneX、iPhoneXS、iPhoneXR、iPhoneXSMax屏幕适配
- python使用 photoshop-python-api 调用ps处理批量动作操作
- 虚拟机服务器渗透,对一台虚拟主机服务器的渗透 -电脑资料
- html带有进度条的登陆,带进度条上传
- oracle10g笔记1
- 06蚂蚁-高性能Nginx服务器——1.反向代理
- Mysql索引类型 normal, unique, full text的区别
- 试题 基础练习 字母图形
- ReadProcessMemory()
- 葫芦娃手游服务器未响应,葫芦娃充值没反应 充值元宝未到账解决办法
- 赚钱项目在家可以赚钱,赶紧来看看吧!
- 一个程序员转型 AI 工程师的故事
- 08年普元软件发展回顾与09年展望
- 找参考图的同志们看过来,分享几个建模参考网站给你们。再不用愁啦