vue3 點擊圖標從相冊選擇二維碼圖片,并使用jsqr解析二維碼(含crypto-js加密解密過程)

在這里插入圖片描述

vue3 點擊圖標從相冊選擇二維碼圖片,并使用jsqr解析二維碼(含crypto-js加密解密過程)

1.安裝 jsqr 和 crypto-js

npm install -d jsqr
npm install crypto-js

2.在util目錄下新建encryptionHelper.js文件,寫加密解密方法。

// encryptionHelper.js 內容,可直接復制。
const CryptoJS = require("crypto-js");// 密鑰和初始化向量應該是隨機生成的,這里為了示例簡單使用固定的字符串
const ss = CryptoJS.enc.Utf8.parse("sdgdfjytyjkueesh"); // 密鑰必須為:8/16/32位
const sss = CryptoJS.enc.Utf8.parse("fhgtdytestgrjrtd"); // 初始化向量
//加密
export function encryptUtil(message) {let encrypted = CryptoJS.AES.encrypt(JSON.stringify(message), ss, {iv: sss,mode: CryptoJS.mode.CBC,padding: CryptoJS.pad.Pkcs7,});let data = encrypted.toString();return data;
}
//解密
export function decryptUtil(encrypt) {var decrypt = CryptoJS.AES.decrypt(encrypt, ss, {mode: CryptoJS.mode.CBC,padding: CryptoJS.pad.Pkcs7,iv: sss,}).toString(CryptoJS.enc.Utf8); //【注】:加密的時候必須轉成字符串 使用toString。 解密的時候 必須使用utf8的格式return decrypt; // 將解密后的數據轉換為 UTF-8 字符串
}

3.在頁面引入 jsqr 和 encryptionHelper.js 文件

import { encryptUtil,decryptUtil } from "../util/encryptionHelper.js";//加密解密工具
import jsQR from "jsqr";

4.項目中使用

<template>
<!-- 相冊選擇區域 --><div><inputtype="file"accept="image/*"@change="onFileSelected"ref="fileInput"style="display: none"/><imgsrc="@/assets/scan.png"style="position: absolute;width: 50px;height: 50px;right: 10px;bottom: -50px;z-index: 10;"alt=""@click="selectFromFile"/></div>
</template>
......
import { encryptUtil,decryptUtil } from "../util/encryptionHelper.js";//加密解密工具
import jsQR from "jsqr";
// !!!!!注:encryptUtil為加密方法,此處省略
// let encryData = encryptUtil(param);//param為加密前的數據,encryData 為加密過后的數據// 識別二維碼功能(含解碼方法的調用)-----------------------------------------------------------
const fileInput = ref(null);
// 從相冊選擇圖片并解析二維碼
const onFileSelected = async (event) => {const file = event.target.files[0];if (!file) return;const reader = new FileReader();reader.onload = (e) => {const img = new Image();img.src = e.target.result;img.onload = () => {const canvas = document.createElement("canvas");const context = canvas.getContext("2d");canvas.width = img.width;canvas.height = img.height;context.drawImage(img, 0, 0);const imageData = context.getImageData(0, 0, canvas.width, canvas.height);const decodedResult = jsQR(imageData.data, imageData.width, imageData.height, {inversionAttempts: "dontInvert",});if (decodedResult) {var data = decryptUtil(decodedResult.data);//解密console.log(111111111111111,data);// var dataa = JSON.parse(data);//按需使用// data 是解析出來的數據,是否需要轉化格式,自行處理} else {alert("未檢測到二維碼");}};};reader.readAsDataURL(file);
};
// 觸發文件選擇對話框
const selectFromFile = () => {fileInput.value.click();
};

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/895066.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/895066.shtml
英文地址,請注明出處:http://en.pswp.cn/news/895066.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

支持多種網絡數據庫格式的自動化轉換工具——VisualXML

一、VisualXML軟件介紹 對于DBC、ARXML……文件的編輯、修改等繁瑣操作&#xff0c;WINDHILL風丘科技開發的總線設計工具——VisualXML&#xff0c;可輕松解決這一問題&#xff0c;提升工作效率。 VisualXML是一個強大且基于Excel表格生成多種網絡數據庫文件的轉換工具&#…

【JVM詳解四】執行引擎

一、概述 Java程序運行時&#xff0c;JVM會加載.class字節碼文件&#xff0c;但是字節碼并不能直接運行在操作系統之上&#xff0c;而JVM中的執行引擎就是負責將字節碼轉化為對應平臺的機器碼讓CPU運行的組件。 執行引擎是JVM核心的組成部分之一。可以把JVM架構分成三部分&am…

C++ 順序表

順序表的操作有以下&#xff1a; 1 順序表的元素插入 給定一個索引和元素&#xff0c;這個位置往后的元素位置都要往后移動一次&#xff0c;元素插入的步驟有以下幾步 &#xff08;1&#xff09;判斷插入的位置是否合法&#xff0c;如果不合法則拋出異常 &#xff08;2&…

mysql安裝starting the server報錯

win10家庭版無法啟動服務的&#xff0c;先不要退出&#xff0c;返回上一欄&#xff0c;然后通過電腦搜索欄輸入服務兩個字&#xff0c;在里面找到mysql80&#xff0c;右鍵屬性-登錄&#xff0c;登錄身份切換為本地系統就行了

萬有的函數關係速成2. 連續和導數

1.討論間斷點類型 定義: 若函數在某點不滿足連續的條件,則該點為間斷點。 第一類間斷點是左右極限都存在的間斷點,其中左右極限相等的是可去間斷點,不相等的是跳躍間斷點; 第二類間斷點是左右極限至少有一個不存在的間斷點,包括無窮間斷點(極限為無窮)和振蕩間斷點…

【專題】2025年我國機器人產業發展形勢展望:人形機器人量產及商業化關鍵挑戰報告匯總PDF洞察(附原數據表)

原文鏈接&#xff1a;https://tecdat.cn/?p39668 機器人已廣泛融入我們生活的方方面面。在工業領域&#xff0c;它們宛如不知疲倦的工匠&#xff0c;精準地完成打磨、焊接等精細工作&#xff0c;極大提升了生產效率和產品質量&#xff1b;在日常生活里&#xff0c;它們是貼心…

用docker在本地用open-webui部署網頁版deepseek

前置條件 用Ollama在本地CMD窗口運行deepseek大模型-CSDN博客文章瀏覽閱讀109次&#xff0c;點贊5次&#xff0c;收藏2次。首次運行需要下載deepseek的大模型包&#xff08;大約5GB&#xff0c;根據本地網速的不同在半個小時到幾個小時之間下載完成&#xff09; &#xff0c;并…

android的DataBinding簡介

Android DataBinding 簡介 DataBinding 是 Android Jetpack 中的數據綁定庫&#xff0c;用于將 UI 組件直接與數據模型綁定&#xff0c;減少模板代碼并實現雙向數據同步。它通過聲明式布局簡化 UI 更新邏輯&#xff0c;常用于 MVVM&#xff08;Model-View-ViewModel&#xff0…

企業如何利用DeepSeek提升網絡安全管理水平

企業可以通過深度整合DeepSeek的AI能力&#xff0c;構建智能化、動態化的網絡安全防御體系&#xff0c;以應對APT&#xff08;高級持續性威脅&#xff09;等復雜攻擊。以下是具體策略與實踐路徑&#xff1a; 1. AI驅動的威脅檢測與分析 多模態威脅狩獵 DeepSeek的深度學習技術能…

DeepSeek-R1 云環境搭建部署流程

DeepSeek橫空出世&#xff0c;在國際AI圈備受關注&#xff0c;作為個人開發者&#xff0c;AI的應用可以有效地提高個人開發效率。除此之外&#xff0c;DeepSeek的思考過程、思考能力是開放的&#xff0c;這對我們對結果調優有很好的幫助效果。 DeepSeek是一個基于人工智能技術…

x小兔鮮vue.js

LayoutFooter.vue <template><footer class"app_footer"><!-- 聯系我們 --><div class"contact"><div class"container"><dl><dt>客戶服務</dt><dd><i class"iconfont icon-kef…

磁盤分區損壞:深度解析與數據恢復策略

一、磁盤分區損壞現象概述 磁盤分區損壞是計算機數據存儲領域的一個常見問題&#xff0c;它通常表現為硬盤上的某個分區無法正常訪問&#xff0c;數據讀寫失敗&#xff0c;甚至整個分區消失。這種損壞可能源于多種因素&#xff0c;不僅影響用戶的正常使用&#xff0c;更可能導…

fetch請求總結,fastadmin中后臺接口強制返回json數據

fetch請求 提交圖片,只支持formData方式,這樣會自動變為multiform方式,而且一般的post大多都可以用這樣的方式來完成請求 const formData new FormData(); formData.append(file, fileInput.files[0]); formData.append(pid, id); formData.append(dc, 1);fetch(/api/common…

Python----Python高級(網絡編程:網絡基礎:發展歷程,IP地址,MAC地址,域名,端口,子網掩碼,網關,URL,DHCP,交換機)

一、網絡 早期的計算機程序都是在本機上運行的&#xff0c;數據存儲和處理都在同一臺機器上完成。隨著技術的發展&#xff0c;人 們開始有了讓計算機之間相互通信的需求。例如安裝在個人計算機上的計算器或記事本應用&#xff0c;其運行環 境僅限于個人計算機內部。這種設置雖然…

k8sollama部署deepseek-R1模型,內網無坑

這是目錄 linux下載ollama模型文件下載到本地,打包遷移到k8s等無網絡環境使用下載打包ollama鏡像非k8s環境使用k8s部署訪問方式非ollama運行deepseek模型linux下載ollama 下載后可存放其他服務器 curl -L https://ollama.com/download/ollama-linux-amd64.tgz -o ollama-linu…

機器學習基本概念(附代碼)

這里的“機器”指的是計算機軟硬件組織&#xff0c;而非傳統的機械裝置&#xff1b;而“學習”&#xff0c;則是指軟件通過訓練過程&#xff0c;其性能得以提升的過程。 一、算法與模型的關系 在機器學習領域&#xff0c;算法和模型是兩個核心概念。算法是一種偏抽象的概念&a…

前端開發知識梳理 - HTMLCSS

1. 盒模型 由內容區&#xff08;content&#xff09;、內邊距&#xff08;padding&#xff09;、邊框&#xff08;border&#xff09;和外邊距&#xff08;margin&#xff09;組成。 &#xff08;1&#xff09;標準盒模型&#xff08;box-sizing默認值, content-box&#xff…

.NET周刊【1月第4期 2025-01-26】

國內文章 低成本高可用方案&#xff01;Linux系統下SQL Server數據庫鏡像配置全流程詳解 https://www.cnblogs.com/lyhabc/p/18660810/linux-sql-server-database-mirroring-configuration-guide 本文詳細介紹了如何在Linux系統下配置SQL Server數據庫鏡像&#xff0c;以實現…

Nutz Dao與Spring集成

一、集成方式 1、采用Spring的IOC&#xff0c;但是事務還是采用Nutz自己管理控制&#xff1b; 2、采用Spring的聲明式事務管理控制&#xff1b; 二、IOC 直接依據數據源注入即可 Beanpublic NutDao nutz(DataSource dataSource) {return new NutDao (dataSource);;} 此時N…

利用 Python 爬蟲獲取按關鍵字搜索淘寶商品的完整指南

在電商數據分析和市場研究中&#xff0c;獲取商品的詳細信息是至關重要的一步。淘寶作為中國最大的電商平臺之一&#xff0c;提供了豐富的商品數據。通過 Python 爬蟲技術&#xff0c;我們可以高效地獲取按關鍵字搜索的淘寶商品信息。本文將詳細介紹如何利用 Python 爬蟲技術獲…