JS实现的RC4加密算法示例


Posted in Javascript onAugust 16, 2018

本文实例讲述了JS实现的RC4加密算法。分享给大家供大家参考,具体如下:

RC4是一种简单的对称加密算法,在文本加密,通信加密等场景应用非常广泛。

在Web中可以用来对本地存储数据进行加密,比如存储cookie中的用户名和密码,敏感信息等。

以下是本人根据其思想基于JS实现的算法。

//var ctext = rc4("我是明文","我是密码");
//var text = rc4(ctext, "我是密码");
function rc4(data, key) {
  var seq = Array(256); //int
  var das = Array(data.length); //code of data
  for (var i = 0; i < 256; i++) {
    seq[i] = i;
    var j = (j + seq[i] + key.charCodeAt(i % key.length)) % 256;
    var temp = seq[i];
    seq[i] = seq[j];
    seq[j] = temp;
  }
  for (var i = 0; i < data.length; i++) {
    das[i] = data.charCodeAt(i)
  }
  for (var x = 0; x < das.length; x++) {
    var i = (i + 1) % 256;
    var j = (j + seq[i]) % 256;
    var temp = seq[i];
    seq[i] = seq[j];
    seq[j] = temp;
    var k = (seq[i] + (seq[j] % 256)) % 256;
    das[x] = String.fromCharCode(das[x] ^ seq[k]);
  }
  return das.join('');
}
Javascript 相关文章推荐
formValidator3.3的ajaxValidator一些异常分析
Jul 12 Javascript
js函数setTimeout延迟执行的简单介绍
Jul 17 Javascript
jQuery学习之prop和attr的区别示例介绍
Nov 15 Javascript
html的DOM中Event对象onabort事件用法实例
Jan 21 Javascript
jquery图片切换插件
Mar 16 Javascript
React快速入门教程
Jan 17 Javascript
详解React-Native解决键盘遮挡问题(Keyboard遮挡问题)
Jul 13 Javascript
基于JavaScript实现微信抢红包功能
Jul 20 Javascript
RequireJS用法简单示例
Aug 20 Javascript
JavaScript设计模式之代理模式实例分析
Jan 16 Javascript
vue 动态创建组件的两种方法
Dec 31 Vue.js
three.js如何实现3D动态文字效果
Mar 03 Javascript
vue2.0父子组件间传递数据的方法
Aug 16 #Javascript
Vue2.0中三种常用传值方式(父传子、子传父、非父子组件传值)
Aug 16 #Javascript
bootstrap实现点击删除按钮弹出确认框的实例代码
Aug 16 #Javascript
浅谈Vue.js路由管理器 Vue Router
Aug 16 #Javascript
layui问题之模拟select点击事件的实例讲解
Aug 15 #Javascript
深入理解Vue router的部分高级用法
Aug 15 #Javascript
JS打印彩色菱形的实例代码
Aug 15 #Javascript
You might like
星际实力自我测试
2020/03/04 星际争霸
PHP中使用unset销毁变量并内存释放问题
2012/07/05 PHP
php删除与复制文件夹及其文件夹下所有文件的实现代码
2013/01/23 PHP
PHP常用技巧汇总
2016/03/04 PHP
Use Word to Search for Files
2007/06/15 Javascript
jquery插件 autoComboBox 下拉框
2010/12/22 Javascript
js控制页面控件隐藏显示的两种方法介绍
2013/10/09 Javascript
使用script的src实现跨域和类似ajax效果
2014/11/10 Javascript
javascript比较两个日期相差天数的方法
2015/07/23 Javascript
JQuery学习总结【二】
2016/12/01 Javascript
js实现无缝滚动图
2017/02/22 Javascript
实例解析js中try、catch、finally的执行规则
2017/02/24 Javascript
nodejs 图片预览和上传的示例代码
2017/09/30 NodeJs
vue自定义全局组件(自定义插件)的用法
2018/01/30 Javascript
Less 安装及基本用法
2018/05/05 Javascript
微信小程序实现横向增长表格的方法
2018/07/24 Javascript
微信接入之获取用户头像的方法步骤
2019/09/23 Javascript
使用Vue 自定义文件选择器组件的实例代码
2020/03/04 Javascript
Python类的多重继承问题深入分析
2014/11/09 Python
Python实现公历(阳历)转农历(阴历)的方法示例
2017/08/22 Python
基于python内置函数与匿名函数详解
2018/01/09 Python
在Pycharm中修改文件默认打开方式的方法
2019/01/17 Python
python selenium爬取斗鱼所有直播房间信息过程详解
2019/08/09 Python
python实现自动清理重复文件
2020/08/24 Python
python实现感知机模型的示例
2020/09/30 Python
Python 实现二叉查找树的示例代码
2020/12/21 Python
利用Bootstrap实现漂亮简洁的CSS3价格表实例源码
2017/03/02 HTML / CSS
美国排名第一的葡萄酒俱乐部:Firstleaf Wine Club
2020/01/02 全球购物
当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递?
2014/09/09 面试题
军训的自我鉴定
2013/12/10 职场文书
美术第二课堂活动总结
2014/07/08 职场文书
餐厅感恩节活动策划方案
2014/10/11 职场文书
高中生打架检讨书1000字
2015/02/17 职场文书
python中的被动信息搜集
2021/04/29 Python
分析mysql中一条SQL查询语句是如何执行的
2021/06/21 MySQL
Python面试不修改数组找出重复的数字
2022/05/20 Python