未深入了解过数据加密——我想那应该是科学家们的事。
俺小程序员一个,但喜欢思考,琢磨过“加密的问题”良久良久……(没有最终结果) 这里说说自己琢磨之后的一些想法,仅供茶余饭后 没事瞎想时的一些零星素材。
“加密”嘛,顾名思义,基本就是要别人看不明白本来可以明白的xx,所以,对于我们日常看见的文字,只要让别人看不明白就算加密了。
不同于对其他信息的加密(比如音视频),我觉得对“文字”的加密可以有一个很简单的逻辑: 中文字符就那么几千万把个,但却可以组合成无限量的任意文章,字还是那些字,文章的意思却可以相差天远地别! 回想“活字印刷”时的场景,在排字之前,你能知道排出来的是一篇什么文章么???
所以,文字的加密很简单——把字“打乱”就可以了。——字还是那些字,打乱之后说不定还是另一篇文章哩! 你知道原文是什么吗??——它可能是另一篇不太读得通顺的文章,也可能是那篇本来就不怎么读得通顺的原文。——这样的加密,你如何破解? 怎么算是已经破解了?? 呵呵, 好玩吧?
现在的问题是,怎么把字打乱? 算法是什么——必须要能根据密钥恢复回来(废话)。
时间就是效率,不罗嗦了(感觉像在浪费生命), 这里贴出几个小算法,仅供参考,或提出质疑——是否可靠? 提前谢谢提出质疑者(当然有解决办法就更好了)!
JS 实现:(JS 的底层 Unicode 支持是效率的根本——废话真多!)
算法1: 字符平移法
- (function() {
- var _Charset = {
- 'cjk': [ 'u4e00', 'u9fa5' ],
- 'num': [ 'u0030', 'u0039' ],
- 'lal': [ 'u0061', 'u007a' ],
- 'ual': [ 'u0041', 'u005a' ],
- 'asc': [ 'u0020', 'u007e' ]
- };
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 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);
- });
- };
- })();
-
- })();
用法:
- <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>
密钥是个数组,如果觉得不方便,当然可以用一句话,取每个字符的码值分解成数组了。
算法2:字符错位法
——相当于把一篇文章的字全部打乱随机重排。
- (function() {
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- String.prototype._displace = function( key )
- {
- if (key.length < 16 || this.length < key.length)
- return false;
-
- var _pos = key.length, _buf = new Array(_pos);
-
-
分享到:
相关推荐
js中文加密js中文加密js中文加密js中文加密js中文加密js中文加密
加密js内容加密js内容加密js内容加密js内容加密js内容加密js内容加密js内容加密js内容加密js内容
本资源是对另一篇资源js端加密,后台解密/JS端解密,后台加密的后台版本,已亲测可用,并且加密和解密都可正常执行,注意:本资源中包含AES加密解密,RSA加密解密,以及生成PEM格式的RSA公私秘钥,但是有点没做好的...
js实现加密js实现加密js实现加密js实现加密js实现加密js实现加密js实现加密js实现加密js实现加密js实现加密js实现加密js实现加密js实现加密js实现加密js实现加密js实现加密js实现加密js实现加密
js packer PHP版,加密js源文件文件 js源代码加密
可对文字进行加密解密!双方都要有此软件,输入要加密的内容,发给对方,对方再用此软件解密!
文字加密器 很实用 很强大
javascriptjs加密解密概念[借鉴].pdf
js rsa加密 分段 使用时encrypt 方法名别忘了变为encryptLong
php做的网页加密器,你可以在网页上直接加密解密文字
把文字加密成图片的软件
java文字加密实例
本rsa算法是使用Java与javascript加密解密范例代码,该资料从互联网收集,加上了自己的使用体会,如果对你有帮助那是万幸! js加密部分
JS(javascript)-md5加密工具类
这是初学java时写的一个文字加密器,可用于QQ聊天时把内容加密后发给对方,或者在公共场所把文件内容加密后保存。
作用:可对数据(数字及文字)进行加密、解密 使用方法:首先作为引用将此类加入项目,然后:using 加解密类; 这样设计时可直接类了:JiaJieMi 注:公共变量必须赋值,方可使用,值为:6aaa.cn 其它无任何限制 ...
你想在众目睽睽之下写日记吗? 你是否想向心上人表白而...关闭和换行的时候,编辑框里的文字会自动保存的。 读取程序:还是点那个“✔ ”打开一个文件。写入密码。鼠标左键下翻页,右键上翻页。中间轮子也是可以用的。
js请求数据加密代码加密微信小程序请求数据加密账号密码加密
使用js进行RSA加密算法进行加密,源码免费下载
讲解了javascript_js加密解密的概念