适用场景

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

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

流程图

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

最纯粹的js写法

<html>

<body>
<script type="text/javascript">
function Code() {
//key池 ,该池按需调整,也可以加上英文字母如 'abcdefghijklmnopqrstuvwxyz0123456789',但必须双方约定好.
var key = '0123456789';
//取随机数
function sum(m, n) {
var num = Math.floor(Math.random() * (m - n) + n);
return num;
}
//取key池的随机数
function getRandomChar() {
var index = sum(1, key.length);
var result = key.charAt(index);
return result;
}
//加密
this.encode = function (src) {
var result = "";
var length = src.length;
for (var i = 0; i < length; i++) {
result += src.charAt(i) + getRandomChar();
}
return result;
}
//解密
this.decode = function (src) {
var result = "";
var length = src.length;
for (var j = 0; j < length; j++) {
if (j % 2 == 0) {
result += src.charAt(j);
}
}
return result;
}
} //创建加密对象
var code = new Code(); //加密样例
var encodeValue = code.encode("abc");
alert("encodeValue: " + encodeValue); //解密样例
var decodeValue = code.decode(encodeValue);
alert("decodeValue: " + decodeValue);
</script>
<div id="app">test</div> </body> </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. 阿里云服务器部署Java Web项目全过程

    最近需要将一个Java Web项目部署到服务器上,方便多人共享访问.这也是我第一次接触服务器之类的东西,也花了一点时间,最终总算部署成功,写下一篇文章记录以便日后回顾. 购买服务器 第一步当然是需要购 ...

  2. There is already an object named '#xxxx' in the database.

    这个案例是前几天同事遇到的一个案例,在存储过程中"删除"了一个临时表,然后重新创建这个临时表时遇到"There is already an object named 'x ...

  3. [20190417]隐含参数_SPIN_COUNT.txt

    [20190417]隐含参数_SPIN_COUNT.txt--//在探究latch spin计数之前,先简单探究_SPIN_COUNT.实际上oracle现在版本latch spin的数量不再是200 ...

  4. Objective-C Block与函数指针比较

    相似点 1.函数指针和Block都可以实现回调的操作,声明上也很相似,实现上都可以看成是一个代码片段. 2.函数指针类型和Block类型都可以作为变量和函数参数的类型.(typedef定义别名之后,这 ...

  5. Status bar could not find cached time string image. Rendering in-process?

    在开发中,控制台经常输出“Status bar could not find cached time string image. Rendering in-process?” 在 Info.plist ...

  6. kali中的postgres怎么连接

    metasploit,默认使用的是postgresql数据库.在BT5或是Kali等专业的渗透系统中,postgresql已经被默认安装. 执行msfdb init会自动创建一个默认的用户名密码都是m ...

  7. animation动画案例

    最近一直苦恼做一个banner的进度条,原先用js改变width值,但明显卡顿.后来用了animation,超级好用. <!DOCTYPE html> <html lang=&quo ...

  8. QGridLayout

    Help on class QGridLayout in module PyQt5.QtWidgets: class QGridLayout(QLayout) |  QGridLayout(QWidg ...

  9. Var的用法解析

    C#关键字是伴随着.NET 3.5以后,伴随着匿名函数.LINQ而来, 由编译器帮我们推断具体的类型.总体来说,当一个变量是局部变量(不包括类级别的变量),并且在声明的时候初始化,是使用var关键字的 ...

  10. ABP之什么是ABP(ASP.NET Boilerplate)

    1.介绍 ABP是开源的且文档比较齐全的应用程序框架.其实它不仅仅是个框架,考虑其最佳实践,ABP更提供了基于领域驱动设计(DDD)的强大价格模型. ABP支持最新的ASP.NET Core和EF C ...