JS基于base64编码加密解密文本和图片(修订)

这篇具有很好参考价值的文章主要介绍了JS基于base64编码加密解密文本和图片(修订)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

JS基于base64编码加密解密文本和图片

密码学,体系太庞大了,常见的加密解密算法很多,这里仅介绍采用base64实现的加密解密的方法。

严格地说base64不是加密算法,他只是一种编码方式,是一种用64个字符来表示任意二进制数据的方法。详情可参见其它资料。

Base64编码具有不可读性,需要解码后才能阅读。算是伪加密吧。

加密解密文本

源码如下:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>JS的BASE64加密/解密示例</title>
<script>
// 创建Base64对象
var Base64 = {
    _keyStr: "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",
    encode: function(e) {
        var t = "";
        var n, r, i, s, o, u, a;
        var f = 0;
        e = Base64._utf8_encode(e);
        while (f < e.length) {
            n = e.charCodeAt(f++);
            r = e.charCodeAt(f++);
            i = e.charCodeAt(f++);
            s = n >> 2;
            o = (n & 3) << 4 | r >> 4;
            u = (r & 15) << 2 | i >> 6;
            a = i & 63;
            if (isNaN(r)) {
                u = a = 64
            } else if (isNaN(i)) {
                a = 64
            }
            t = t + this._keyStr.charAt(s) + this._keyStr.charAt(o) + this._keyStr.charAt(u) + this._keyStr.charAt(a)
        }
        return t
    },
    decode: function(e) {
        var t = "";
        var n, r, i;
        var s, o, u, a;
        var f = 0;
        e = e.replace(/[^A-Za-z0-9+/=]/g, "");
        while (f < e.length) {
            s = this._keyStr.indexOf(e.charAt(f++));
            o = this._keyStr.indexOf(e.charAt(f++));
            u = this._keyStr.indexOf(e.charAt(f++));
            a = this._keyStr.indexOf(e.charAt(f++));
            n = s << 2 | o >> 4;
            r = (o & 15) << 4 | u >> 2;
            i = (u & 3) << 6 | a;
            t = t + String.fromCharCode(n);
            if (u != 64) {
                t = t + String.fromCharCode(r)
            }
            if (a != 64) {
                t = t + String.fromCharCode(i)
            }
        }
        t = Base64._utf8_decode(t);
        return t
    },
    _utf8_encode: function(e) {
        e = e.replace(/rn/g, "n");
        var t = "";
        for (var n = 0; n < e.length; n++) {
            var r = e.charCodeAt(n);
            if (r < 128) {
                t += String.fromCharCode(r)
            } else if (r > 127 && r < 2048) {
                t += String.fromCharCode(r >> 6 | 192);
                t += String.fromCharCode(r & 63 | 128)
            } else {
                t += String.fromCharCode(r >> 12 | 224);
                t += String.fromCharCode(r >> 6 & 63 | 128);
                t += String.fromCharCode(r & 63 | 128)
            }
        }
        return t
    },
    _utf8_decode: function(e) {
        var t = "";
        var n = 0;
        var r = c1 = c2 = 0;
        while (n < e.length) {
            r = e.charCodeAt(n);
            if (r < 128) {
                t += String.fromCharCode(r);
                n++
            } else if (r > 191 && r < 224) {
                c2 = e.charCodeAt(n + 1);
                t += String.fromCharCode((r & 31) << 6 | c2 & 63);
                n += 2
            } else {
                c2 = e.charCodeAt(n + 1);
                c3 = e.charCodeAt(n + 2);
                t += String.fromCharCode((r & 15) << 12 | (c2 & 63) << 6 | c3 & 63);
                n += 3
            }
        }
        return t
    }
}

function Encode(){
    var str1= document.getElementById("text1").value
    document.getElementById("text1").value=Base64.encode(str1); // 使用Base64对象的encode()
}

function deEncode(){
    var str2= document.getElementById("text2").value
    document.getElementById("text2").value=Base64.decode(str2) ; //使用Base64对象的decode() 
}

</script>
</head>
<body>
<textarea id="text1" cols="60" rows="10"></textarea>
<br>
<input type="button" value="BASE64加密"  onclick="Encode()">
<br><br>
<textarea id="text2" cols="60" rows="10"></textarea>
<br>
<input type="button" value="BASE64解密" onclick="deEncode()">

</body>
</html>

保存文件名为:BASE64编码加密解密文本.html,用浏览器打开效果:

js base64加密,JavaScrip技术,前端开发,编程实践系列,javascript,前端

 现在,你可以试试了。 

参考https://www.yisu.com/zixun/180535.html

加密解密图片

本文例子用到jquery,若本地使用请先下载,我这以里jquery-3.5.1. js版本为例,这样用

<script src="jquery-3.5.1. js"></script>

也可以不下载,需要联网【使用CDN(全称是Content Delivery Network:内容分发网络或内容交付网络)可参见https://blog.csdn.net/cnds123/article/details/126268941】如下使用

<script src="https://code.jquery.com/jquery-3.5.1.js"></script>

Canvas(画布) API提供了toDataURL()方法,可以把画布中的图形转换为图片。有了Data URL数据后,就可将这些数据直接填充到<img>元素里,或者直接从浏览器里下载它们。

【关于toDataURL()方法参看https://developer.mozilla.org/zh-CN/docs/Web/API/HTMLCanvasElement/toDataURL

https://www.canvasapi.cn/HTMLCanvasElement/toDataURL】

这里介绍的加密解密图片基本原理:将图片读入canvas,并使用canvas的toDataURL方法将图片base64化,在此过程中,可以设定quality值,即图片质量值,值为0.1到1之间,值越小,压缩度越高。

先看如何对图片加密并保存

源码如下:

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>加密图片并保存</title>
    </head>
<body>
    <script src="https://code.jquery.com/jquery-3.5.1.js"></script>
    请选定要加密的图片文件<input id="file" type="file" onchange="showPreview(this, 'pic')" capture="microphone" accept="image/*">      
    <button type="button" onclick="download()">保存加密图片</button>
    <br>        
    <img id="pic" >

    <script>
        //显示选定的图片
        function showPreview(source, imgId) {
          var file = source.files[0];
          if(window.FileReader) {
              var fr = new FileReader();
              fr.onloadend = function(e) {               
                  document.getElementById(imgId).src = e.target.result;
                  ReadFlag = e.target.result;
              }
              fr.readAsDataURL(file);
          }
        }

        var stringData;  //要保存的变量
         
        $("#file").change(function(){
            var m_this = this;
            cutImageBase64(m_this,null,900,0.7);
        })
        function cutImageBase64(m_this,id,wid,quality) {
            var file = m_this.files[0];
            var URL = window.URL || window.webkitURL;
            var blob = URL.createObjectURL(file);
            var base64;
            var img = new Image();
            img.src = blob;
            img.onload = function() {
                var that = this;
                //生成比例
                var w = that.width,
                    h = that.height;
                    //scale = w / h;
                    //w = wid || w;
                    //h = w / scale; 
                
                //生成canvas(画布)
                var canvas = document.createElement('canvas');
                var ctx = canvas.getContext('2d');
                $(canvas).attr({
                    width: w,
                    height: h
                });
                ctx.drawImage(that, 0, 0, w, h);
                // 生成base64
                base64 = canvas.toDataURL('image/jpeg', quality || 0.9);
                //stringData = base64;            
                //加密
                var base64_2 = base64.substring(0,26) + "a" +base64.substring(26,base64.lenght);
                console.log(base64_2);
                stringData = base64_2;
                
            };
        }

       function download(){ 
           //alert(stringData);
           if(stringData ==undefined){
                alert("先选定需要加密的图片!");
                return;
           }
           var text =  stringData;
           var blob = new Blob([text], { type: "text/plain"}); 
           var anchor = document.createElement("a"); 
           //anchor.download = "my-filename.txt"; 
           anchor.download = "加密_" + document.getElementById("file").files[0].name;
           anchor.href = window.URL.createObjectURL(blob); 
           anchor.target ="_blank"; 
           anchor.style.display = "none"; // 
           document.body.appendChild(anchor); 
           anchor.click(); 
           document.body.removeChild(anchor); //
       }

    </script>
   </body>
</html>

保存文件名为:对图片加密并保存AA.html,用浏览器打开效果:

js base64加密,JavaScrip技术,前端开发,编程实践系列,javascript,前端

单击“保存加密图片”将保存到浏览器默认下载位置,你可以到此找到已加密的图片,用“画图”等是打不开的——因为已加密,怎么打开?接着往下看。

再看对已加密图片文件进行解密

对由上面例子加密的图片文件进行解密,并将解密得到的图片保存到本地,源码如下:

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>对已经加密图片解密</title>
    </head>
    
    <body>
    选定已加密的图片文件<input type="file" id="file"/>
    <br>
    <textarea id="output" cols="80" rows="6" readonly="readonly"> </textarea>
    <br> 
    <button type="button" onclick="jm()">解密图片</button> 
 
    <button onclick="downloadIamge('pic')">保存已解密图片</button>
    <br>
    <img id="pic">
    <script>
        var fileName;
        document.getElementById('file').onchange =function(){
            var file = this.files[0];
            fileName=file.name
            //alert(file.name)
            var reader = new FileReader();            
            reader.onload = function(progressEvent){    
               var fileContent = this.result;    
               //alert(fileContent );   
               document.getElementById('output').value = fileContent;           
            };
            reader.readAsText(file);
        };

        function jm(){
            var base64_2 = document.getElementById("output").value;  
            if(base64_2 ==" "){
                alert("提示:请先选定要解密的加密图片文件!!!");
                return;
            }
            //解密
            var base64_3 = base64_2.substring(0,26) + base64_2.substring(27,base64_2.length);
            document.getElementById("pic").src=base64_3;
            //console.log(base64_3)
          
        }

    //将img标签中图片保存到本地
    
    function downloadIamge(selector) {
        // 通过选择器获取img元素
        var img = document.getElementById(selector)
        // 将图片的src属性作为URL地址        
        var url = img.src
        //alert(url);
        if(url ==""){
            alert("请先解密已加密的图片文件!");
            return;
        }
        var a = document.createElement('a')
        var event = new MouseEvent('click')

        a.download = "解密_"+fileName // '下载图片名称'
        a.href = url

        a.dispatchEvent(event) //根据A标签的属性来搞事情
    }

    </script>
  </body>
</html>

保存文件名为:对已加密图片文件进行解密并可保存AA.html,用浏览器打开效果:

js base64加密,JavaScrip技术,前端开发,编程实践系列,javascript,前端

解密后的图片可保存,单击“保存已解密图片”将保存到浏览器默认下载位置,你可以到此找到已解密的图片,可以用“画图”等 打开看了。

参考:https://www.jb51.net/article/239975.htm文章来源地址https://www.toymoban.com/news/detail-725942.html

到了这里,关于JS基于base64编码加密解密文本和图片(修订)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • Java的Base64加密解密详解

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

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

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

    2024年02月11日
    浏览(62)
  • 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)
  • uniapp开发微信小程序使用base64进行加密解密

    涉及场景:uniapp开发微信小程序需要使用base64进行加解密。 涉及依赖包:base-64,utf8 涉及到问题描述:首先尝试引入js-base64这个包,经过尝试后发现无法使用,为什么无法使用不晓得,没研究出来。再搜索中找到一篇关于《uniapp使用base64》的文章,文章中使用base64这个包,经

    2024年02月16日
    浏览(59)
  • 使用base64加密解密的多种方法:包含pc端和微信小程序

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

    2024年02月15日
    浏览(50)
  • [虚幻引擎] UE DTBase64 插件说明 使用蓝图对字符串或文件进行Base64加密解密

    本插件可以在虚幻引擎中使用蓝图对字符串,字节数组,文件进行Base64的加密和解密。 目录 1. 节点说明 String To Base64 Base64 To String Binary To Base64 Base64 To Binary File To Base64 Base64 To File 2. 案例演示 3. 插件下载 String To Base64 对字符串进行Base64加密,字符串会自动转换成UTF8的格式,这

    2024年02月13日
    浏览(82)
  • C#集成数据加密算法,包含DES、RSA、Base64、SHA、MD5算法,轻松实现数据加密解密需求

    在需要使用配置文件的工控软件中,往往需要在配置文件和数据库中对一些数据加密,即对一串数据进行加密算法后输出复杂符号和字符的形式,让非相关人员无法识别原有数据,从而对数据或数据库进行相应的保护,这往往也是公司安全部门的基本要求。 网上写加密算法的

    2024年02月03日
    浏览(84)
  • c# 文本加密解密

    在C#中实现加密功能,您可以使用.NET框架提供的System.Security.Cryptography命名空间下的多种加密算法类。这里我将给出一个使用AES(Advanced Encryption Standard)对称加密算法的简单示例: 这个例子展示了如何使用AES加密和解密字符串。注意在实际应用中,密钥应通过安全的方式存储

    2024年01月16日
    浏览(45)
  • 算法加密与解密、字符编码与字符集

    加密保证数据不会被窃取或者修改 哈希算法 压缩映射 :散列又称为哈希,是把任意长度的输入通过散列算法变换成固定长度的输出,该输出就是散列值。 哈希算法(Hash)又称摘要算法(Digest),哈希算法的目的就是为了验证原始数据是否被篡改。 主流的散列算法有MD5和

    2024年02月03日
    浏览(54)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包