未深入了解过数据加密——我想那应该是科学家们的事。
俺小程序员一个,但喜欢思考,琢磨过“加密的问题”良久良久……(没有最终结果) 这里说说自己琢磨之后的一些想法,仅供茶余饭后 没事瞎想时的一些零星素材。
“加密”嘛,顾名思义,基本就是要别人看不明白本来可以明白的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:字符错位法
——相当于把一篇文章的字全部打乱随机重排。
分享到:
相关推荐
数据加密技术是网络安全的核心组成部分,尤其对于电子商务网站和各类数据库来说,确保数据的安全传输和存储至关重要。本章主要探讨了数据加密的相关概念和技术,包括数据加密标准、公钥密码算法、密钥管理以及加密...
下面我们将深入探讨POST提交数据加密的原理、方法以及HttpWatch工具的使用。 首先,POST方法是HTTP协议中用于向服务器发送数据的一种方式,通常用于表单提交。为了防止数据在传输过程中被窃取或篡改,我们通常会对...
SJL05系列金融数据加密机是国内率先通过国家密码管 理办公室鉴定的基于金融业务主机的应用层数据加密机,主要用于数据加密、消息来源正确性验证、密钥 管理等,为计算机网络系统提供安全保密数据通信服务,防止网上的...
数据加密与数字签名系统是信息安全领域中的核心技术,用于保护数据的隐私性和完整性,以及验证信息来源的可靠性。在本文中,我们将深入探讨这两个概念及其在C++编程中的应用。 首先,我们来理解数据加密。数据加密...
数据加密机使用手册 数据加密机使用手册是介绍主流数据加密机操作步骤、页面配置等内容的详细手册。本手册将指导用户如何正确地使用数据加密机,确保数据的安全性。 1. 操作流程图 数据加密机的操作流程图主要包括...
PCI(Payment Card Industry)数据加密技术是金融交易和电子商务领域中的关键安全标准,它涉及到信用卡和其他支付卡信息的安全处理和存储。本主题将深入探讨PCI数据加密技术的原理、实施方法以及其在实际应用中的...
数据加密技术是保护数据安全的关键方法之一,尤其是在网络资源广泛共享的今天,数据加密成为了确保信息不被未经授权的访问、窃取或篡改的重要手段。本文档“数据加密技术.pdf”深入探讨了数据加密的基本原理、常用...
某软件公司要开发一个数据加密模块,可以对字符串进行加密。最简单的加密算法通过对字母进行移位来实现,同时提供了稍复杂的逆向输出加密,还提供了更加高级的求模加密。用户先使用简单的加密算法对字符串进行加密,...
本实例将聚焦于JAVA数据加密解密的实践应用。 首先,让我们理解加密和解密的基本概念。加密是一种将明文(可读信息)转化为密文(不可读信息)的过程,以保护数据不被未经授权的用户访问。解密则是加密的逆过程,将...
本示例项目"spring(tomcat)前后端数据加密传输demo"提供了一个基于Spring Boot和Tomcat环境的解决方案,用于演示如何实现前后端数据的加密传输。以下是这个项目中涉及的关键知识点: 1. **Spring Boot**: Spring ...
Oracle 透明数据加密(TDE)是Oracle数据库提供的一种安全特性,用于保护敏感数据免受未经授权的访问。TDE能够对存储在特定列或整个表空间中的数据进行加密,确保即使数据文件被盗,数据仍保持安全。以下是关于TDE的...
计算机网络通信安全数据加密技术研究 计算机网络通信安全数据加密技术是现代信息技术的重要组成部分,旨在保护网络通信的安全性。随着网络安全问题的不断出现,数据加密技术作为一种安全性能较高的数据保护技术被...
在IT行业中,数据加密技术是保护信息安全的重要手段。在Delphi编程环境中,开发人员可以利用各种加密库和算法来确保敏感数据的安全性。本篇文章将深入探讨Delphi数据加密技术,包括基本概念、常用加密算法以及如何在...
数据加密是网络安全领域中的核心组成部分,它通过特定的算法将原始数据转化为无法识别的形式,以保护数据免受未经授权的访问。本文将详细讨论两种主要的加密类型:数据加密标准DES和公开密钥密码体制。 1. 数据加密...
云计算安全中的数据加密技术是确保数据在云计算环境中的安全存储、传输和处理的关键手段。随着云计算技术在各行各业的广泛应用,数据安全问题日益凸显,成为云计算发展过程中不容忽视的焦点。本文将探讨云计算环境下...
【基于Oracle数据库的敏感数据加密应用研究】 随着信息化时代的快速发展,信息系统在经济活动和社会生活中扮演着不可或缺的角色。然而,伴随着这种依赖性的增加,信息安全问题变得日益突出,特别是敏感数据的安全...
这个压缩包`JAVA数据加密之sunjce_provider.rar`显然提供了关于如何在Java环境中使用`sunjce_provider`进行数据加密的资源。 首先,让我们了解什么是加密。加密是一种将明文(可读数据)转换为密文(不可读数据)的...
数据加密技术是信息安全领域中的核心组成部分,主要用于保护信息的隐私性和完整性。VB052-数据加密技术源代码集合可能包含了一系列使用Visual Basic编程语言实现的加密算法和相关功能的实例。下面我们将深入探讨数据...