几个文字加密的 JS 简洁算法(续)-- 字符错位法

[size=medium]续上一篇博文[url=http://rubel.iteye.com/blog/891657]《几个文字加密的简洁算法和一些个人的想法》[/url],不说开场白了,继续哦……[/size]

[b][size=medium]算法2:字符错位法[/size][/b]
[size=medium]——相当于把一篇文章的字全部打乱随机重排。[/size]

(function() {
//
// 字符错位-加密:
// 密钥长 ≥16,循环步长 10, 末尾余量反向对齐错位。
// 特点:
// 1. 密文为字符串中现有的字符,不易被检测出已加密;
// 2. 可适用于任意字符集;
// 3. 不增加文本的长度,即密文长度等于原文长度。
// 缺点:
// 1. 原文不应有固定特征,如 html 标签,否则易破解;
// 2. 原文长度必须不小于密钥长度。
// 推荐:
// 适用于较长的文本处理,一般为文章的正文段落。
//
// @param array key - 0-N 连续数字随机排布
// @return string - 加密后的字符串
//
String.prototype._displace = function( key )
{
if (key.length < 16 || this.length < key.length)
return false;

var _pos = key.length, _buf = new Array(_pos);

var _sect = function(s) {
for (var _i=0; _i<key.length; ++_i) {
_buf[_i] = s.charAt(key[_i]);
}
return [ _buf.slice(0, 10).join(''), _buf.slice(10).join('') ];
};

// _bs: back-string
var _arr = _sect(this), _to = _arr[0], _bs = this.length - _pos;

while (_bs >= 10) {
_arr = _sect( _arr[1] + this.substring(_pos, _pos + 10) );
_pos += 10;
_to += _arr[0];
_bs = this.length - _pos;
}
_to += _arr[1];

// 末尾余量处理
if (_bs > 0) {
var _ep = this.length - key.length;
_arr = _sect(_to.substring(_ep) + this.substring(_pos));
_to = _to.substring(0, _ep) + _arr.join('');
}

return _to;
};


//
// 字符错位-解密: 从尾至头逆向计算
//
// @return string - 解密后的字符串
//
String.prototype._undisplace = function( key )
{
if (key.length < 16) return false;

var _buf = new Array(_pos),
_s2 = key.length - 10, // 重叠长
_pos = parseInt((this.length - key.length) / 10) * 10 + key.length;

var _sect = function(s) {
for (var _i=0; _i<key.length; ++_i) {
_buf[key[_i]] = s.charAt(_i);
}
// [重叠段, 有效段]
return [ _buf.slice(0, _s2).join(''), _buf.slice(_s2).join('') ];
};

return (function(s) {
var _to = '', _arr = null;
// 末尾余量
if (_pos < s.length) {
_arr = _sect(s.slice(-key.length));
_to = _arr[1].slice(_pos - s.length);
s = s.slice(0, -key.length) + _arr[0] + _arr[1].slice(0, _pos - s.length);
}
_pos -= key.length;
_arr = _sect(s.slice(_pos));
_to = _arr[1] + _to;
_pos -= 10;
while (_pos >= 0) {
_arr = _sect( s.substring(_pos, _pos + 10) + _arr[0] );
_pos -= 10;
_to = _arr[1] + _to;
}

return _arr[0] + _to;

})(this);
};
})();


[b]用法:[/b]

<script language="JavaScript">
var _str = "中文字符串和 English char string 的 JS 加密 Test. 包含一些标点符号,*@%! 等。";
var _k2 = [2,15,3,1,4,10,5,9,8,6,14,13,7,0,12,11];
var _enc2 = _str._displace(_k2);
alert(_enc2);
alert(_enc2._undisplace(_k2));
</script>

[size=medium][b]特点:[/b]
1. 密钥数组值为 0- N 的连续值,但排列是任意的(即取排列的“任意性”为密钥的不可知性)。
2. 因为存在重叠段,字符的错位移动是在整个字符串范围内进行,加密性好于没有重叠的分段错位方式。
3. 虽然密钥的长度也是一个变数(即长度本身的不可知性),但加密强度主要取决于增长密钥带来的数据随机性(N! --N 的阶乘)。[/size]
极验4轨迹加密与sign签名纯算法逆向解析 验证码行为验证本质上是前端对用户交互行为的建模与加密表达。其核心原理在于将鼠标轨迹、时间序列、设备环境等多维信号融合为结构化数据,并通过本地加密生成不可伪造的动态签名。这种技术价值在于兼顾安全性与用户体验,广泛应用于登录风控、电商抢购等高敏感业务场景。本文聚焦极验Geetest 4.x版本,深入剖析其轨迹压缩编码(LZString+Base64)、三重过滤机制及AES-CBC+MD5嵌套签名逻辑,结合行为特征建模与本地环境模拟,实现脱离浏览器的纯算法复现。 阅读详情

相关推荐

Cursor调用Claude API报错根源与四层错位解析

上下文窗口(context window)和token计数是大模型集成中的基础概念,其原理涉及输入编码、API协议约束与客户端计算偏差。Claude等模型虽标称200K token上下文,但实际受限于服务端字节校验、流式响应长度限制及客户端提示词注入逻辑。技术价值在于厘清‘token’在不同环节的物理含义差异——如UTF-8字节、Unicode码点与字符数的混用,直接导致超限误判。典型应用场景包括IDE插件(如Cursor)对接LLM API时的稳定性优化、企业代理环境下的认证与审计合规,以及金融、电商等高

weixin_33796177的博客 418

JavaScript字符串处理核心原理与工程实践

字符串是前端开发中最基础也最易被低估的数据类型,其底层基于UTF-16编码,直接决定索引、切分和拼接的行为一致性。理解字符(grapheme)与码元(code unit)的差异,是规避Emoji、中文等Unicode场景下length异常、split乱码、charAt失效等问题的关键。现代JavaScript提供.at()、codePointAt()、Array.from()等Unicode安全API,显著提升语义正确性;而模板字符串、正则高级分割、流式大文本处理等技术,则支撑高可靠业务逻辑。本文聚焦V8引

coolmsn8786的博客 442

Node.js Buffer 是内存契约,不是缓存

Buffer 是 JavaScript 生态中处理二进制数据的基础抽象,其本质是运行时与操作系统间关于内存分配、视图共享和所有权管理的显式契约。不同于浏览器中受 GC 约束的 ArrayBuffer,Node.js 的 Buffer 通过 C++ 内存池与底层系统调用(如 read/write)直连,支撑高吞吐文件流、音视频采样、网络协议解析等场景。理解 Buffer.alloc 与 allocUnsafe 的内存语义差异、subarray 的共享内存特性,以及 UTF-8 编码在字符串转换中的不可替代性,

weixin_33910385的博客 424

加密、解密基本概念

文章目录1 对称密钥加密技术1.1 常用的对称密钥加密技术2 公开密钥加密技术2.1 RSA简介3 数字签名3.1 数字签名的生成方式 1 对称密钥加密技术 1.1 常用的对称密钥加密技术 错开字符编码的加密方式: 比如加密时,将文本数据中每个字符所对应的字符编码一律向后错三个,即给原字符编码的值加上 3。解密时,只要再将字符编码向前挪三个就可以实现解密。 通过 XOR 运算进行加密和解密: ...

木子皿--啥都不会的菜鸟 2316

Python结合ddddocr破解极验3代文字点选验证码实战指南

光学字符识别(OCR)技术是计算机视觉领域的基础应用,其核心原理是通过算法模型将图像中的文字信息转换为可编辑的文本数据。在自动化测试、数据采集等工程实践中,OCR技术能有效解决人机交互中的信息提取难题,尤其在处理验证码这类反爬机制时展现出巨大价值。针对极验3代等复杂的文字点选验证码,传统OCR方案识别率有限,而基于深度学习的ddddocr库通过专门训练优化,显著提升了对抗干扰、扭曲文字的识别精度。本文聚焦于Python环境下,如何利用ddddocr实现验证码的精准识别,并结合Selenium完成坐标定位与拟

weixin_33721427的博客 429

Inquirer.js:Node.js命令行交互式提示(prompts)实战指南

命令行交互(command-line)是 CLI 工具用户体验的核心环节,其本质是通过结构化提示(prompts)引导用户安全、高效地输入数据。Inquirer.js 作为 Node.js 生态中最成熟的交互式提示库,封装了跨终端兼容的底层 ANSI 控制、键盘事件处理与状态管理,将原本需手动实现的输入校验、动态列表、条件跳转、密码掩码等能力标准化。它显著降低 CLI 开发门槛,支撑 vue-cli、create-react-app 等主流脚手架的向导流程,并广泛应用于数据库迁移、项目初始化、配置生成等工程

weixin_33824363的博客 330

密码编码学-错位法

    这篇文章本来已经在本博客中已经刊登过了,但是由于作者学校网络的原因不幸被删除,所以我只能再写一次,看过的人再仔细思考一下其中的原理,没看过的朋友 和作者再次学习一下.     首先看一个例子,tdysudyoaisna.这是一个经过加密的信息,看起来毫无意义的一些英文字母罗列在一起.这便是使用密码加密后的效果,如果按密钥解读出来的话是有意义的.下面我为读者解释一下.这段信息是通过替换法加密

蓄势待发 5927

告别手写!用Lodop+JavaScript搞定景区/餐饮小票打印(附完整代码)

本文详细介绍了如何使用Lodop与JavaScript实现景区和餐饮小票的自动化打印,大幅提升效率并降低错误率。通过实战案例和完整代码,展示Lodop在动态模板设计、商业场景增强功能及生产环境调优中的应用,帮助开发者快速掌握这一高效打印解决方案。

weixin_30254435的博客 348

几种常见密码形式

1、栅栏易位法。  即把将要传递的信息中的字母交替排成上下两行,再将下面一行字母排在上面一行的后边,从而形成一段密码。  举例: TEOGSDYUTAENNHLNETAMSHVAED 解: 将字母分截开排成两行,如下 T E O G S D Y U T A E N N H L N E T A M S H V A E D 再将第二行字母分别放入第一行中,得到以下结果 THE LON

zth8huaileen的专栏 2万+

个人信息保护合规审计人员(中级)能力测试试卷

本文是关于个人信息保护合规审计的考试指南,包含选择题、判断题、简答题和案例分析题。选择题考察《个人信息保护法》的关键条款,如敏感信息处理、跨境传输、委托处理等合规要求。判断题测试对个人信息处理规则的理解,如撤回同意、公开信息处理等。简答题要求阐述审计流程、个人权利、委托处理义务等内容。案例分析题以互联网企业为例,分析违规行为并提出整改建议,涉及数据收集、第三方共享、自动化决策等问题。全文旨在帮助中级审计人员掌握个人信息保护的法律规定和审计实务,提升合规审计能力。

qq_41525079的博客 547

LED单元板驱动(HUB75接口)

开始之前先吐槽一下,搜这个的资料。要么都是Arduino,要么单片机的收费。小小的一个LED单元板,凭什么? 用Arduino是你速度快还是我ST,树莓派不好用?收费更离谱,这点东西还藏私?给你个中指凸。把原理都写出来看你怎么收费。 一、接口定义及原理 如图,有两个RGB通道,共占用6个IO。剩下的ABCDE为地址通道,LAT为行数据锁存通道,CLK为数据时钟,OE为低电平使能LED显示。图片这里没有E,证明它是16扫的,有E就会把B上面的地改为E。这样就是5位,2的5次方32扫。1.

a3748622的博客 3万+

Transposition cipher 错位密码(维基百科词条)

在密码学中,错位密码是一种使明文单元的位置(“单元”通常是字符或者字符串)通过一种有规律的方式进行移动的加密方法,生成的密文构成明文的一个置换。也就是说,明文单元的顺序被改变了(明文被重新排序了)。在数学上,一个双射函数可以用来进行加密,使用该双射函数的反函数进行解密。 下面是一些实现。 栅轨道栏密码 轨道栅栏密码是错位密码的一种形式,它的名字来源于它编码的方式。在轨道栅栏密码中,明文沿...

include_heqile的博客 7121

5GCPE与4G物联网卡兼容实战:通过AT指令修改IMEI实现设备迁移

本文详细介绍了如何通过AT指令修改5GCPE设备的IMEI,实现4G物联网卡的设备迁移。从硬件准备、驱动安装到串口工具配置,再到具体的AT指令操作步骤,提供了全面的实战指南。文章还包含信号优化、APN设置等实用技巧,帮助用户顺利完成设备迁移并提升网络性能。

weixin_28684757的博客 629

错位加密和破解方法

错位加密通过重新排列字符位置实现加密,但安全性较低,容易被破解。在实际应用中,应选择更安全的加密算法来保护敏感信息。====错位加密,又称置换加密,通过重新排列明文中的字符位置生成密文。

Flask Web 1131

【强化学习】强化学习中,训练过程的稳定性是什么?该如何进行衡量?请详细进行解释

在强化学习中,训练过程的稳定性指的是算法在训练过程中表现出一致的行为,并且能够稳定地收敛到一个好的策略。收敛性:算法是否能够在有限的时间内收敛到一个近似最优的策略。鲁棒性:算法在不同的初始条件或环境扰动下的表现是否稳定。方差:算法在多次运行中表现出的变异程度。稳定的训练过程意味着算法的训练曲线平滑奖励信号变化小,且策略或价值函数的变化是渐进的。

wq6qeg88的博客 1629

ERA5数据批量下载

ERA5再分析数据的IDM接管下载

qq_38734327的博客 3034

几个文字加密的 JS 简洁算法(续2)--进制乱序法

[size=medium]续前一篇博文[url=http://rubel.iteye.com/blog/891657]《几个文字加密的简洁算法和一些个人的想法》[/url]——字符平移法 以及上一篇博文[url=http://rubel.iteye.com/blog/897191]《几个文字加密的简洁算法(续)》[/url]——字符错位法 这里提供第三种加密方法——对字符 [b]Unicode...

testdownabc的专栏 376

Mathcad在LLC谐振变换器设计中的公式推导实战

本文通过Mathcad软件,详细演示了LLC谐振变换器设计的核心公式推导实战。文章阐述了如何利用Mathcad作为“会思考的草稿纸”,从定义基本参数、应用基波近似法(FHA)模型,到逐步推导电压增益公式及确定工作边界频率(fmin, fmax),并展示了如何通过动态参数扫描进行优化设计,帮助电源工程师高效、直观地完成理论计算,为后续仿真与实现奠定坚实基础。

q1w3e5r7t9y的博客 295

js文字加密(转载)

未深入了解过数据加密——我想那应该是科学家们的事。 俺小程序员一个,但喜欢思考,琢磨过“加密的问题”良久良久……(没有最终结果)  这里说说自己琢磨之后的一些想法,仅供茶余饭后  没事瞎想时的一些零星素材。 “加密”嘛,顾名思义,基本就是要别人看不明白本来可以明白的xx,所以,对于我们日常看见的文字,只要让别人看不明白就算加密了。 不同于对其他信息的加密(比如音视频),我觉得对“文字”的加密可以有...

bblistener的博客 687

18、社区多能源管理与点对点能源交易优化调度策略研究

本文研究了社区多能源管理与点对点(P2P)能源交易的优化调度策略,构建了适用于单一社区多个产消者的P2P交易模型,以用户生产成本最小化为目标,设计了基于ADMM算法的迭代优化方法。通过电热联合调度与能源共享机制,结合光伏、热电联产(CHP)和储能系统(ESS),实现了用户侧能源的高效利用。仿真结果表明,引入P2P交易和CHP设备显著降低了用户能源成本,提高了电力自给率和天然气利用率,减少了对主电网的依赖。研究验证了ADMM算法在分布式优化中的有效性,为未来社区能源系统的智能化管理提供了理论支持和技术路径。

git9versioner的博客 70

数据分析案例-汽车客户信息数据可视化分析

本数据集来源于kaggle,原始数据集共有8068条,11个特征变量,各变量含义解释如下:ID:客户IDGender:客户性别Ever_Married:客户婚姻状况Age:客户年龄Graduated:客户是毕业生吗?Profession:客户的职业Work_Experience:多年工作经验Spending_Score:客户的消费评分Family_Size:客户家庭成员人数(含客户)Var_1:客户的匿名类别Segmentation:(目标)客户的客户群。

m0_64336780的博客 1万+

数据加密

未深入了解过数据加密——我想那应该是科学家们的事。 俺小程序员一个,但喜欢思考,琢磨过“加密的问题”良久良久……(没有最终结果)  这里说说自己琢磨之后的一些想法,仅供茶余饭后  没事瞎想时的一些零星素材。 “加密”嘛,顾名思义,基本就是要别人看不明白本来可以明白的xx,所以,对于我们日常看见的文字,只要让别人看不明白就算加密了。 不同于对其他信息的加密(比如音视频),我觉得对“文字”的加密可以有...

bblistener的博客 138

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

使用 JavaScript 在 React 中实现 Word 转 PDF

本文介绍如何在 React 项目中实现浏览器端 Word 转 PDF 功能,使用 Spire.Doc for JavaScript 库。该方法无需服务器参与,提升隐私性和性能。

Eiceblue的专栏 321

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

普通 http 网络下数据的安全传输(设计原理)

[size=small]曾几何时,https 安全但缺乏效率,http 有效率但却缺乏安全, 鱼与熊掌——两者不可兼得! https 采用不对称加密算法创建安全的连接,之后用对称加密算法传递数据,安全性毋庸置疑——但因效率较低和授权费用(第三方 CA 机构认证)而难以普及。 http 设计的初始是基于相互信任,数据在网络上的传输是采用明文,不做任何加密处理,因此也就得到了效率——但数据的安...

testdownabc的专栏 366

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

AES加密解密实战:从Bad Key到Padding Error的避坑指南

对称加密是现代信息安全的基础,它使用相同的密钥进行加密和解密,确保数据传输的机密性。AES(高级加密标准)作为目前最主流的对称加密算法,其核心原理基于替换-置换网络,通过多轮迭代对数据块进行混淆和扩散。在工程实践中,AES的价值在于其高效性和安全性,被广泛应用于数据库加密、网络通信、文件保护等场景。然而,开发者常因忽略密钥管理、模式选择、填充方案等生态细节而遭遇问题。本文聚焦于AES使用中最常见的“Bad Key”和“Padding Error”两大报错,深入剖析其根源——例如密钥长度不符、编码不一致或初始

weixin_30823001的博客 433

本地化PDF智能编辑:基于OCR与版面分析实现PPT转PDF文件文字修改

在文档数字化处理领域,PDF因其格式稳定、跨平台兼容性强而成为广泛使用的文件格式,但其不可直接编辑的特性也带来了诸多不便。从技术原理层面,解决PDF编辑难题主要依赖于光学字符识别(OCR)与智能版面分析两大核心技术。OCR技术负责将扫描件或图片中的文字转换为可编辑的文本数据,而版面分析则通过深度学习模型识别文档的视觉结构,如段落、标题、表格等,以还原其逻辑布局。这两项技术的结合,使得从非结构化的PDF中提取并重构可编辑内容成为可能,其技术价值在于打通了从静态文档到可编辑数据的转换通道,实现了文档内容的‘逆向

weixin_34006965的博客 341
上一篇: 几个文字加密的 JS 简洁算法(字符平移法)和一些个人的想法
下一篇: 几个文字加密的 JS 简洁算法(续2)--进制乱序法
testdownabc
博客等级 码龄18年 4粉丝 15原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值