ebooksgratis.com

See also ebooksgratis.com: no banners, no cookies, totally FREE.

CLASSICISTRANIERI HOME PAGE - YOUTUBE CHANNEL
Privacy Policy Cookie Policy Terms and Conditions
平形加密法 - Wikipedia

平形加密法

维基百科,自由的百科全书

目录

[编辑] “平形”加密法

  ——当事物失去特征时,你将无法描述,也无从辨别。

  文章中,当某些替换成不同的字后,你如何理解文章的内容?两种可能:一是被误导,二是不知所云。当大量常用的字都被替换了,你能有办法复原文章的内容吗?答案是:No passable!因为它很可能是另一篇文章。


[编辑] 加密原理

用一个串(密钥)循环平移文章中每一个字,使得有含义的文章变成无含义它义的文字。由于平移后密文仍为正常的文字,所以密文仍可以像普通文本一样正常传输、压缩、甚至加密。
[注]:这一般仅适用于字含义的加密,对于含有逻辑结构信息的代码文档意义不大。

[编辑] 加密要素

原文 + 密钥 + 字表 = 密文
字表:的集合,用于枚举需要加密的字符。变数:字、字数、字序。

[编辑] 算法约定

(以最简单为原则)
  1. 密钥为值数组,数组单元称为密钥,单元值称为钥值。
  2. 原文中的处于字表内的字称为待密字,该字在字表中的序号称为字值。
  3. 逐字地,用密钥钥值对待密字值加值变换,取模值为替换字在字表中的位置,替换字即是密字
  4. 密钥值串循环使用(连续,无跳跃),直至待密字处理完毕。

补充说明
  待密字值其实也可以直接采用字符本身的值,同时约定一个固定的字表,如中文GB2312的一级简码区汉字,这样会使得计算更简单。但如此字值就与编码有关,同时字值也必须是连续的。为通用性,此设计字表为任意的字集合,字值取它在字表中的序号。

[编辑] 字表方案

整集
即原始文本包含的所有字符。依不同的文档而有区别,但一般地,英文文本应该肯定包含[a-zA-Z]52个字母。
特集
任意指定的字集。可能仅包含一些用户觉得必要的字的一个小的集合。或者,随机的取整集的一部分。(推荐)
标点集
文章中,常用标点和空格(西方语言)起着断句和分词的作用,这明确地表达了文本的结构信息,明显地,密文应该隐藏这一信息。所以作为推荐,这是一个应该必须包含的集合:
半角空格、半全角逗号[,,]、句号[.。],计5个字符。
可选的,还可以包含:
冒号(::)、引号("“”)、分号(;;)、顿号(、)、书名号(《》)等等。
另外,根据文本的特点或需要,还应该包含如下有明显前后关联意义的符号:
-> 标示前后可能是数字的百分号(% %)、运算符(+ - * /)、货币符号;
-> 在现代信息世界里传达URI信息的正斜杠(/)、邮件地址符(@);
-> 代码世界中常用的逃逸字标识符反斜杠(\)、xml实体标识符(&)等等。
全集
包括文档所属语言的全部有效字符,不推荐。它除性能不佳外,加密效果(迷惑性)也不好。
子集
相对于规范的编码系统命名,如中文的一级简码区汉字。

补充说明
  由于算法极为简单,如果字表公开,我们可以直接从原文和密文得出密钥。而在某些情况下,字表是应该公开和通用的。所以,我们不应该去加密已经被知道原文的信息,因为这样就等于告知了我们用于变形的密钥(呵呵,当然,既然原文已经被知晓,那也就没有去加密的必要了)。
  加密的原始信息应该是破解者未知的,或是可变的。如银行帐号,它可能由可变的数字和固定的前缀字符组成,而前缀字符肯定广为人知,如果对这固定的前缀字符也加密,同时用于该算法的字表为公用,当破解者怀疑你的密文是银行帐号时,他就可以轻易地解出用于这几个固定字符的密钥。

[编辑] 应用提示

1、不推荐字表中包含换行符。
  换行符普遍存在于一般文本中,它让文本看起来清晰而有条理,但由于字符变换的随机性,所以会有大量的换行符被替换成非换行符,使得变形后的密文行数大量减少。这样既使得文本杂乱,同时也降低了密文的迷惑性。
  如果换行符不在替换的候选字符中(字表),我们甚至可以编辑密文——如删掉多余的空行而不会影响后来的解密过程。(当然,可以删掉所有不在字表中的字符而对解密无影响,但要记住众多不在字表中的字符应该是困难的,而且也好像无此必要?)
2、加密后的文件大小可能会有些变化(虽然字符数没变),它取决于文本的编码环境和替换字有哪些。
  在多字节编码环境中(如MBS或UTF-8),如果我们在一个字表中同时包含单字节字符和多字节字符,则对于单字节字符较多的原始文本,变形后的密文文件会增大。而对于多字节字符占绝大部分的原始文本,则很可能密文文件会稍小一些(不会小太多,因为相对于单字节字符,多字节字符数量要庞大得多)。
  所以,如果很在意文件的大小,可以另外定义一个只包含单字节字符的字表,而多字节字符定义在另一个字表中,两者不同字。然后对原始文本参照两者各处理一次即可。这样,文件大小基本上就不会有多少变化了。

[编辑] 参考文献

  • 黄忠惠 《平形加密法》 2005.12.30.(本人创作并声明为GNU FDL版权)


aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - bcl - be - be_x_old - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - co - cr - crh - cs - csb - cu - cv - cy - da - de - diq - dsb - dv - dz - ee - el - eml - en - eo - es - et - eu - ext - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gan - gd - gl - glk - gn - got - gu - gv - ha - hak - haw - he - hi - hif - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kaa - kab - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mdf - mg - mh - mi - mk - ml - mn - mo - mr - mt - mus - my - myv - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - quality - rm - rmy - rn - ro - roa_rup - roa_tara - ru - rw - sa - sah - sc - scn - sco - sd - se - sg - sh - si - simple - sk - sl - sm - sn - so - sr - srn - ss - st - stq - su - sv - sw - szl - ta - te - tet - tg - th - ti - tk - tl - tlh - tn - to - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu -