ASP Base64位 加密解密
网上找了很多,运行时都会提示某个错误,有点乱。后面找到测试,这个转ASNI码的能实现
sBASE_64_CHARACTERS = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"
sBASE_64_CHARACTERS = strUnicode2Ansi(sBASE_64_CHARACTERS) Function strUnicodeLen(asContents)
'计算unicode字符串的Ansi编码的长度
asContents1="a"&asContents
len1=len(asContents1)
k=
for i= to len1
asc1=asc(mid(asContents1,i,))
if asc1< then asc1=+asc1
if asc1> then
k=k+
else
k=k+
end if
next
strUnicodeLen=k-
End Function Function strUnicode2Ansi(asContents)
'将Unicode编码的字符串,转换成Ansi编码的字符串
strUnicode2Ansi=""
len1=len(asContents)
for i= to len1
varchar=mid(asContents,i,)
varasc=asc(varchar)
if varasc< then varasc=varasc+
if varasc> then
varHex=Hex(varasc)
varlow=left(varHex,)
varhigh=right(varHex,)
strUnicode2Ansi=strUnicode2Ansi & chrb("&H" & varlow ) & chrb("&H" & varhigh )
else
strUnicode2Ansi=strUnicode2Ansi & chrb(varasc)
end if
next
End function Function strAnsi2Unicode(asContents)
'将Ansi编码的字符串,转换成Unicode编码的字符串
strAnsi2Unicode = ""
len1=lenb(asContents)
if len1= then exit function
for i= to len1
varchar=midb(asContents,i,)
varasc=ascb(varchar)
if varasc > then
strAnsi2Unicode = strAnsi2Unicode & chr(ascw(midb(asContents,i+,) & varchar))
i=i+
else
strAnsi2Unicode = strAnsi2Unicode & chr(varasc)
end if
next
End function Function Base64encode(asContents)
'将Ansi编码的字符串进行Base64编码
'asContents应当是ANSI编码的字符串(二进制的字符串也可以)
Dim lnPosition
Dim lsResult
Dim Char1
Dim Char2
Dim Char3
Dim Char4
Dim Byte1
Dim Byte2
Dim Byte3
Dim SaveBits1
Dim SaveBits2
Dim lsGroupBinary
Dim lsGroup64
Dim m4,len1,len2 len1=Lenb(asContents)
if len1< then
Base64encode=""
exit Function
end if m3=Len1 Mod
If M3 > Then asContents = asContents & String(-M3, chrb())
'补足位数是为了便于计算 IF m3 > THEN
len1=len1+(-m3)
len2=len1-
else
len2=len1
end if lsResult = "" For lnPosition = To len2 Step
lsGroup64 = ""
lsGroupBinary = Midb(asContents, lnPosition, ) Byte1 = Ascb(Midb(lsGroupBinary, , )): SaveBits1 = Byte1 And
Byte2 = Ascb(Midb(lsGroupBinary, , )): SaveBits2 = Byte2 And
Byte3 = Ascb(Midb(lsGroupBinary, , )) Char1 = Midb(sBASE_64_CHARACTERS, ((Byte1 And ) / ) + , )
Char2 = Midb(sBASE_64_CHARACTERS, (((Byte2 And ) / ) Or (SaveBits1 * ) And &HFF) + , )
Char3 = Midb(sBASE_64_CHARACTERS, (((Byte3 And ) / ) Or (SaveBits2 * ) And &HFF) + , )
Char4 = Midb(sBASE_64_CHARACTERS, (Byte3 And ) + , )
lsGroup64 = Char1 & Char2 & Char3 & Char4 lsResult = lsResult & lsGroup64
Next '处理最后剩余的几个字符
if M3 > then
lsGroup64 = ""
lsGroupBinary = Midb(asContents, len2+, ) Byte1 = Ascb(Midb(lsGroupBinary, , )): SaveBits1 = Byte1 And
Byte2 = Ascb(Midb(lsGroupBinary, , )): SaveBits2 = Byte2 And
Byte3 = Ascb(Midb(lsGroupBinary, , )) Char1 = Midb(sBASE_64_CHARACTERS, ((Byte1 And ) / ) + , )
Char2 = Midb(sBASE_64_CHARACTERS, (((Byte2 And ) / ) Or (SaveBits1 * ) And &HFF) + , )
Char3 = Midb(sBASE_64_CHARACTERS, (((Byte3 And ) / ) Or (SaveBits2 * ) And &HFF) + , ) if M3= then
lsGroup64 = Char1 & Char2 & ChrB() & ChrB() '用=号补足位数
else
lsGroup64 = Char1 & Char2 & Char3 & ChrB() '用=号补足位数
end if
lsResult = lsResult & lsGroup64
end if
Base64encode = lsResult
End Function Function Base64decode(asContents)
'将Base64编码字符串转换成Ansi编码的字符串
'asContents应当也是ANSI编码的字符串(二进制的字符串也可以)
Dim lsResult
Dim lnPosition
Dim lsGroup64, lsGroupBinary
Dim Char1, Char2, Char3, Char4
Dim Byte1, Byte2, Byte3
Dim M4,len1,len2 len1= Lenb(asContents)
M4 = len1 Mod if len1 < or M4 > then
'字符串长度应当是4的倍数
Base64decode = ""
exit Function
end if '判断最后一位是不是 = 号
'判断倒数第二位是不是 = 号
'这里m4表示最后剩余的需要单独处理的字符个数
if midb(asContents, len1, ) = chrb() then m4=
if midb(asContents, len1-, ) = chrb() then m4= if m4 = then
len2=len1
else
len2=len1-
end if For lnPosition = To Len2 Step
lsGroupBinary = ""
lsGroup64 = Midb(asContents, lnPosition, )
Char1 = InStrb(sBASE_64_CHARACTERS, Midb(lsGroup64, , )) -
Char2 = InStrb(sBASE_64_CHARACTERS, Midb(lsGroup64, , )) -
Char3 = InStrb(sBASE_64_CHARACTERS, Midb(lsGroup64, , )) -
Char4 = InStrb(sBASE_64_CHARACTERS, Midb(lsGroup64, , )) -
Byte1 = Chrb(((Char2 And ) / ) Or (Char1 * ) And &HFF)
Byte2 = lsGroupBinary & Chrb(((Char3 And ) / ) Or (Char2 * ) And &HFF)
Byte3 = Chrb((((Char3 And ) * ) And &HFF) Or (Char4 And ))
lsGroupBinary = Byte1 & Byte2 & Byte3 lsResult = lsResult & lsGroupBinary
Next '处理最后剩余的几个字符
if M4 > then
lsGroupBinary = ""
lsGroup64 = Midb(asContents, len2+, m4) & chrB() 'chr(65)=A,转换成值为0
if M4= then '补足4位,是为了便于计算
lsGroup64 = lsGroup64 & chrB()
end if
Char1 = InStrb(sBASE_64_CHARACTERS, Midb(lsGroup64, , )) -
Char2 = InStrb(sBASE_64_CHARACTERS, Midb(lsGroup64, , )) -
Char3 = InStrb(sBASE_64_CHARACTERS, Midb(lsGroup64, , )) -
Char4 = InStrb(sBASE_64_CHARACTERS, Midb(lsGroup64, , )) -
Byte1 = Chrb(((Char2 And ) / ) Or (Char1 * ) And &HFF)
Byte2 = lsGroupBinary & Chrb(((Char3 And ) / ) Or (Char2 * ) And &HFF)
Byte3 = Chrb((((Char3 And ) * ) And &HFF) Or (Char4 And )) if M4= then
lsGroupBinary = Byte1
elseif M4= then
lsGroupBinary = Byte1 & Byte2
end if lsResult = lsResult & lsGroupBinary
end if Base64decode = lsResult End Function
调用如下:
'加密
strAnsi2Unicode(Base64encode(strUnicode2Ansi("加密字符串")))
'解密
strAnsi2Unicode(Base64decode(strUnicode2Ansi("解密字符串")))
ASP Base64位 加密解密的更多相关文章
- base64位加密解密
1.base64位加密base64是用于传输8Bit字节代码,由上图的编码表可以知道,编码后的内容只包含这64个字符类型,所以称为base64编码 2.编码过程 : 首先将待编码的内容转换成8位二进制 ...
- 【支付专区】之对字符串数据进行Base64位加密,解密
加密,解密 String pwd="测试"; byte[] bytes = pwd.getBytes("UTF-8"); //加密 String pwdNew= ...
- ASP.NET常用加密解密方法
ASP.NET常用加密解密方法 一.MD5加密解密 1.加密 C# 代码 public static string ToMd5(string clearString) ...
- Java Base64位加密和解密(包括其他加密参考)
链接https://blog.csdn.net/longguangfu8/article/details/78948213 常用加密解密算法[RSA.AES.DES.MD5]介绍和使用 https:/ ...
- 【转】asp.net(c#)加密解密算法之sha1、md5、des、aes实现源码详解
原文地址:http://docode.top/Article/Detail/10003 目录: 1..Net(C#)平台下Des加密解密源代码 2..Net(C#)平台下Aes加密解密源代码 3..N ...
- Javascript实现base64的加密解密
//1.加密解密方法使用: //1.加密 var str = '124中文内容'; var base = new Base64(); var result = base.encode(str); // ...
- Javascript实现base64的加密解密【转】
场景 这几天使用PHP向前端传值的时候,遇到一个问题,要将代码传过去赋值.如果使用urlencode()和urldecode()函数,就会出现js无法解码的情况,因为php和js的相关函数算法不一致. ...
- php AES cbc模式 pkcs7 128位加密解密(微信小程序)
PHP AES CBC模式PKCS7 128位加密 加密: $key = '1234567812345678'; $iv = '1234567890123456'; $message = '12345 ...
- hash模块 hashlib不可逆加密 和 base64算法加密解密
hashlib模块 用于加密相关的操作,代替md5模块和sha模块,主要提供SHA1,SHA224,SSHA256,SHA384,SHA512,MD5算法 直接看代码案例: ---------md5- ...
随机推荐
- Linux(Centos)安装配置SVN服务器
1. 安装SVN服务器: 检查是否已安装 # rpm -qa subversion 安装SVN服务器 # yum install httpd httpd-devel subversion mod_da ...
- 【UVALive】4094 WonderTeam(神结论)
题目 传送门:QWQ 分析 好神的结论啊 看代码吧(Length只有85) 代码 顺手压了压代码 目前代码长度rk1 vjudge #include <iostream> ?:n ...
- php 文件缓存类
//文件缓存类 class FileCache { private $cacheTime = 3600; //默认缓存时间 秒 private $cacheDir = './filecache'; / ...
- Linux下分析某个进程CPU占用率高的原因
Linux下分析某个进程CPU占用率高的原因 通过top命令找出消耗资源高的线程id,利用strace命令查看该线程所有系统调用 1.top 查到占用cpu高的进程pid 2.查看该pid的线程 ...
- Spring batch学习 持久化表结构详解(2)
#接上一篇 这一篇讲一下持久化需要表 batch_job_execution, batch_job_execution_context, batch_job_execution_params, bat ...
- css常用属性总结:颜色和单位
在css代码编写中,估计颜色和单位是必不可少的,然而在css中关于颜色和单位值的写法有很多种写法,所以有必要把它弄清楚. 颜色 当初我在初学前端的时候,就会冒出一个疑问“我该如何设置网页颜色?”,一般 ...
- unity animation readonly 无法加事件?
目前找到的解决方案是用代码加Event: using System.Collections; using System.Collections.Generic; using UnityEngine; ...
- sqlserver 必须声明标量变量 "***"。
发现在navicat premium上执行报这个异常,在sqlserver上不报,想到我之前的文章用存储过程时mysql里有个分割符,去掉“:”果然执行成功. DECLARE @countlmc IN ...
- jdeveloper12.1.3的安装与卸载
jdeveloper12.1.3的安装步骤:1>安装jdk7.0 2>在命令行中输入:cd C:\Program Files\Java\jdk1.7.0_60\bin 3>命令行安装 ...
- Linq多字段排序
var q = db.Customers.OrderBy(c => c.City).ThenBy(c => c.ContactName).ToList(); var q = from it ...