JS基于编码方式实现加密解密文本

JS基于编码方式实现加密解密文本

严格来讲这是一种简单的编码方式:加密,将明文【注】转成编码。解密则是编码转码为明文本。

【注:明文是指没有加密的文字(或者字符串),一般人都能看懂。】

下面源码用到 这个fromCharCode() 方法,先介绍之。在 JavaScript 中, fromCharCode() 是一种字符串方法,用于从Unicode 值序列创建字符串。

fromCharCode() 方法的语法是:

String.fromCharCode(value1, value2, ... value_n);

参数

value1, value2, ... value_n  在Unicode的值转换为字符,然后串接为一个字符串。

返回值

fromCharCode() 方法接受一系列 Unicode 值,它们被转换为字符并连接在一起形成一个字符串。这个结果字符串然后由 fromCharCode() 方法返回。

源码如下:

<html>
<head>
<meta charset="utf-8" />
<title>JS加密解密</title>
</head>
<body>
  <h1> 加密解密 </h1>
  <!-- <input type="text" id="secret" /> -->
  <textarea id="secret" cols="60" rows="10"></textarea>
  <br>
  <input type="button" value="加密" onclick="encode()">
  <input type="button" value="解密" onclick="decode();">
<script>
//来源 https://www.jb51.net/article/141307.htm

// 加密
function encode() {
    // var s = secret.value;
    // s 是一个字符串, 类型: String
    // 根据 s 来创建一个字符串对象
    // str 的类型是: Object
    // var str = new String(s);
    // length 是获取字符串对象的长度,也就是说有多少个字符
    // str.length
    var str = secret.value;
    var r = "";
    // string 类型的可以当做字符串对象来用
    for (var i = 0; i < str.length; i++) {
        // 取出下标为 i 字符的编码
        var code = str.charCodeAt(i);
        // 将字符对应的编码,拼接到一个空字符串上
        r += code;
        // 每个符号后,添加 , 分割
        r += ",";
    }
    // secret.value 
    // 设置输入框的内容为 r
    secret.value = r;
}
// 使用到知识点(1)---如何将一个 数字 转换成对应的 字符
// String.fromCharCode 
// 函数功能: 将 数字 转换成对应的 字符
// String 其实是系统的一个对象
// document.write(  String.fromCharCode(97) );


// 解密
function decode() {
    // 获取文本框中的字符串
    // 例如: 96,97,98
    var str = secret.value;
    // 思路:
    // 1. 按照 , 分割字符串
    // 2. 将每个 分割的子字符串 转换成 数字,再转换成 字符
    //   96 97 98
    // 3. 将还原的字符,拼接在一起,再设置到 input 中去
    var arr = str.split(",");
    // 用于拼接结果的
    var r = "";
    for (var i = 0; i < arr.length; i++) {
        // 获取加密后的 字符串的编码,是一个数字
        var code = parseInt(arr[i]);
        r += String.fromCharCode(code);
    }
    // 将拼接后的结果,设置到 input 中
    secret.value = r;
}

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

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

现在修改上面的源码,添加读入和保存文本文件的功能,源码如下:

<html>
<head>
<meta charset="utf-8" />
<title>JS加密解密B</title>
</head>
<body>
    <h1> 加密解密 </h1>
    读入文本文件<input type="file" id="file" accept=".txt"/>
    <button type="button" onclick="download()">保存</button>
    <br>
     <textarea id="secret" cols="60" rows="10"></textarea>
    <br>
    <input type="button" value="加密" onclick="encode()">
    <input type="button" value="解密" onclick="decode();">

    <script>
       var fileName;
       //读选择的文本文件到多行文本框
       document.getElementById('file').onchange =function(){
         var file = this.files[0];
         fileName=document.getElementById('file').files[0].name;
         //alert(fileName);
         var reader = new FileReader();
         reader.onload = function(progressEvent){    
           var fileContent = this.result;       
           document.getElementById("secret").value = fileContent;           
         };
         reader.readAsText(file);
       };

       //下载多行文本框的内容到本地
       function download(){ 
         
         var text = document.getElementById("secret").value; 
         //alert(text); 
         if(text==""){
             alert("没有内容可保存!");
             return;
         } 
         var blob = new Blob([text], { type: "text/plain"}); 
         
         var anchor = document.createElement("a"); 
         //anchor.download = "my-filename.txt"; 
         anchor.download = fileName;
         anchor.href = window.URL.createObjectURL(blob); 
         anchor.target ="_blank"; 
         anchor.style.display = "none"; // just to be safe! 
         document.body.appendChild(anchor); 
         anchor.click(); 
         document.body.removeChild(anchor); 
      }


        //加密解密实现来源 https://www.jb51.net/article/141307.htm
        // 加密
        function encode() {
            // var s = secret.value;
            // s 是一个字符串, 类型: String
            // 根据 s 来创建一个字符串对象
            // str 的类型是: Object
            // var str = new String(s);
            // length 是获取字符串对象的长度,也就是说有多少个字符
            // str.length
            var str = secret.value;
            var r = "";
            // string 类型的可以当做字符串对象来用
            for (var i = 0; i < str.length; i++) {
                // 取出下标为 i 字符的编码
                var code = str.charCodeAt(i);
                // 将字符对应的编码,拼接到一个空字符串上
                r += code;
                // 每个符号后,添加 , 分割
                r += ",";
            }
            // secret.value 
            // 设置输入框的内容为 r
            secret.value = r;
        }
        // 使用到知识点(1)---如何将一个 数字 转换成对应的 字符
        // String.fromCharCode 
        // 函数功能: 将 数字 转换成对应的 字符
        // String 其实是系统的一个对象
        // document.write(  String.fromCharCode(97) );


        // 解密
        function decode() {
            // 获取文本框中的字符串
            // 例如: 96,97,98
            var str = secret.value;
            // 思路:
            // 1. 按照 , 分割字符串
            // 2. 将每个 分割的子字符串 转换成 数字,再转换成 字符
            //   96 97 98
            // 3. 将还原的字符,拼接在一起,再设置到 input 中去
            var arr = str.split(",");
            // 用于拼接结果的
            var r = "";
            for (var i = 0; i < arr.length; i++) {
                // 获取加密后的 字符串的编码,是一个数字
                var code = parseInt(arr[i]);
                r += String.fromCharCode(code);
            }
            // 将拼接后的结果,设置到 input 中
            secret.value = r;
        }

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

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

本文源码 参考https://www.jb51.net/article/141307.htm

JS基于base64编码加密解密文本和图片,可参见https://blog.csdn.net/cnds123/article/details/128378403

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

学习&实践爱好者

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值