response.blob()) .then(byteStream => {         const reader2 = new File..."/>

vue引入sm-crypto通过sm4对文件进行加解密,用户输入密码

11,028次阅读
没有评论

共计 1488 个字符,预计需要花费 4 分钟才能阅读完成。

对文件加密并保存:

import {sm4} from 'sm-crypto'

fetch("你的文件地址") .then(response => response.blob()) .then(byteStream => {const reader2 = new FileReader();
        reader2.onload = function(event) {
            const arrayBuffer = event.target.result;
            let keyBytes = new Uint8Array(arrayBuffer);
            let password = stringToHex("用户输入的密码");
            let code = sm4.encrypt(keyBytes,password, {output: 'array'})  
            let byteStream1 = new Blob([code], {type: 'application/octet-stream'});
            let link = document.createElement('a');
            link.href = URL.createObjectURL(byteStream1);
            link.download = "你保存的文件名";
            document.body.appendChild(link);
            link.click();
            document.body.removeChild(link);
        };
        // 以 ArrayBuffer 形式读取文件
        reader2.readAsArrayBuffer(byteStream);
      })
	function stringToHex(str) {
	  let hex = '';
	  for (let i = 0; i 

读取文件并解密:



function readKeyFile() {const keyInput = document.getElementById('keyInput');
	    const file = keyInput.files[0];
	    const reader = new FileReader();
	    reader.onload = function(event) {
	        const arrayBuffer = event.target.result;
	        let plainByte = JSON.parse("["+arrayBuffer+"]");
	        let password = stringToHex("用户输入的密码");
	        try{let pBytes = sm4.decrypt(plainByte,password, {output: 'array'});
	        	let prBytes = arrayToBuffer(pBytes);
	        	privateKeyBytes = new Uint8Array(prBytes);
	        }catch(e){alert('文件或密码错误');
	        	return;
	        }
			let decoder = new TextDecoder();
		    let alltext = decoder.decode(privateKeyBytes);
            console.log(alltext)// 你的文件内容
	    };
	    // 读取文件
	    reader.readAsText(file);
	}
function stringToHex(str) {
    let hex = '';
    for (let i = 0; i 

原文地址: vue 引入 sm-crypto 通过 sm4 对文件进行加解密,用户输入密码

    正文完
     0
    Yojack
    版权声明:本篇文章由 Yojack 于2024-10-14发表,共计1488字。
    转载说明:
    1 本网站名称:优杰开发笔记
    2 本站永久网址:https://yojack.cn
    3 本网站的文章部分内容可能来源于网络,仅供大家学习与参考,如有侵权,请联系站长进行删除处理。
    4 本站一切资源不代表本站立场,并不代表本站赞同其观点和对其真实性负责。
    5 本站所有内容均可转载及分享, 但请注明出处
    6 我们始终尊重原创作者的版权,所有文章在发布时,均尽可能注明出处与作者。
    7 站长邮箱:laylwenl@gmail.com
    评论(没有评论)