使用base64加密解密的多种方法:包含pc端和微信小程序

这篇具有很好参考价值的文章主要介绍了使用base64加密解密的多种方法:包含pc端和微信小程序。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

在不同的开发环境里。我们需要使用不同的方法来加密和解密

1、pc端

Window 对象
Window 对象表示浏览器中打开的窗口。
平常在开发pc端浏览器的时候。如果要加密或者解密成为一个 base-64 编码的字符串。我们都可以使用Window 对象里的对象方法:

atob() 解码一个 base-64 编码的字符串。
btoa() 创建一个 base-64 编码的字符串

我们可以直接在浏览器里按f12打开控制台,复制粘贴查看效果:

var str = "RUNOOB";
var enc = window.btoa(str);
var dec = window.atob(enc);
enc;//加密后的结果是:"UlVOT09C"
//dec;//当我们再次把加密过的enc解密出来。结果仍然是"RUNOOB"

1、微信小程序里

众所周知,微信小程序的js中不能使用window对象以及document对象。
难道他们真的不存在吗?事实并非如此。
非严格模式下,可以在微信小程序里。获取window对象。但是并不推荐这样做。

正确的做法是:

1、新建base64.js文件

export default function Base64() {
	// 私钥
	let _keyStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
	// 加密
	this.encode = function (input) {
		var output = "";
		var chr1, chr2, chr3, enc1, enc2, enc3, enc4;
		var i = 0;
		input = _utf8_encode(input);
		while (i < input.length) {
		chr1 = input.charCodeAt(i++);
		chr2 = input.charCodeAt(i++);
		chr3 = input.charCodeAt(i++);
		enc1 = chr1 >> 2;
		enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);
		enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);
		enc4 = chr3 & 63;
			if (isNaN(chr2)) {
				enc3 = enc4 = 64;
			} else if (isNaN(chr3)) {
				enc4 = 64;
			}
			output = output + _keyStr.charAt(enc1) + _keyStr.charAt(enc2) +
			 _keyStr.charAt(enc3) + _keyStr.charAt(enc4);
			}
			return output;
        }
        // 解密
        this.decode =  (input)=> {
			var output = "";
			var chr1, chr2, chr3;
			var enc1, enc2, enc3, enc4;
			var i = 0;
			if (input==undefined||input==null){
			}else {
				input = input.replace(/[^A-Za-z0-9\+\/\=]/g, "");
				while (i < input.length) {
 					enc1 = _keyStr.indexOf(input.charAt(i++));
					enc2 = _keyStr.indexOf(input.charAt(i++));
					enc3 = _keyStr.indexOf(input.charAt(i++));
					enc4 = _keyStr.indexOf(input.charAt(i++));
					chr1 = (enc1 << 2) | (enc2 >> 4);
					chr2 = ((enc2 & 15) << 4) | (enc3 >> 2);
					chr3 = ((enc3 & 3) << 6) | enc4;
					output = output + String.fromCharCode(chr1);
					if (enc3 != 64) {
						output = output + String.fromCharCode(chr2);
					}
					if (enc4 != 64) {
						output = output + String.fromCharCode(chr3);
					}
				}
				output = _utf8_decode(output);
				return output;
            }
 
        }
        // private method for UTF-8 encoding
        let _utf8_encode =  (string)=> {
			string = string.replace(/\r\n/g,"\n");
            var utftext = "";
            for (var n = 0; n < string.length; n++) {
            	var c = string.charCodeAt(n);
                if (c < 128) {
                	utftext += String.fromCharCode(c);
                } else if((c > 127) && (c < 2048)) {
                    utftext += String.fromCharCode((c >> 6) | 192);
                    utftext += String.fromCharCode((c & 63) | 128);
                } else {
                    utftext += String.fromCharCode((c >> 12) | 224);
                    utftext += String.fromCharCode(((c >> 6) & 63) | 128);
                    utftext += String.fromCharCode((c & 63) | 128);
                }
       	 	}
        	return utftext;
        }
        // private method for UTF-8 decoding
        let _utf8_decode = (utftext)=> {
       		var string = "";
            var i = 0;
            var c = c1 = c2 = 0;
            var c1 = 0;
            var c2 = 0;
            var c3 = 0;
            while ( i < utftext.length ) {
            	c = utftext.charCodeAt(i);
               		if (c < 128) {
                    string += String.fromCharCode(c);
                   		i++;
                    } else if((c > 191) && (c < 224)) {
                        c2 = utftext.charCodeAt(i+1);
                       	string += String.fromCharCode(((c & 31) << 6) | (c2 & 63));
                        i += 2;
                    } else {
                       	c2 = utftext.charCodeAt(i+1);
                        c3 = utftext.charCodeAt(i+2);
                        string += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63));
                        i += 3;
                   }
                }
            return string;
        }
}

2、在需要使用的页面引入:

	import Base64 from "../../utils/base64.js";

3、使用方法:文章来源地址https://www.toymoban.com/news/detail-554943.html

	var str = 'hello world'
	let base64 = new Base64()
	//加密base64.encode	
	let jiami=base64.encode(str.toString())
	//解密base64.decode
	let jiemi=base64.decode(str.toString())

到了这里,关于使用base64加密解密的多种方法:包含pc端和微信小程序的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 利用Base64加密算法将数据加密解密

    Base64准确来说并不像是一种加密算法,而更像是一种编码标准。 我们知道现在最为流行的编码标准就是ASCLL,它用八个二进制位(一个char的大小)表示了127个字符,任何二进制序列都可以用这127个字符表示出来。 而Base64则是用6个二进制位表示了64个字符,也就是说,任何的

    2024年04月09日
    浏览(94)
  • base4解密(Base64加密算法)

    base64解密解码转换说明: 1、Base64编码要求把3个8位字节(3*8=24)转化为4个6位的字节(4*6=24),之后在6位的前面补两个0,形成8位一个字节的形式。如果剩下的字符不足3个字节,则用0填充,输出字符使用‘=’,因此编码后输出的文本末尾可能会出现1或2个‘=’。 2、为了保

    2024年02月16日
    浏览(113)
  • Java的Base64加密解密详解

    大家好,我是免费搭建查券返利机器人赚佣金就用微赚淘客系统3.0的小编,也是冬天不穿秋裤,天冷也要风度的程序猿! 在当今数字化时代,数据的安全性和可传递性变得尤为重要。Java编程语言提供了 Base64 编码和解码的工具,成为保障数据传输和存储安全性的一项重要技术

    2024年04月15日
    浏览(60)
  • 微信小程序之 base-64加密、解密

    后端获取 token 接口,需要加密认证

    2024年02月11日
    浏览(62)
  • java和js实现前端加密后端解密,后端加密前端解密(Base64)

    目录 1.前端加密后端解密 2.后端加密前端解密 在前端和后端数据传输时,常常涉及到隐私数据的传输(例如用户名和密码),这时,我们就需要对隐私数据进行加密解密 1.前端加密后端解密         1.1 前端jquery实现         1.2后端 2.后端加密前端解密         2.1后端加密

    2024年02月16日
    浏览(59)
  • JS基于base64编码加密解密文本和图片(修订)

    ​ 密码学,体系太庞大了,常见的加密解密算法很多,这里仅介绍采用base64实现的加密解密的方法。 严格地说base64不是加密算法,他只是一种编码方式,是一种用64个字符来表示任意二进制数据的方法。详情可参见其它资料。 Base64编码具有不可读性,需要解码后才能阅读。

    2024年02月07日
    浏览(52)
  • Base64加密解密,【微信小程序】,最新Android面试合集

    import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.TextView; import android.widget.Toast; import tsou.com.encryption.R; import tsou.com.encryption.base64.Base64Utils; /** 一、什么Base64算法? Base64是网络上最常见的用于传输8Bit字节代码的编码方式之一, Base64并不是安全

    2024年03月24日
    浏览(49)
  • Python对AES进行加密和解密的多种方法

    前言 本文是该专栏的第24篇,后面会持续分享python的各种干货知识,值得关注。 做过爬虫项目的同学,对AES加解密都有遇到过。 在密码学中,加密算法也分为双向加密和单向加密。单向加密包括MD5、SHA等摘要算法,它们是不可逆的。而双向加密包括 对称加密 和 非对称加密

    2023年04月14日
    浏览(39)
  • 使用MySQL的加密和解密方法详解

    在数据库应用程序中,数据的安全性是至关重要的。为了保护敏感数据免受未经授权的访问,我们可以使用加密和解密技术。MySQL提供了几种方法来实现数据加密和解密,本文将重点介绍这些方法并提供相应的源代码示例。 一、使用AES_ENCRYPT和AES_DECRYPT函数进行加密和解密 M

    2024年02月02日
    浏览(60)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包