javascript 实现Base64加密

2023-11-11

想必大家对base64并不陌生吧,在本文将为大家介绍下Js中的base64加密解密过程,感兴趣的朋友不要错过

[html]  view plain  copy   在CODE上查看代码片 派生到我的代码片
  1. <script type="text/javascript">   
  2.   
  3. var base64encodechars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";   
  4. var base64decodechars = new Array(   
  5. -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,   
  6. -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,   
  7. -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 62, -1, -1, -1, 63,   
  8. 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, -1, -1, -1, -1, -1, -1,   
  9. -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,   
  10. 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, -1, -1, -1, -1, -1,   
  11. -1, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40,   
  12. 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, -1, -1, -1, -1, -1);   
  13.   
  14. function base64encode(str) {   
  15. var out, i, len;   
  16. var c1, c2, c3;   
  17. len = str.length;   
  18. i = 0;   
  19. out = "";   
  20. while (i < len) {   
  21. c1 = str.charCodeAt(i++) & 0xff;   
  22. if (i == len) {   
  23. out += base64encodechars.charAt(c1 >> 2);   
  24. out += base64encodechars.charAt((c1 & 0x3) << 4);   
  25. out += "==";   
  26. break;   
  27. }   
  28. c2 = str.charCodeAt(i++);   
  29. if (i == len) {   
  30. out += base64encodechars.charAt(c1 >> 2);   
  31. out += base64encodechars.charAt(((c1 & 0x3) << 4) | ((c2 & 0xf0) >> 4));   
  32. out += base64encodechars.charAt((c2 & 0xf) << 2);   
  33. out += "=";   
  34. break;   
  35. }   
  36. c3 = str.charCodeAt(i++);   
  37. out += base64encodechars.charAt(c1 >> 2);   
  38. out += base64encodechars.charAt(((c1 & 0x3) << 4) | ((c2 & 0xf0) >> 4));   
  39. out += base64encodechars.charAt(((c2 & 0xf) << 2) | ((c3 & 0xc0) >> 6));   
  40. out += base64encodechars.charAt(c3 & 0x3f);   
  41. }   
  42. return out;   
  43. }   
  44.   
  45. function base64decode(str) {   
  46. var c1, c2, c3, c4;   
  47. var i, len, out;   
  48.   
  49. len = str.length;   
  50.   
  51. i = 0;   
  52. out = "";   
  53. while (i < len) {   
  54.   
  55. do {   
  56. c1 = base64decodechars[str.charCodeAt(i++) & 0xff];   
  57. } while (i < len && c1 == -1);   
  58. if (c1 == -1)   
  59. break;   
  60.   
  61. do {   
  62. c2 = base64decodechars[str.charCodeAt(i++) & 0xff];   
  63. } while (i < len && c2 == -1);   
  64. if (c2 == -1)   
  65. break;   
  66.   
  67. out += String.fromCharCode((c1 << 2) | ((c2 & 0x30) >> 4));   
  68.   
  69. do {   
  70. c3 = str.charCodeAt(i++) & 0xff;   
  71. if (c3 == 61)   
  72. return out;   
  73. c3 = base64decodechars[c3];   
  74. } while (i < len && c3 == -1);   
  75. if (c3 == -1)   
  76. break;   
  77.   
  78. out += String.fromCharCode(((c2 & 0xf) << 4) | ((c3 & 0x3c) >> 2));   
  79.   
  80. do {   
  81. c4 = str.charCodeAt(i++) & 0xff;   
  82. if (c4 == 61)   
  83. return out;   
  84. c4 = base64decodechars[c4];   
  85. } while (i < len && c4 == -1);   
  86. if (c4 == -1)   
  87. break;   
  88. out += String.fromCharCode(((c3 & 0x03) << 6) | c4);   
  89. }   
  90. return out;   
  91. }   
  92. </script>   
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

javascript 实现Base64加密 的相关文章

  • MySQL-内连接、外连接和全连接

    连接过程 连接过程首先要确定第一个表 称为驱动表 驱动表上查询的每一条记录分别需要到被驱动表上查找符合过滤条件的记录 因此驱动表只需要访问一次 被驱动表可能需要访问多次 内连接 对于内连接的两个表 驱动表中的记录在被驱动表中找不到匹配的记录
  • php echo换行

  • 前端终于要破局了!

    正文 前段时间 掘金热帖 放心 前端死不了 在前端圈疯传 百度前端大佬表明 前端技术是依托于互联网行业的 只要行业还在 它就会有用武之地 就会有价值 总的来说 技能跟上发展 前端就不会死 谁掌握得更深 应用得更好 谁就更容易脱颖而出 为此
  • Spark报Total size of serialized results of 12189 tasks is bigger than spark.driver.maxResultSize

    一 异常信息 Total size of serialized results of 12189 tasks is bigger than spark driver maxResultSize 1024M Total size of ser
  • [万能解决问题]MATLAB has encountered an internal problem and needs to close.

    1 错误的描述及解决办法 使用Matlab和C 混合编程时 即编写完mex文件 调用时 经常会提示下面的错误 触发上述错误的情况 1 如果一进入mexFunction函数就报错 即不会命中函数中设置的任何断点 也会报错 那么说明 你忘记了将
  • Keil5的仿真调试

    Keil5基本的仿真调试操作 首先点击魔法棒 然后输入你板子上所用的晶振 然后进入debug 然后选择 Use Simulator 然后点击OK 然后点击调试按钮 然后就会出现调试页面 我这里是已经把汇编窗口给挪到右侧了 你第一次打开可能是
  • 红黑树详解

    1 红黑树的概念 红黑树 是一种二叉搜索树 但在每个结点上增加一个存储位表示结点的颜色 可以是Red或 Black 通过对任何一条从根到叶子的路径上各个结点着色方式的限制 红黑树确保没有一条路径会比其他路径长出俩倍 因而是接近平衡的 红黑树
  • 【C】数组的地址

    目录 一维数组 二维数组 数组的地址和数组首元素地址相同 只有在sizeof 和 的情况下 取出的是整个数组的地址 其他情况下都是首元素地址 一维数组 sizeof 有 无 二维数组 sizeof 有 无 注意 这里二维数组的一个元素中是两
  • Docker高级——网络配置

    Docker网络 默认网络 安装 Docker 以后 会默认创建三种网络 可以通过 docker network ls 查看 root test docker network ls NETWORK ID NAME DRIVER SCOPE
  • html自定义列表第三层嵌套,搜索引擎优化一般不抓取三层以上的表格嵌套

    一 DIV CSS的网页制作对 SEO 的优势 由于国外都流行用DIV CSS来制作网页 这点与大多国内的企业站点用TABLE不同 所以想谈一下DIV CSS的网页制作对 SEO 的优势有哪些 这些都是比较于TABLE而言的 DIV CSS
  • Python爬虫实战:2020最新京东商品数据爬虫保姆式教程(小白也能懂)!

    Python爬虫 基于Scrapy爬取京东商品数据并保存到mysql且下载图片 一 项目准备 二 网页及代码分析 三 完整代码 一 项目准备 创建scrapy京东项目 scrapy startproject Jingdong cd Jing
  • QT setWindowFlags函数

    Qt Widget 是一个窗口或部件 有父窗口就是部件 没有就是窗口 Qt Window 是一个窗口 有窗口边框和标题 Qt Dialog 是一个对话框窗口 Qt Sheet 是一个窗口或部件Macintosh表单 Qt Drawer 是一
  • 小程序 function(res)与(res) =>的区别

    前者不可使用 this setData cameraImg res tempImagePath 后者可以使用 this setData cameraImg res tempImagePath 如果在一个对象的方法里面
  • acadacad经典工作空间.cuix_自定义还原CAD“经典”绘图空间?(适用2021~~2015版本)...

    你已选中了添加链接的内容 本文由小8整理首发 版权归本公众号所有 如有侵 请自行删除 在位编辑器 软件安装 应用技巧 图库资料 视频教程 很多小伙伴经常问怎样切换 经典空间 的问题了 从CAD2015版本开始 官方已经取消 AutoCAD
  • response.getWriter().write()和 response.getWriter().print()的区别 以及 PrintWriter对象 和 out对象 的区别

    感谢原文作者 krismile qh 原文链接 https blog csdn net krismile qh article details 89926001 一 response getWriter write 和 response g
  • java并发编程:CopyOnWrite容器介绍

    前言 Copy On Write简称COW 是一种用于程序设计中的优化策略 其基本思路是 从一开始大家都在共享同一个内容 当某个人想要修改这个内容的时候 才会真正把内容Copy出去形成一个新的内容然后再改 这是一种延时懒惰策略 从JDK1
  • radius认证技术

    1 AAA和Radius概述 AAA是验证授权和记账Authentication Authorization and Accounting 的简称 它是运行于NAS上的客户端程序 它提供了一个用来对验证 授权和记账这三种安全功能进行配置的一
  • 西门子S7-200 SMART控制步进电机(二)

    目录 一 开环运动控制方法 二 运动轴概述 三 配置运动控制向导 一 开环运动控制方法 S7 200 SMART CPU提供三种开环运动控制的方法 1 脉冲宽度调制 PWM 内置于CPU中 用于速度 位置或占空比的控制 2 脉冲串输出 PT

随机推荐

  • 《面试准备》c/c++贪心算法实例

    贪心算法问题1 西红柿首富的烦恼 王多鱼获得了一笔的奖金X 要求购买最少的商品把钱花光 即没有零钱剩下 否则奖金会被没收 输入 一个整数k 商品的种类 每个种类商品个数不限 第i类商品的价值a i 一个整数m 奖金总额 输出 最少商品数量
  • 现货白银走势背后的秘密

    现货白银的价格走势是全球白银市场指标价格 很多大型机构 基金公司和专业投资者都会参与其中 普通的投资者作为相对弱势的一群 当然想知道这个品种价格走势背后所蕴藏的秘密 日后在交易的过程中才能主动应对 然而跟现货黄金一样的是 现货白银的价格走势
  • 探索产品研发流程及步骤

    引言 一直想做一篇关于产品研发相关的文章 终于有时间来总结这些东西 说到产品研发 那么不得不说一下产品 书上说产品的5个要素 内涵 形式 外延 理念和终端 但是我认为产品就三个关键点 有用 可用 可行 有用 产品能帮助解决用户某个真实存在的
  • 跟小白学Python数据分析——绘制词云图

    本文继续采用PyEcharts v1 x版本进行绘制水球图 注 PyEcharts分为 v0 5 x 和 v1 x 两个大版本 v0 5 x 和 v1 x 间不兼容 v0 5 x是基于Python2 7 3 4 版本开发的 而v1 x是一个
  • nginx1.21.6配置ssl时升级TLSv1.3的步骤过程和解决遇到的问题

    因为安装TLS 1 3协议是要OpenSSL1 1 1以上的 所以先升级OpenSSL1 1 1 先去官网下载这个这个OpenSSL1 1 1版本的tar安装包 添加链接描述 先查询系统的版本是多少 才1 02 然后上传下载好的tar安装包
  • 01黑马数据结构笔记之动态搭建数组(vector)

    01黑马数据结构笔记之动态搭建数组 vector 1 思路 类似STL的容器vector 动态的开辟内存存放数据 内存不够时以两倍增长 提供相应的增 删 查等函数 主要是利用一个结构体来管理数组 记录数组的成员 typedef struct
  • Pandas之DataFrame对象大总结

    一 什么是DataFrame DataFrame是一个表格型的数据结构 它含有一组有序的列 每列可以是不同类型的值 DataFrame既有行索引也有列索引 它可以被看做是由Series组成的字典 共用同一个索引 数据是以二维结构存放的 类似
  • 【ubuntu】Ubuntu中Android SDK下载跟配置

    1 下载SDK SDK下载网址 2 解压下载的压缩包 android sdk tar zxvf android sdk r24 4 1 linux tgz 3 安装32位库 sudo apt get install y libc6 i386
  • Obsidian 0x06:Obsidian 笔记仓库管理

    文章目录 Obsidian 笔记仓库管理 obsidian 文件夹 trash 文件夹 笔记库设置与插件的迁移 Obsidian 笔记仓库管理 可以根据自己的需要创建不同的笔记库 但要注意 不同笔记库之间的双链是无法访问的 你不能从一个笔记
  • FastDFS 介绍及安装部署

    FastDFS 介绍及安装部署 FastDFS 组成 Tracker Server Storage Server FastDFS上传机制 FastDFS使用场景 FastDFS架构 实验环境 部署 FastDFS 安装依赖 安装服务端 配置
  • 摄像头参数 靶面尺寸 像素阵列 像元尺寸 光学结构

    靶面尺寸 Optical Format 图像传感器的尺寸越大 则成像系统的尺寸越大 捕获的光子越多 感光性能越好 信噪比越低 像素阵列 Pixel Array 对景物中明暗细节的分辨能力 像元尺寸 Pixel Size 像元尺寸是指芯片像元
  • 图片下载功能

    GetMapping flag public void getFiles PathVariable String flag HttpServletResponse response OutputStream os 新建一个输出流对象 Str
  • FZ15S五轴加工中心的自动换刀装置设计(论文+CAD图纸+SW三维图+开题报告+任务书+外文翻译)

    摘要 随着我国国民经济迅速发展和国防建设的需要 对高档的数控机床提出了急迫的大量需求 机床是一个国家制造业水平的象征 而代表机床制造业最高境界的是五轴联动数控机床系统 从某种意义上说 反映了一个国家的工业发展水平状况 长期以来 以美国为首的
  • servlet相关知识整理

    servlet相关知识整理 一 sevlet规范 1 servelet规范中 指定 动态资源文件 开发步骤 2 在servelet规范中 指定http服务器调用动态资源文件规则 3 在servelet规范中 指定http服务器管理动态资源文
  • 微信小程序wxml页面中,背景图片直接引用不显示,其他解决方案

    微信小程序wxml页面中 使用background url 引用图片的相对路径 但是不显示应该咋办 var src images index top bg png let src2 wx getFileSystemManager readF
  • crossdomain.xml在weblogic上的部署

    摘要 Flex API的程序访问ArcGIS Server时 经常遇到安全沙箱的问题 crossdomain xml配置文件可以解决这个问题 在tomcat服务器只需要把这个文件放到webapps根目录下 WebLogic的配置要稍微麻烦一
  • pandas 根据某一列的值修改某一列的值

    在做数据分析时 需要根据某一列的值修改另外一列的值 此时就需要使用pd loc 函数 例子 import pandas as pd x2 pd read csv submit csv x2 假如 我要修改id 800000的isDefaul
  • 光条中心提取方法总结(二)

    传统算法见之前的文章 光条中心提取方法总结 一 视觉菜鸟Leonardo的博客 CSDN博客e 二 深度学习方法 利用深度学习来进行光条中心提取是这几年刚兴起的方法 目前可供参考的论文屈指可数 方法从两个途径切入 1 利用深度学习进行光条图
  • 研一Python基础课程第二周课后习题分享(含代码)

    一 问题描述 共计18道 1 问题1 你买了n个苹果 但是很不幸里面混进了一条虫子 如果虫子每x小时吃完一只苹果 然后开始吃下一个 经过y小时后 你还有几个完整的苹果 分别输入n x y三个整型数值 输出结果 2 问题2 分别输入两个时间
  • javascript 实现Base64加密

    想必大家对base64并不陌生吧 在本文将为大家介绍下Js中的base64加密解密过程 感兴趣的朋友不要错过 html view plain copy