成人性生交大片免费看视频r_亚洲综合极品香蕉久久网_在线视频免费观看一区_亚洲精品亚洲人成人网在线播放_国产精品毛片av_久久久久国产精品www_亚洲国产一区二区三区在线播_日韩一区二区三区四区区区_亚洲精品国产无套在线观_国产免费www

主頁(yè) > 知識(shí)庫(kù) > 前端使用canvas生成盲水印的加密解密的實(shí)現(xiàn)

前端使用canvas生成盲水印的加密解密的實(shí)現(xiàn)

熱門(mén)標(biāo)簽:智能語(yǔ)音電銷機(jī)器人客戶端 中國(guó)地圖標(biāo)注城市的 西安金倫外呼系統(tǒng) 通遼地圖標(biāo)注app 威海語(yǔ)音外呼系統(tǒng)平臺(tái) 地圖標(biāo)注員工作內(nèi)容 高德地圖標(biāo)注廁所 江西ai電銷機(jī)器人如何 地圖標(biāo)注沿海城市房?jī)r(jià)

為了保障信息安全,防止重大信息泄露,并且能夠鎖定泄露用戶,需要對(duì)頁(yè)面展示的圖片加入當(dāng)前用戶信息的盲水印,即最終圖片外觀看起來(lái)和原圖一樣,但是經(jīng)過(guò)解碼以后可以識(shí)別出水印信息,并且在截圖后仍能進(jìn)行較好的識(shí)別。

經(jīng)過(guò)在網(wǎng)上的學(xué)習(xí)摸索,看了幾位大神的博客以后,我也總結(jié)一下自己的代碼,分享一下學(xué)習(xí)經(jīng)驗(yàn)。

我們將使用以下圖片作為原圖進(jìn)行示范:

下面是圖片添加盲水印的代碼:

<script>
        var canvas = document.getElementById("myCanvas")
        var ctx = canvas.getContext("2d")
        var img = new Image();
        var textData,originalData;
        img.src = './codeImg.png'
        //圖片加載完成
        img.onload = function(){
            //設(shè)置畫(huà)布寬高為圖片寬高
            canvas.width = img.width;
            canvas.height = img.height;
            //設(shè)置水印字體
            ctx.font = '30px Microsoft Yahei';
            //由于圖片寬度固定為800,我們需要在每一行添加三個(gè)水印,每隔100像素新增一行水印
            for(var i=50;i<canvas.height;i+=100){
                ctx.fillText('周杰倫', 100, i);
                ctx.fillText('周杰倫', 300, i);
                ctx.fillText('周杰倫', 600, i);
            }
            
            //此時(shí)畫(huà)布上已經(jīng)有了水印的信息,我們獲取水印的各個(gè)像素的信息
            textData = ctx.getImageData(0, 0, ctx.canvas.width, ctx.canvas.height);
            //將圖片繪入畫(huà)布
            ctx.drawImage(img, 0, 0, canvas.width, canvas.height);
            //獲取圖片各個(gè)像素點(diǎn)的信息,將originalData打印出來(lái),會(huì)發(fā)現(xiàn)是一個(gè)非常大的數(shù)組(由于文字和圖片在同一塊畫(huà)布,因此textData的長(zhǎng)度等于originalData長(zhǎng)度)
            //這個(gè)數(shù)組的長(zhǎng)度等于圖片width*height*4,即圖片像素寬乘以高乘以4,0-3位是第一個(gè)點(diǎn)的RGBA值,第4-7位是第二個(gè)點(diǎn)的RGBA值,以此類推
            originalData = ctx.getImageData(0, 0, ctx.canvas.width, ctx.canvas.height);
            //調(diào)用盲水印算法
            mergeData(ctx, textData, 'R', originalData)
        }

        function mergeData(ctx, textData, color, originalData) {
            var oData = originalData.data;
            var newData = textData.data
            var bit, offset;  // offset的作用是找到結(jié)合bit找到對(duì)應(yīng)的A值,即透明度
        
            switch (color) {
                case 'R':
                    bit = 0;
                    offset = 3;
                    break;
                case 'G':
                    bit = 1;
                    offset = 2;
                    break;
                case 'B':
                    bit = 2;
                    offset = 1;
                    break;
            }
        
            for (var i = 0; i < oData.length; i++) {
                //此處是為了篩選我們要修改的RGB中那一項(xiàng),在此處,過(guò)濾出來(lái)的就是每個(gè)坐標(biāo)點(diǎn)的R值
                if (i % 4 == bit) {
                    
                    //我們獲取到R值的位置,那對(duì)應(yīng)這個(gè)點(diǎn)的A值就是i+offset
                    if (newData[i + offset] === 0 && (oData[i] % 2 === 1)) {
                        //此處先判斷該坐標(biāo)點(diǎn)的透明度,如果為0,說(shuō)明這個(gè)點(diǎn)是沒(méi)有水印的,將沒(méi)有水印信息點(diǎn)的R值變?yōu)榕紨?shù),并且不能超過(guò)0-255的范圍
                        if (oData[i] === 255) {
                            oData[i]--;
                        } else {
                            oData[i]++;
                        }
                    } else if (newData[i + offset] !== 0 && (oData[i] % 2 === 0)) {
                        //透明度非0,該點(diǎn)有信息,若該點(diǎn)的R值是偶數(shù),將其改為奇數(shù)
                        oData[i]++;
                    }
                }
            }
            //至此,整個(gè)圖片中所有包含水印信息的點(diǎn)的R值都是奇數(shù),沒(méi)有水印信息的點(diǎn)的R值都是偶數(shù),再將圖片繪入畫(huà)布,即完成整個(gè)水印添加過(guò)程
            ctx.putImageData(originalData, 0, 0);
        }

    </script>

至此,我們?cè)陧?yè)面上繪制出了帶有盲水印的圖片,我們先看看解碼前后對(duì)比效果:

以下是右鍵另存為的圖片及解碼后的圖片,受色彩識(shí)別度的誤差影響,會(huì)有部分圖片內(nèi)容也被識(shí)別成水印內(nèi)容,不過(guò)還是可以比較清晰看到水印文字

 

以下是使用屏幕截圖的圖片及解碼圖片:截圖后的圖片仍然能夠識(shí)別出水印信息

 

接下來(lái)是水印解碼的js代碼:

<script>
        var canvas = document.getElementById("myCanvas")
        var ctx = canvas.getContext("2d")
        var img = new Image()
        img.src = './decode.png'
        // 圖片加載完成
        img.onload = function(){
            canvas.width = img.width;
            canvas.height = img.height;
            ctx.drawImage(img, 0, 0, img.width, img.height);

            // 將帶有盲水印的圖片繪入畫(huà)布,獲取到像素點(diǎn)的RGBA數(shù)組信息
            originalData = ctx.getImageData(0, 0, ctx.canvas.width, ctx.canvas.height);
            
            processData(ctx,originalData);
        }

        function processData(ctx, originalData) {
            var data = originalData.data;
            for (var i = 0; i < data.length; i++) {
                //篩選每個(gè)像素點(diǎn)的R值
                if (i % 4 == 0) {
                    if (data[i] % 2 == 0) {//如果R值為偶數(shù),說(shuō)明這個(gè)點(diǎn)是沒(méi)有水印信息的,將其R值設(shè)為0
                        data[i] = 0;
                    } else {//如果R值為奇數(shù),說(shuō)明這個(gè)點(diǎn)是有水印信息的,將其R值設(shè)為255
                        data[i] = 255;
                    }
                } else if (i % 4 == 3) {//透明度不作處理
                    continue;
                } else {
                    // G、B值設(shè)置為0,不影響
                    data[i] = 0;
                }
            }
            // 至此,帶有水印信息的點(diǎn)都將展示為255,0,0   而沒(méi)有水印信息的點(diǎn)將展示為0,0,0  將結(jié)果繪制到畫(huà)布
            ctx.putImageData(originalData, 0, 0);
        }
    </script>

現(xiàn)在,我們基本已經(jīng)完成了前期預(yù)計(jì)的盲水印效果,但是,前端的安全處理還是會(huì)有隱患,比如打開(kāi)控制臺(tái),即可獲取到原圖的鏈接地址,并可以直接保存。

所以若要更好的保障信息安全,這個(gè)添加盲水印的方法在后端去處理可能更加有效。

本文算法內(nèi)容參考自: https://juejin.cn/post/6900713052270755847

到此這篇關(guān)于前端使用canvas生成盲水印的加密解密的實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)canvas生成盲水印加密解密內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持腳本之家!

標(biāo)簽:眉山 北海 晉中 崇左 青海 阜陽(yáng) 營(yíng)口 河池

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《前端使用canvas生成盲水印的加密解密的實(shí)現(xiàn)》,本文關(guān)鍵詞  前端,使用,canvas,生成,盲,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《前端使用canvas生成盲水印的加密解密的實(shí)現(xiàn)》相關(guān)的同類信息!
  • 本頁(yè)收集關(guān)于前端使用canvas生成盲水印的加密解密的實(shí)現(xiàn)的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    中文字幕9999| 蜜桃精品视频| 九九热视频精品在线观看| 在线免费观看电影网站入口| 精品久久久香蕉免费精品视频| 日韩欧美亚洲国产一区| 色综合亚洲图丝熟| 欧美一级免费大片| 国产黄在线看| 精品国产欧美日韩不卡在线观看| 在线观看高清免费视频| 国内精品伊人久久久久av影院| 久久一区二区免费播放| 久久九九视频| 在线这里只有精品| 拔插拔插华人永久免费| 四虎永久在线观看免费网站网址| 精品99在线观看| 国产精品久久久一区二区三区| 欧美性猛交xxx乱大交3蜜桃| 久久激情电影| 国产精品美女在线观看| 精品视频在线播放色网色视频| 国产福利视频一区二区| 丁香高清在线观看完整电影视频| baoyu135国产精品免费| 欧美中文字幕久久| 久久草视频在线看| 亚洲欧美成人在线| 亚洲国产欧美日韩在线观看第一区| 中日韩精品一区二区三区| 国产视频网站在线观看| 成人黄色综合网站| 亚洲欧美国产制服动漫| 久草综合在线视频| 亚洲综合色区另类av| 日韩精品视频一区二区| 五月天激情综合网| 亚洲欧美欧美一区二区三区| 国产欧美一区二区三区久久| 久久久久中文字幕亚洲精品| 欧美激情视频在线播放| 亚洲永久精品ww.7491进入| 成人免费淫片视频软件| 国产suv精品一区二区四区视频| 日本a级片免费观看| 亚洲性生活网站| 欧美一区二区视频| www.狠狠操.com| 久热国产精品视频| 四虎影视av| 亚洲av毛片成人精品| 99re这里只有精品视频首页| 91骚色在线| 日韩在线中文字幕视频| 三级黄色片免费看| 国产精品区一区二| 亚洲免费av在线| 欧美色精品天天在线观看视频| 久久亚洲国产成人亚| 中文天堂在线观看| 日本中文字幕电影| 黄色成人在线观看网站| 欧美成欧美va| 久久国产生活片100| 日韩精品一区二区三区老鸭窝| 97精品国产综合久久久动漫日韩| 红桃av永久久久| 免费看污片的软件| 日韩不卡在线视频| 6080亚洲精品一区二区| 试看120秒一区二区三区| 亚洲一区二区三区综合| 好吊色在线观看| 91色视频在线观看| 亚洲精品一区二区口爆| 中出中文字幕| 国偷自产视频一区二区久| 国产一二三四五区| 国产精品久久三区| 青青草华人在线视频| 国产一线天粉嫩馒头极品av| 欧美日韩国产综合一区二区| 亚洲国产天堂久久国产91| 国内老熟妇对白xxxxhd| 日韩精品一区二区三区中文| 舔足天天操天天射| 992tv在线观看免费进| 亚洲欧美一二三| 国产不卡一二三| 91成人伦理在线电影| 懂色av蜜臀av粉嫩av喷吹| 制服视频三区第一页精品| 亚洲免费在线观看av| 亚洲高清黄色| 91精品国产综合久久蜜臀| 制服丝袜第一页在线观看| 日韩人妻一区二区三区| 欧美午夜精品电影| 国产精品国产福利国产秒拍| 天堂网视频在线| 青草综合视频| 少妇特黄a一区二区三区| 日日摸天天爽天天爽视频| 精品一区二区三区免费| 小嫩苞一区二区三区| 亚洲欧美另类人妖| 日韩欧美中文字幕不卡| 亚洲国产精品自拍| 久久全球大尺度高清视频| 四虎永久在线精品| 国产cdts系列另类在线观看| 日本人视频jizz页码69| 亚洲成av人影院在线观看| caopor在线| 亚洲资源视频| 亚洲三级在线免费观看| 91超碰中文字幕久久精品| 国产老肥熟xxxx在线观看| 在线天堂www在线国语对白| 好吊色欧美一区二区三区四区| 日韩国产高清污视频在线观看| 三级毛片在线看| av老司机久久| 欧美亚洲专区| 色一情一区二区| 婷婷综合福利| 亚洲欧美日韩精品久久亚洲区| 久久视频这里只有精品| 国产色视频一区| 高清无码一区二区在线观看吞精| 性xxxx欧美老肥妇牲乱| 国产日韩欧美精品在线观看| 在线观看中文字幕| 日韩video| 日韩伦理一区二区| 最新av番号| 精品久久久久久久久久久院品网| 手机av免费在线观看| 日韩一区二区三区精品视频| 国产精品久久综合av爱欲tv| 国产高清视频免费最新在线| 日韩成年人视频| 欧美啪啪一区| 成人在线手机视频| 激情在线观看视频| 在线播放成人av| 精品国产乱码久久久久久天美| 91精品国产乱码久久久久久久久| 国产日韩欧美一区二区东京热| 少妇久久久久久久| 日本中文字幕一区二区有限公司| 69av在线视频| 无码人妻一区二区三区在线视频| 国产精品免费久久久久久| 91玉足脚交嫩脚丫在线播放| 伊人久久大香线蕉综合影院首页| 成人在线黄色| 欧美激情乱人伦| av综合在线观看| 亚洲a一区二区| 国产成人精品视频在线观看| 色婷婷综合缴情免费观看| 在线天堂中文www视软件| 欧美午夜激情小视频| 欧美午夜在线视频| 精品国产一区二区三区无码| 在线日韩视频| 亚洲国产精品一区二区久久恐怖片| 欧美日韩中文不卡| 色哟哟网站入口亚洲精品| 欧美精品xxx| 国产精品裸体瑜伽视频| 亚洲色图欧美自拍| 欧美亚洲免费高清在线观看| 91短视频版在线观看www免费| 亚洲国产精品久久久久婷婷884| 天堂在线免费观看| 天堂精品一区二区三区| 最近中文字幕mv免费高清视频8| 欧美久久一区| 中文字幕制服丝袜在线| www.夜夜| 九色在线观看视频| 四虎国产精品成人免费影视| 性生活一级大片| 国产精品国产亚洲精品看不卡| 亚洲乱码一区二区三区在线观看| 日本无删减在线| 日本激情小视频| 成人免费黄色小视频| 国产精品亚洲欧美日韩一区在线| 欧美视频精品一区| 成人av免费电影| 福利视频网站一区二区三区| av在线电影观看| 国产亚洲视频一区| 亚洲视频中文| 91在线品视觉盛宴免费| 亚洲视频欧洲视频| 99久久综合| 男人天堂一区二区| 极品日韩久久| 亚洲成人一区二区在线观看| 综合视频在线观看| 男女私大尺度视频| 中文字幕av一区二区三区免费看| 亚洲无线一线二线三线区别av| 国产无遮挡又黄又爽又色| 欧美在线免费视频| 亚洲国产精品99久久| 亚洲欧美在线播放| 亚洲午夜未满十八勿入免费观看全集| 精品国产髙清在线看国产毛片| 国产三级在线观看| 99精品国产在热久久下载| 精品一区二区三区的国产在线播放| 亚洲电影成人成人影院| 国产精品视频永久免费播放| 亚洲午夜剧场| 亚洲国产成人私人影院| 中文字幕视频在线免费欧美日韩综合在线看| 欧美成人aaaaⅴ片在线看| 久久精品99久久香蕉国产色戒| 狠狠噜天天噜日日噜| 99精品一区二区三区无码吞精| 亚洲一区二区三区四区五区| 国产a一区二区| 国产欧美日本一区视频| 欧美大片在线观看| 国产精品久久久久无码av色戒| 国产伦理精品| 国产在线导航| 天天综合网天天综合| 中文字幕欧美日韩在线| 国产乱人伦丫前精品视频| 欧美一级片在线观看| 精品国产网站地址| 国产精品护士白丝一区av| 亚洲综合图区| 久久女同互慰一区二区三区| 丁香花高清视频完整版在线观看| 一卡二卡三卡亚洲| 最新av免费在线| 天堂av电影在线观看| 一本到高清视频免费精品| 在线观看三级视频| 色婷婷久久久综合中文字幕| 日本福利在线| 真不卡电影网| 欧美日韩尤物久久| 一级aaaa毛片| 中文精品视频| 久久中文字幕在线| 亚洲国产一区二区久久| www.wu福利视频18| 国产精品.xx视频.xxtv| 国产女人18毛片水真多| 日本综合精品一区| 精品午夜一区二区| 日本道在线视频| 国产精品流白浆在线观看| 午夜精品一区二区在线观看的| 国产日韩欧美a| 91精品啪在线观看麻豆免费| 99久久精品国产网站| 国产精品久久久久久无人区| 国产51人人成人人人人爽色哟哟| 亚洲成人精品在线播放| 欧美视频在线观看一区二区| 日韩免费在线免费观看| 亚洲欧美日韩另类精品一区二区三区| 国产一区二区三区蝌蚪| 免费成人看片| 精品久久sese| 国产亚洲精品久久久久久豆腐| 成人a区在线观看| 精品国产露脸精彩对白| 国产高清在线不卡| 99爱视频在线观看| 99国产精品久久久久老师| 国产一区二区视频播放| 国产偷久久久精品专区| 性18欧美另类| 国产 欧美 日韩 在线| 欧美第一区第二区| 国产又黄又粗又猛又爽的| 日韩无码精品一区二区| 最新av免费在线观看| 久草视频这里只有精品| 欧美一二三四在线| 午夜欧美视频| 亚洲欧洲精品一区| 久久77777| 国产人妻精品一区二区三区不卡| 午夜久久久久久久久久影院| 久久www免费人成看片高清| 奇门遁甲1982国语版免费观看高清| 成人信息集中地| 日本高清成人免费播放| 极品尤物av丝袜美腿在线观看| 极品久久久久久| 四虎影院影音| 永久91嫩草亚洲精品人人| 99精品国产在热久久下载| 91免费视频污| 免费看的黄网站| 开心激情综合网| 欧美狂野激情性xxxx在线观| 中文字幕5566| 成人中文字幕在线| 精品无码国模私拍视频| 蜜臀av一级做a爰片久久| 精品国产欧美成人夜夜嗨| 日韩久久精品视频| 中文字幕成人乱码在线电影| 蜜臀a∨国产成人精品| 一区二区电影| 欧洲vodafonewi精品| 男人艹女人网站| 三上悠亚作品在线观看| 亚洲а∨天堂久久精品9966| 又黄又爽毛片免费观看| 在线免费看黄| shkd中文字幕久久在线观看| 国产精品视频yy9099| h视频在线观看网站| 波多野结衣爱爱|