几个文字加密的 JS 简洁算法(字符平移法)和一些个人的想法

[size=medium]未深入了解过数据加密——我想那应该是科学家们的事。

俺小程序员一个,但喜欢思考,琢磨过“加密的问题”良久良久……(没有最终结果) 这里说说自己琢磨之后的一些想法,仅供茶余饭后 没事瞎想时的一些零星素材。

“加密”嘛,顾名思义,基本就是要别人看不明白本来可以明白的xx,所以,对于我们日常看见的文字,只要让别人看不明白就算加密了。

不同于对其他信息的加密(比如音视频),我觉得对“文字”的加密可以有一个很简单的逻辑: 中文字符就那么几千万把个,但却可以组合成无限量的任意文章,字还是那些字,文章的意思却可以相差天远地别! 回想“活字印刷”时的场景,在排字之前,你能知道排出来的是一篇什么文章么???

所以,文字的加密很简单——把字“打乱”就可以了。——字还是那些字,打乱之后说不定还是另一篇文章哩! 你知道原文是什么吗??——它可能是另一篇不太读得通顺的文章,也可能是那篇本来就不怎么读得通顺的原文。——这样的加密,你如何破解? 怎么算是已经破解了?? 呵呵, 好玩吧?

现在的问题是,怎么把字打乱? 算法是什么——必须要能根据密钥恢复回来(废话)。

时间就是效率,不罗嗦了(感觉像在浪费生命), 这里贴出几个小算法,仅供参考,或提出质疑——是否可靠? 提前谢谢提出质疑者(当然有解决办法就更好了)!


JS 实现:(JS 的底层 Unicode 支持是效率的根本——废话真多!)

[b]算法1: 字符平移法[/b]
[/size]

(function() {
var _Charset = {
'cjk': [ 'u4e00', 'u9fa5' ], // 汉字 [一-龥]
'num': [ 'u0030', 'u0039' ], // 数字 [0-9]
'lal': [ 'u0061', 'u007a' ], // 小写字母 [a-z]
'ual': [ 'u0041', 'u005a' ], // 大写字母 [A-Z]
'asc': [ 'u0020', 'u007e' ] // ASCII 可视字符
};

//
// 加密:字符码在字符集内平移。
// 特点:
// 1. 字串越短加密效果越好,若短文不大于密钥长度,则不可破解。
// 2. 不增加文本的长度,即密文长度等于原文长度。
// 缺点:
// 1. 一次只能对“一个”连续值的字符集进行处理,而一般字符串中会
// 同时包含多个字符集中的字符。
// 2. 汉字平移后的字较生僻,明显体现出已被平移处理;
// 推荐:
// 适于特定类型的短字符串的处理,如:时间串、名称、标题等。
//
// 参数 cset:
// 用 Unicode 表示 -- 4 位十六进制,前置‘u’,
// 可用预定义的 _Charset 属性名标识,默认为 cjk。
//
// @param array na - 平移量数组
// @param array cset - 字符集名/范围 [ 起点, 终点 ])
// @return string - 平移后的字符串
//
String.prototype._shift = (function()
{
var _cset, _id, _beg, _len, _exp;

return function( na, cset ) {
switch (typeof cset) {
case 'undefined':
cset = 'cjk';
case 'string':
_cset = (cset == _id) ? null : _Charset[cset];
break;
default: _cset = cset;
}
if ( _cset ) {
_beg = parseInt(_cset[0].substring(1), 16);
_len = parseInt(_cset[1].substring(1), 16) - _beg + 1;
_exp = RegExp('[\\' + _cset[0] + '-\\' + _cset[1] + ']', 'g');
_id = cset;
}
var _sz = na.length,
_cnt = 0;
return this.replace(_exp, function(s) {
var _c = s.charCodeAt(0) - _beg;
return String.fromCharCode((_c+na[_cnt++%_sz])%_len + _beg);
});
};
})();


//
// 解密:字符码在字符集内平移-恢复。
//
String.prototype._unshift = (function()
{
var _cset, _id, _beg, _len, _exp;

return function( na, cset ) {
switch (typeof cset) {
case 'undefined':
cset = 'cjk';
case 'string':
_cset = (cset == _id) ? null : _Charset[cset];
break;
default: _cset = cset;
}
if ( _cset ) {
_beg = parseInt(_cset[0].substring(1), 16);
_len = parseInt(_cset[1].substring(1), 16) - _beg + 1;
_exp = RegExp('[\\' + _cset[0] + '-\\' + _cset[1] + ']', 'g');
_id = cset;
}
var _sz = na.length,
_cnt = 0;
return this.replace(_exp, function(s) {
var _c = s.charCodeAt(0) - _beg;
return String.fromCharCode((_c-na[_cnt++%_sz]%_len+_len)%_len + _beg);
});
};
})();

})();


[b]用法:[/b]

<script language="JavaScript">
var _str = "中文字符串和 English char string 的 JS 加密 Test. 包含一些标点符号,*@%! 等。";
var _k1 = [2034,85,45,22,65,213,65,398,356,1709,354];
var _enc = _str._shift(_k1);
alert(_enc);
alert(_enc._unshift(_k1));
</script>

密钥是个数组,如果觉得不方便,当然可以用一句话,取每个字符的码值分解成数组了。

[b][color=red](待续……)[/color][/b]
[前端高频面试] 2026年中级、高级面试题解 注意: 别紧张,目光注视面试官,不要有小动作,自信!!自信!!自信!! 阅读详情

相关推荐

智能车竞赛蚂蚁搬家组:NXP-MicroPython与STC单片机协同搬运策略解析

本文深入解析智能车竞赛蚂蚁搬家组中NXP-MicroPython与STC单片机的协同搬运策略。通过硬件选型、通信架构设计、效率优化及实战经验分享,展示了如何利用NXP-MicroPython的实时控制与STC单片机的感知导航优势,实现高效多智能体协同作业,为参赛团队提供实用技术参考。

motor的博客 1080

js实现字符串的加密与解密

//------------------------------------------------加密函数:function Encrypt(str, pwd) { if (str == "") return ""; str = escape(str); if (!pwd || pwd == "") { var pwd = "12...

weixin_34235371的博客 457

华为路由器 VRRP主备配置

3、R3 出口路由器。

一直被模仿,从未被超越 5585

js加密字符串

【代码】js加密字符串。

weixin_46949106的博客 1202

PLCopen运动控制避坑指南:单轴功能块常见报错排查(基于SM3_Basic函数库)

本文深入解析PLCopen运动控制中单轴功能块的常见报错问题,基于SM3_Basic函数库提供实用排查指南。从功能块逻辑错误与硬件报错的甄别技巧到高频报错场景的解决方案,帮助工程师快速定位并解决运动控制系统中的稳定性问题,提升工业自动化设备的运行效率。

weixin_33686714的博客 316

PPL文档——Excel制作的甘特图加上动态今日线

当很多项目需要跟踪进度时,我们介绍一种在Excel中创建甘特图。

qq_34777858的博客 7064

JavaScript中的加密解密

一、Base64 Base64,就是选出64个字符作为一个基本字符集(A-Z,a-z,0-9,+,/,再加上作为垫字的"=",实际是65个字符),其它所有符号都转换成这个字符集中的字符。 编码规则: 第一步,将每三个字节作为一组,一共是24个二进制位。 第二步,将这24个二进制位分为四组,每个组有6个二进制位。 第三步,在每组前面加两个00,扩展成32个二进制位,即四个字节。 第四步,得到扩展后的每个字节的对应符号,这就是Base64的编码值。 解码规则: 第一步,将每4个字符为一组,查找上表,找到每个字符

赵佳敏的博客 1718

uniapp - 解决真机调试报错 request:fail abort statusCode:-1 java.security.cert.CertPathValidatorException: Tr

uni-app,真机调试报错,app端平台,安卓Android,安卓App发布线上报错,打包后接口请求失效了,api接口报错,真机运行安卓app时接口不通且报错,request:failabortstatusCode:-1java.security.cert.CertPathValidatorException:Trustanchorforcertificationpathnotfound.,真机调试,苹果ios真机报错,Uniapp打包到app后报错,uni-app真机调试报错,服务器

🏆 前端领域优质创作者 1万+

Js对中文字符串加密

function urlencode(text) { text = escape(text.toString()).replace(/\+/g, "%2B"); // this escapes 128 - 255, as JS uses the unicode code points for them. // This causes problems with submit...

ChocooM 580

19、利用PostGIS进行空间分析:更高效的矢量分析方法

本文介绍了如何利用PostGIS进行高效灵活的矢量空间分析,重点探讨了在选址安静住宅场景中使用缓冲区和距离测量两种方法的实现与优化。通过QGIS与PostGIS结合,演示了数据上传、CTE应用、ST_Intersects与ST_Distance函数对比,并深入分析了横向子查询在提升查询性能和代码可读性方面的优势。文章还比较了不同方法的适用场景,并以房地产开发选址为例展示了完整分析流程,最后总结了PostGIS在空间分析中的强大能力与未来应用前景。

d3e4f的博客 92

物联网通信中NB-IoT、Cat.1、LTE-M该如何选择?

首先我们要确定我们产品的关键需求,例如:我们的设备是否对数据传输速率有较高的要求,有较高要求我们就需要选择较高传输速率的Cat.1来开发我们的产品。同时关于产品性能方面,我们对功耗、延迟、可靠性也会有所要求,例如我们的产品为移动端产品,不方便布线以及安装电源,那我们就会采用电池供电的方式,所以在选择时可以优先考虑低功耗产品,最终结合其他需求选择出合适的协议。首先,我们需求的产品是不同的,我们需要根据产品需求或项目需求来进行选择,NB-IoT、Cat.1、Cat.M都有属于自己的优势。

a1809032425的博客 1216

针对文字加密的简单 JS 加密算法 --进制乱序法改良版

在上一篇文章《普通 http 网络下数据的安全传输(设计原理)》中,我曾经推荐浏览器和服务器之间的加密通讯宜采用《几个文字加密的 JS 简洁算法(续2)--进制乱序法》中提及的算法,但那个算法有密文增长较多的缺点。考虑实用性,这里作了完全重新的设计,可以自动识别单双字节字符,单字节字符用 2 位 16 进制表示,双字节字符用 3 位 41 进制表示,从而降低了密文的增长幅度。 如认为汉字...

Just Code 624

QCC51XX---人机接口设备协议( HID)

QCC51XX---人机接口设备协议( HID)

weixin_42162924的博客 819

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

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

testdownabc的专栏 377

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

js文字加密(转载)

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

bblistener的博客 687

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

一个类似 Base64 但真正实现了加密的 JS 文字加密算法

[size=medium]算法的基本原理和 Base64 类似。Base64 算法请参见维基百科 [url]http://zh.wikipedia.org/zh-cn/Base64[/url]。 这里把 Base64 中使用的基本字符表进行了随机化——即用基本字符表排列的随机性作为密钥的变化性。同时,考虑编码方法的应用环境多为 Javascript,故将 Base64 规范字符表中的 “+/...

testdownabc的专栏 1216

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

数据加密

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

bblistener的博客 138

深入解析AntSword编码器与解码器:打造自定义加密通信协议

在网络安全与数据传输领域,应用层通信协议的设计与实现是核心技术之一。其核心原理在于通过编码器(Encoder)和解码器(Decoder)的协同工作,对传输载荷进行可逆变换,从而在客户端与服务器端之间建立一条安全、可控的数据通道。这项技术的核心价值在于实现通信的定制化与隐蔽性,能够有效规避基于固定特征的检测。其典型应用场景包括渗透测试工具的流量伪装、物联网设备间的轻量级安全通信,以及对内部API接口进行额外的安全加固。本文将以中国蚁剑(AntSword)这一广泛使用的工具为例,深入剖析其编码器与解码器机制,并

abxlep7702的博客 388

c的编码/CTF中常见编码_小白渗透教程

我报名参加金石计划1期挑战——瓜分10万奖池,这是我的第4篇文章,点击查看活动详情引文CTF比赛中编码题目是非常常见的通常作为题目中的一小步来作为考点

程序员三九的博客 411

c的编码_CTF中常见编码_新手漏洞知识点

我报名参加金石计划1期挑战——瓜分10万奖池,这是我的第4篇文章,点击查看活动详情引文CTF比赛中编码题目是非常常见的通常作为题目中的一小步来作为考点

2401_84915584的博客 662

手绘风格虚拟白板Excalidraw终极指南:快速搭建你的创意绘图空间 [特殊字符]

想要一个简单又强大的虚拟白板工具来绘制手绘风格的图表、流程图和创意草图吗?Excalidraw正是你需要的开源解决方案!这款免费的手绘风格虚拟白板工具提供了无限画布、实时协作和端到端加密功能,让创意表达变得轻松有趣。无论你是设计师、开发者还是教育工作者,Excalidraw都能帮助你快速创建美观的手绘风格图表。 ## ✨ 为什么选择Excalidraw虚拟白板? Excalidraw是一个开源

gitblog_00900的博客 1086

buuctf-misc 解题

本文总结了BUUCTF网站分享的7道CTF题目解法:1.base64隐写直接解码获取flag;2.图片属性中的盲文翻译得flag;3.修复图片尺寸后显示flag;4.音频中的摩斯密码需截取32位转换;5.图片隐写分离压缩包暴力破解后统计字符;6.凯撒密码位移破解给定字符串;7.图片隐写分离AAencode颜文字加密需在线解密。涉及隐写术、密码学、文件修复等多种CTF解题技巧,包含base64、盲文、摩斯密码、凯撒密码和AAencode等多种加密方式。

u013536550的博客 699

笔试题———

将数字转换为二级制(其他进制):num.toString(2),同时获得字符串 将数组转换为字符串: arr.join("") 数组的unshift方法,是在原数组基础上前添加元素,若return则是数组长度 for item in arr 遍历数组,item是数组下标。for of 方法得到数组元素。 ...................................................

Atlantis_Qi的博客 227

抛物线速算应用技术实现详解——鸿蒙PC的Electron框架实现

摘要: 抛物线速算应用是一款基于开源鸿蒙PC框架的数学工具,旨在简化二次函数参数计算过程,提供抛物线关键参数(顶点、对称轴、焦点、准线等)的自动计算与可视化展示。应用采用三层架构设计(视图层、样式层、逻辑层),通过JavaScript实现核心算法,利用Canvas绘制抛物线图形,支持历史记录保存与结果导出。技术亮点包括Electron与OpenHarmony的融合实践、数学公式的精确计算(处理浮点数精度与特殊情况)、用户友好的交互设计(左右分栏布局、蓝色系UI)。项目开源在AtomGit平台,适用于高中数学

数学老师-帆 1275
上一篇: 腾讯的QQ空间还真不是你自己的空间
下一篇: 几个文字加密的 JS 简洁算法(续)-- 字符错位法
testdownabc
博客等级 码龄18年 4粉丝 15原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值