ASP BASE64加解密(亲测可用)

核心代码:

<%
  ' OPTION EXPLICIT
   const BASE_64_MAP_INIT = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"
   dim newline
   dim Base64EncMap(63)
   dim Base64DecMap(127)
   '初始化函数
   PUBLIC SUB initCodecs()
     ' 初始化变量
     newline = "<P>" & chr(13) & chr(10)
     dim max, idx
       max = len(BASE_64_MAP_INIT)
     for idx = 0 to max - 1
        Base64EncMap(idx) = mid(BASE_64_MAP_INIT, idx + 1, 1)
     next
     for idx = 0 to max - 1
        Base64DecMap(ASC(Base64EncMap(idx))) = idx
     next
   END SUB
   'Base64加密函数
   PUBLIC FUNCTION base64Encode(plain)
     if len(plain) = 0 then
        base64Encode = ""
        exit function
     end if
     dim ret, ndx, by3, first, second, third
     by3 = (len(plain) \ 3) * 3
     ndx = 1
     do while ndx <= by3
        first = asc(mid(plain, ndx+0, 1))
        second = asc(mid(plain, ndx+1, 1))
        third = asc(mid(plain, ndx+2, 1))
        ret = ret & Base64EncMap( (first \ 4) AND 63 )
        ret = ret & Base64EncMap( ((first * 16) AND 48) + ((second \ 16) AND 15 ) )
        ret = ret & Base64EncMap( ((second * 4) AND 60) + ((third \ 64) AND 3 ) )
        ret = ret & Base64EncMap( third AND 63)
        ndx = ndx + 3
     loop
     if by3 < len(plain) then
        first = asc(mid(plain, ndx+0, 1))
        ret = ret & Base64EncMap( (first \ 4) AND 63 )
        if (len(plain) MOD 3 ) = 2 then
          second = asc(mid(plain, ndx+1, 1))
          ret = ret & Base64EncMap( ((first * 16) AND 48) + ((second \ 16) AND 15 ) )
          ret = ret & Base64EncMap( ((second * 4) AND 60) )
        else
          ret = ret & Base64EncMap( (first * 16) AND 48)
          ret = ret '& "="
        end if
        ret = ret '& "="
     end if
     base64Encode = ret
   END FUNCTION
   'Base64解密函数
   PUBLIC FUNCTION base64Decode(scrambled)
     if len(scrambled) = 0 then
        base64Decode = ""
        exit function
     end if
     dim realLen
     realLen = len(scrambled)
     do while mid(scrambled, realLen, 1) = "="
        realLen = realLen - 1
     loop
     dim ret, ndx, by4, first, second, third, fourth
     ret = ""
     by4 = (realLen \ 4) * 4
     ndx = 1
     do while ndx <= by4
        first = Base64DecMap(asc(mid(scrambled, ndx+0, 1)))
        second = Base64DecMap(asc(mid(scrambled, ndx+1, 1)))
        third = Base64DecMap(asc(mid(scrambled, ndx+2, 1)))
        fourth = Base64DecMap(asc(mid(scrambled, ndx+3, 1)))
        ret = ret & chr( ((first * 4) AND 255) +  ((second \ 16) AND 3))
        ret = ret & chr( ((second * 16) AND 255) + ((third \ 4) AND 15))
        ret = ret & chr( ((third * 64) AND 255) + (fourth AND 63))
        ndx = ndx + 4
     loop
     if ndx < realLen then
        first = Base64DecMap(asc(mid(scrambled, ndx+0, 1)))
        second = Base64DecMap(asc(mid(scrambled, ndx+1, 1)))
        ret = ret & chr( ((first * 4) AND 255) +  ((second \ 16) AND 3))
        if realLen MOD 4 = 3 then
          third = Base64DecMap(asc(mid(scrambled,ndx+2,1)))
          ret = ret & chr( ((second * 16) AND 255) + ((third \ 4) AND 15))
        end if
     end if
     base64Decode = ret
   END FUNCTION

%>

使用方法:

' 初始化
 call initCodecs
Response.Write(base64Encode("我们之我要加密的字符串"))
Response.Write(base64Decode("bWFyczIwMTAwMjIw0"))
(0)

相关推荐

  • Base64加解密的实现方式实例详解

    Base64加解密的实现方式实例详解 本实现方式基于JDK 1.8 实现: import java.util.Base64; import java.util.Base64.Decoder; import java.util.Base64.Encoder; public class Main { static String src = "hello,sahadev"; public static void main(String[] args) { // 获取加密对象 Encoder

  • 使用 certutil 实现 Hex2Bin 和 Base64 加解密的方法

    应用到: Windows Server 2003, Windows Server 2003 R2, Windows Server 2003 with SP1, Windows Server 2003 with SP2 Certutil Certutil.exe 是作为 Windows Server 2003 家族中证书服务的一部分进行安装的命令行程序. 您还可以通过下载并安装 Windows Server 2003 管理工具包来获取 Certutil.exe (http://go.microso

  • asp base64加解密函数代码

    复制代码 代码如下: <% sBASE_64_CHARACTERS = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/" sBASE_64_CHARACTERS = strUnicode2Ansi(sBASE_64_CHARACTERS) Function strUnicodeLen(asContents) '计算unicode字符串的Ansi编码的长度 asContents1="a&q

  • ASP BASE64加解密(亲测可用)

    核心代码: <% ' OPTION EXPLICIT const BASE_64_MAP_INIT = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/" dim newline dim Base64EncMap(63) dim Base64DecMap(127) '初始化函数 PUBLIC SUB initCodecs() ' 初始化变量 newline = "<P>&quo

  • 2020新版本pycharm+anaconda+opencv+pyqt环境配置学习笔记,亲测可用

    一.pycharm介绍与安装 1.pycharm介绍 PyCharm是一种Python IDE,是Python语言开发时提高其效率的工具,比如调试.语法高亮.Project管理.代码跳转.智能提示.自动完成.单元测试.版本控制.其本身可以在线上更新和下载库,但本文未使用,使用的是anaconda进行管理 选择原因 开发项目,管理项目资源方便,可导入各种集成库进行开发,图像处理,界面设计,数据库管理等皆可融为一起,方便实际工程项目开发使用 2.安装教程 1.首先去Pycharm官网,或者直接输入网

  • IDEA下因Lombok插件产生的Library source does not match the bytecode报错问题及解决方法(亲测可用)

    写项目的时候 遇到了个这个问题:Library source does not match the bytecode XXX 然后自己找了找 大部分的解决方法都是没有解决方法 越看心越凉 部分解决方案是清空缓存 试了下并没有什么用 还有些解决方案是用Gradle管理的 而我是用Maven管理的 不太适用 最后然后自己摸索着解决了 由于该问题我已经解决了 无法复现 因而无法截图 就用文字来描述吧: 1.卸载IDEA中的Lombok插件 File-Settings-Plugins 搜索Lombok

  • PyCharm2019.3永久激活破解详细图文教程,亲测可用(不定期更新)

    PyCharm是一种Python IDE,带有一整套可以帮助用户在使用Python语言开发时提高其效率的工具,比如调试.语法高亮.Project管理.代码跳转.智能提示.自动完成.单元测试.版本控制.此外,该IDE提供了一些高级功能,以用于支持Django框架下的专业Web开发. 本教程适用于 Pycharm 所有版本,之前激活过的请重新下载安装参数 一.激活前注意事项 软件一定要是在官网下载:https://www.jetbrains.com/ 本教程适用于jetbrains全系列产品(Pyc

  • anaconda安装pytorch1.7.1和torchvision0.8.2的方法(亲测可用)

    1. 创建一个新的环境 打开Anaconda Navigator,找不到的win10左下角输入一下就能找到了,如下图. 这里通过列表下面的create按钮可以创建一个新的环境,这里我将新环境起名为torch,右面列表中是我安装好的包,刚创建的时候没有这么多. 2. 从pytorch官网得到获取包的命令 打开Anaconda Prompt,输入activate 刚刚创建的环境名可以切换到刚刚创建的环境.这里我用的是下面的命令,你需要根据自己创建的环境名修改相应的激活名称. activate tor

  • Vue项目获取url中的参数(亲测可用)

    目录 情况一:内部页面之间互相传值 情况二:外部跳转VUE项目时自带参数 1 获取?后面的参数 2 获取不带?的URL中的参数 亲测可用,若有疑问请私信 获取url参数有两种情况: 情况一:内部页面之间互相传值 这里先讲情况一,因为同一项目内互相传值比较简单,假如要从A页面跳转到B页面,并传值.就要在A页面这么写 this.$router.push({name:"B",query:{ Id : this.tId , ... }}) 进入B页面之后,在B页面内这么写 this.Id =

  • Java 实现文件批量重命名亲测可用(精简版)

    之前在网上下载了很多视频,解压缩后,发现里面每个文件前面都有一长串的网址,导致我根本看不清每个视频的名字到底叫什么? 网上搜了一些批量重命名的方法,可都不是我想要的,既然这样,干脆自己动手用Java写一个吧.测了一下应该没问题,现在分享出来. 先上代码: import java.io.File; import java.util.HashMap; import java.util.Map; import java.util.Map.Entry; /** * 重命名规则类 * @author ja

  • 微信小程序使用websocket通讯的demo,含前后端代码,亲测可用

    0.概述websocket (1) 个人总结:后台设置了websocket地址,服务器开启后等待有人去连接它. 一个客户端一打开就去连接websocket地址,同时传递某些识别参数.这样一来后台和客户端连接成功了,然后后台就可以发消息给客户端了,(客户端也可以再回话给后台). (2) socket叫套接字,应用程序用socket向网络发出请求或者应答网络请求. (3) 官方解释的socket 建立连接四步骤: 服务器端开启socket,然后accep方法处于监听状态,等待客户端的连接. 客户端开

随机推荐