适用场景

本方法适用于需要对敏感信息进行加密传输,但加解密要求又不高的场景,因为是前台的javascript加解密,所以其实还是能通过js代码分析出原始值来的。

如果您对信息极其敏感, 比例登录密码这种, 建议还使用更安全的后台加密。

流程图

加密规则: 从池中随机添加一个字符到每一实际字符后100%生成偶数位字符串,
加密样例: 从012345789每次取一随机值插到abc字符串的每个字符后,形成a8b6c9
解密样例: 只抽取1,3,5,7,9奇数位,最后只抽出abc

最纯粹的js写法

  1. <html>
  2.  
  3. <body>
  4. <script type="text/javascript">
  5. function Code() {
  6. //key池 ,该池按需调整,也可以加上英文字母如 'abcdefghijklmnopqrstuvwxyz0123456789',但必须双方约定好.
  7. var key = '0123456789';
  8. //取随机数
  9. function sum(m, n) {
  10. var num = Math.floor(Math.random() * (m - n) + n);
  11. return num;
  12. }
  13. //取key池的随机数
  14. function getRandomChar() {
  15. var index = sum(1, key.length);
  16. var result = key.charAt(index);
  17. return result;
  18. }
  19. //加密
  20. this.encode = function (src) {
  21. var result = "";
  22. var length = src.length;
  23. for (var i = 0; i < length; i++) {
  24. result += src.charAt(i) + getRandomChar();
  25. }
  26. return result;
  27. }
  28. //解密
  29. this.decode = function (src) {
  30. var result = "";
  31. var length = src.length;
  32. for (var j = 0; j < length; j++) {
  33. if (j % 2 == 0) {
  34. result += src.charAt(j);
  35. }
  36. }
  37. return result;
  38. }
  39. }
  40.  
  41. //创建加密对象
  42. var code = new Code();
  43.  
  44. //加密样例
  45. var encodeValue = code.encode("abc");
  46. alert("encodeValue: " + encodeValue);
  47.  
  48. //解密样例
  49. var decodeValue = code.decode(encodeValue);
  50. alert("decodeValue: " + decodeValue);
  51. </script>
  52. <div id="app">test</div>
  53.  
  54. </body>
  55.  
  56. </html>

结果

加密前的值为abc

加密后的值为a3b2c9

js javascript 简易随机值穿插加解密【原】的更多相关文章

  1. 【转】js JavaScript 的性能优化:加载和执行

    JavaScript 的性能优化:加载和执行 转自:https://www.ibm.com/developerworks/cn/web/1308_caiys_jsload/ 随着 Web2.0 技术的 ...

  2. 前端JS AES加密 后端PHP AES加解密

    <!DOCTYPEhtml> <html> <head> <title>aes demo</title> </head> < ...

  3. 原生JS实现简易随机点名功能

    定时器的工作原理,这里将用引用How JavaScript Timers Work中的例子来解释定时器的工作原理,该图为一个简单版的原理图.· 上图中,左侧数字代表时间,单位毫秒:左侧文字代表某一个操 ...

  4. Rails生成随机字符串及加解密

    1.生成安全的base64字符串 key = SecureRandom.urlsafe_base64

  5. JavaScript Array返回值以及是否改变原数组。

    1.        push:最后一位新增://改变原数组         arr.push("123");         返回值是数组的长度:         var b =  ...

  6. 一个密码经过多次MD5加密能否提高安全性?Java MD5盐值加解密

    什么是MD5? MD5(Message Digest Algorithm 5,信息摘要算法5),是计算机广泛使用的摘要算法(又称哈希算法)之一.MD5是将一段信息,通过其不可逆的字符串变换算法,产生了 ...

  7. python实现RSA加密和签名以及分段加解密的方案

    1.前言 很多朋友在工作中,会遇到一些接口使用RSA加密和签名来处理的请求参数,那么遇到这个问题的时候,第一时间当然是找开发要加解密的方法,但是开发给加解密代码,大多数情况都是java,c++,js等 ...

  8. .net mvc 站点自带简易SSL加密传输 Word报告自动生成(例如 导出数据库结构) 微信小程序:动画(Animation) SignalR 设计理念(一) ASP.NET -- WebForm -- ViewState ASP.NET -- 一般处理程序ashx 常用到的一些js方法,记录一下 CryptoJS与C#AES加解密互转

    .net mvc 站点自带简易SSL加密传输   因项目需要,传输数据需要加密,因此有了一些经验,现简易抽出来分享! 请求:前端cryptojs用rsa/aes 或 rsa/des加密,后端.net ...

  9. javascript JS CryptoJS DES加解密CBC模式与C#DES加解密相同互通

    我们只知道不同的语言解密要相互通用,就需要遵循相同的加密方式,然而在具体做技术预研的时候,就发现会遇到很多问题,网上找的资料也是比较片面,所以我踩了坑,并且把解决方案和相关资料源码提供出来,给需要的朋 ...

随机推荐

  1. Python使用Plotly绘图工具,绘制直方图

    今天我们再来讲解一下Python使用Plotly绘图工具如何绘制直方图 使用plotly绘制直方图需要用到graph_objs包中的Histogram函数 我们将数据赋值给函数中的x变量,x = da ...

  2. django xadmin 1不在可用的选项中

    报错:1不在可用的选项中 解决办法: 对CharField的choices的选项, gender = models.CharField(max_length=, choices=((, , " ...

  3. Microsoft Deployment Toolkit build 8456

    MDT build 8456的重大变化摘要. 支持的配置更新 Windows ADK for Windows 10,版本1809 Windows 10,版本1809 Configuration Man ...

  4. 用golang写了个统计各单位报送的信息数量的微服务

    代码很乱,bug很多,将就着看吧.参考了很多网上代码,只能说声感谢了. //cjl.ZongHeInfo.1.0 //目的:对各部门报上来的信息数量进行排名 //思路:预计一年信息量不超过100M,全 ...

  5. Win7删除右键菜单中“图形属性”和“图形选项”

    完win7操作系统后,打完驱动在桌面右键会出现如下两个选项,平时没啥用又占用空间,那么如何删掉这两个选项呢? 操作步骤: 1.在运行中输入 regedit 确定打开注册表: 2.依次单击展开HKEY_ ...

  6. Γ(a) 的两种方差与均值

    所以 这里是满足 Be(x+1,n-x+1),如果是要服从Be(a,b) 相应的后验概率 

  7. [转帖]5G网速那么快,基站辐射会很大吗?

    5G网速那么快,基站辐射会很大吗? 鲜枣课堂 2019-04-20 21:19收藏55评论6社交通讯     题图来自东方IC,本文来自微信公众号:鲜枣课堂(ID:xzclasscom),作者:小枣君 ...

  8. Linux如何管理目录和文件属性

    概述:在Linux文件系统的安全模型中,为系统中的文件(或目录)赋予了两个属性:访问权限和文件所有者,简称为“权限”和“归属”.其中,访问权限包括读取.写入.可执行三种基本类型,归属包括属主(拥有该文 ...

  9. 通过后缀名和MIME-TYPE检查实现文件类型校验

    前言 文件上传是一个在开发中很常见的需求场景,通常出于安全考虑,我们会对上传的文件进行类型校验,其中常见的有后缀名校验,mime-type校验 话不多说,直接上代码 1.首先定义允许上传的文件类型白名 ...

  10. gVim编辑器 操作篇

    gVim是一款强大的编辑器,可以满足大部分语言的编程需要.尤其是其自带的模板定制功能对于Verilog来说非常受用.然而gVim有很多操作是不同于其他编辑器的,这让很多初学者望而却步,因此,本文将gV ...