国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

JS基于base64編碼加密解密文本和圖片(修訂)

這篇具有很好參考價(jià)值的文章主要介紹了JS基于base64編碼加密解密文本和圖片(修訂)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

JS基于base64編碼加密解密文本和圖片

?

密碼學(xué),體系太龐大了,常見(jiàn)的加密解密算法很多,這里僅介紹采用base64實(shí)現(xiàn)的加密解密的方法。

嚴(yán)格地說(shuō)base64不是加密算法,他只是一種編碼方式,是一種用64個(gè)字符來(lái)表示任意二進(jìn)制數(shù)據(jù)的方法。詳情可參見(jiàn)其它資料。

Base64編碼具有不可讀性,需要解碼后才能閱讀。算是偽加密吧。

加密解密文本

源碼如下:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>JS的BASE64加密/解密示例</title>
<script>
// 創(chuàng)建Base64對(duì)象
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對(duì)象的encode()
}

function deEncode(){
    var str2= document.getElementById("text2").value
    document.getElementById("text2").value=Base64.decode(str2) ; //使用Base64對(duì)象的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,用瀏覽器打開(kāi)效果:

js base64加密,JavaScrip技術(shù),前端開(kāi)發(fā),編程實(shí)踐系列,javascript,前端

?現(xiàn)在,你可以試試了。?

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

加密解密圖片

本文例子用到j(luò)query,若本地使用請(qǐng)先下載,我這以里jquery-3.5.1. js版本為例,這樣用

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

也可以不下載,需要聯(lián)網(wǎng)【使用CDN(全稱(chēng)是Content Delivery Network:內(nèi)容分發(fā)網(wǎng)絡(luò)或內(nèi)容交付網(wǎng)絡(luò))可參見(jiàn)https://blog.csdn.net/cnds123/article/details/126268941】如下使用

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

Canvas(畫(huà)布) API提供了toDataURL()方法,可以把畫(huà)布中的圖形轉(zhuǎn)換為圖片。有了Data URL數(shù)據(jù)后,就可將這些數(shù)據(jù)直接填充到<img>元素里,或者直接從瀏覽器里下載它們。

【關(guān)于toDataURL()方法參看https://developer.mozilla.org/zh-CN/docs/Web/API/HTMLCanvasElement/toDataURL

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

這里介紹的加密解密圖片基本原理:將圖片讀入canvas,并使用canvas的toDataURL方法將圖片base64化,在此過(guò)程中,可以設(shè)定quality值,即圖片質(zhì)量值,值為0.1到1之間,值越小,壓縮度越高。

先看如何對(duì)圖片加密并保存

源碼如下:

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>加密圖片并保存</title>
    </head>
<body>
    <script src="https://code.jquery.com/jquery-3.5.1.js"></script>
    請(qǐng)選定要加密的圖片文件<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(畫(huà)布)
                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>

保存文件名為:對(duì)圖片加密并保存AA.html,用瀏覽器打開(kāi)效果:

js base64加密,JavaScrip技術(shù),前端開(kāi)發(fā),編程實(shí)踐系列,javascript,前端

單擊“保存加密圖片”將保存到瀏覽器默認(rèn)下載位置,你可以到此找到已加密的圖片,用“畫(huà)圖”等是打不開(kāi)的——因?yàn)橐鸭用?,怎么打開(kāi)?接著往下看。

再看對(duì)已加密圖片文件進(jìn)行解密

對(duì)由上面例子加密的圖片文件進(jìn)行解密,并將解密得到的圖片保存到本地,源碼如下:

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>對(duì)已經(jīng)加密圖片解密</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("提示:請(qǐng)先選定要解密的加密圖片文件!?。?);
                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標(biāo)簽中圖片保存到本地
    
    function downloadIamge(selector) {
        // 通過(guò)選擇器獲取img元素
        var img = document.getElementById(selector)
        // 將圖片的src屬性作為URL地址        
        var url = img.src
        //alert(url);
        if(url ==""){
            alert("請(qǐng)先解密已加密的圖片文件!");
            return;
        }
        var a = document.createElement('a')
        var event = new MouseEvent('click')

        a.download = "解密_"+fileName // '下載圖片名稱(chēng)'
        a.href = url

        a.dispatchEvent(event) //根據(jù)A標(biāo)簽的屬性來(lái)搞事情
    }

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

保存文件名為:對(duì)已加密圖片文件進(jìn)行解密并可保存AA.html,用瀏覽器打開(kāi)效果:

js base64加密,JavaScrip技術(shù),前端開(kāi)發(fā),編程實(shí)踐系列,javascript,前端

解密后的圖片可保存,單擊“保存已解密圖片”將保存到瀏覽器默認(rèn)下載位置,你可以到此找到已解密的圖片,可以用“畫(huà)圖”等 打開(kāi)看了。

參考:https://www.jb51.net/article/239975.htm文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-725942.html

到了這里,關(guān)于JS基于base64編碼加密解密文本和圖片(修訂)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • Java的Base64加密解密詳解

    大家好,我是免費(fèi)搭建查券返利機(jī)器人賺傭金就用微賺淘客系統(tǒng)3.0的小編,也是冬天不穿秋褲,天冷也要風(fēng)度的程序猿! 在當(dāng)今數(shù)字化時(shí)代,數(shù)據(jù)的安全性和可傳遞性變得尤為重要。Java編程語(yǔ)言提供了 Base64 編碼和解碼的工具,成為保障數(shù)據(jù)傳輸和存儲(chǔ)安全性的一項(xiàng)重要技術(shù)

    2024年04月15日
    瀏覽(33)
  • 微信小程序之 base-64加密、解密

    后端獲取 token 接口,需要加密認(rèn)證

    2024年02月11日
    瀏覽(27)
  • Base64加密解密,【微信小程序】,最新Android面試合集

    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是網(wǎng)絡(luò)上最常見(jiàn)的用于傳輸8Bit字節(jié)代碼的編碼方式之一, Base64并不是安全

    2024年03月24日
    瀏覽(24)
  • uniapp開(kāi)發(fā)微信小程序使用base64進(jìn)行加密解密

    涉及場(chǎng)景:uniapp開(kāi)發(fā)微信小程序需要使用base64進(jìn)行加解密。 涉及依賴(lài)包:base-64,utf8 涉及到問(wèn)題描述:首先嘗試引入js-base64這個(gè)包,經(jīng)過(guò)嘗試后發(fā)現(xiàn)無(wú)法使用,為什么無(wú)法使用不曉得,沒(méi)研究出來(lái)。再搜索中找到一篇關(guān)于《uniapp使用base64》的文章,文章中使用base64這個(gè)包,經(jīng)

    2024年02月16日
    瀏覽(105)
  • 使用base64加密解密的多種方法:包含pc端和微信小程序

    1、pc端 Window 對(duì)象 Window 對(duì)象表示瀏覽器中打開(kāi)的窗口。 平常在開(kāi)發(fā)pc端瀏覽器的時(shí)候。如果要加密或者解密成為一個(gè) base-64 編碼的字符串。我們都可以使用Window 對(duì)象里的對(duì)象方法: atob() 解碼一個(gè) base-64 編碼的字符串。 btoa() 創(chuàng)建一個(gè) base-64 編碼的字符串 我們可以直接在瀏覽

    2024年02月15日
    瀏覽(22)
  • [虛幻引擎] UE DTBase64 插件說(shuō)明 使用藍(lán)圖對(duì)字符串或文件進(jìn)行Base64加密解密

    [虛幻引擎] UE DTBase64 插件說(shuō)明 使用藍(lán)圖對(duì)字符串或文件進(jìn)行Base64加密解密

    本插件可以在虛幻引擎中使用藍(lán)圖對(duì)字符串,字節(jié)數(shù)組,文件進(jìn)行Base64的加密和解密。 目錄 1. 節(jié)點(diǎn)說(shuō)明 String To Base64 Base64 To String Binary To Base64 Base64 To Binary File To Base64 Base64 To File 2. 案例演示 3. 插件下載 String To Base64 對(duì)字符串進(jìn)行Base64加密,字符串會(huì)自動(dòng)轉(zhuǎn)換成UTF8的格式,這

    2024年02月13日
    瀏覽(100)
  • C#集成數(shù)據(jù)加密算法,包含DES、RSA、Base64、SHA、MD5算法,輕松實(shí)現(xiàn)數(shù)據(jù)加密解密需求

    C#集成數(shù)據(jù)加密算法,包含DES、RSA、Base64、SHA、MD5算法,輕松實(shí)現(xiàn)數(shù)據(jù)加密解密需求

    在需要使用配置文件的工控軟件中,往往需要在配置文件和數(shù)據(jù)庫(kù)中對(duì)一些數(shù)據(jù)加密,即對(duì)一串?dāng)?shù)據(jù)進(jìn)行加密算法后輸出復(fù)雜符號(hào)和字符的形式,讓非相關(guān)人員無(wú)法識(shí)別原有數(shù)據(jù),從而對(duì)數(shù)據(jù)或數(shù)據(jù)庫(kù)進(jìn)行相應(yīng)的保護(hù),這往往也是公司安全部門(mén)的基本要求。 網(wǎng)上寫(xiě)加密算法的

    2024年02月03日
    瀏覽(95)
  • c# 文本加密解密

    在C#中實(shí)現(xiàn)加密功能,您可以使用.NET框架提供的System.Security.Cryptography命名空間下的多種加密算法類(lèi)。這里我將給出一個(gè)使用AES(Advanced Encryption Standard)對(duì)稱(chēng)加密算法的簡(jiǎn)單示例: 這個(gè)例子展示了如何使用AES加密和解密字符串。注意在實(shí)際應(yīng)用中,密鑰應(yīng)通過(guò)安全的方式存儲(chǔ)

    2024年01月16日
    瀏覽(26)
  • 算法加密與解密、字符編碼與字符集

    算法加密與解密、字符編碼與字符集

    加密保證數(shù)據(jù)不會(huì)被竊取或者修改 哈希算法 壓縮映射 :散列又稱(chēng)為哈希,是把任意長(zhǎng)度的輸入通過(guò)散列算法變換成固定長(zhǎng)度的輸出,該輸出就是散列值。 哈希算法(Hash)又稱(chēng)摘要算法(Digest),哈希算法的目的就是為了驗(yàn)證原始數(shù)據(jù)是否被篡改。 主流的散列算法有MD5和

    2024年02月03日
    瀏覽(26)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包