hagmhsn的个人博客分享 http://blog.sciencenet.cn/u/hagmhsn

博文

MHSN加密算法

已有 2043 次阅读 2015-11-9 15:06 |系统分类:科研笔记


(一)事情的来由


电子邮件(email)逐渐成为现代人的生活中不可或缺的部分,一位坐办公室的白领,一天内若处理不上几十条的email都不好意思跟同事打招呼了。email来往增加了我们的便利,可不经意间,我们发现自己的网络浏览器里总是蹦出来广告浮窗,而其中的内容竟然与我们最近发的email内容有些关联。是的,我们的email被人偷看了。当然,这事早已经不是什么秘密,Gmail在产生伊始就大言不惭,用户的email会被它扫描的,其目的就是为了广告的精准发放。广告是否真能精准发放是商家关心的事,对于我们普通人来说,自己的私密信件被别人(或者说机器)明目张胆地阅览的确是很不爽但也很无奈。最烦人的是,机器会在你的email里断章取义,搞些不伦不类的关键词让你恶心,这使得我们非常期望能找到一种方法来杜绝这种email被扫描的尴尬。记得前些年,实验室里要搭建一套光化学反应器。光化学反应器多是高功率的汞灯,弄不好会引起火灾的,至少也会给学生带来视觉伤害。有一段时间里,我和多个仪器设备供应商email来往频繁,希望他们提供合适的“光化学反应安全套件”。那段时间里,我的网络浏览器里总是漂浮着令人尴尬的浮窗。OK,如果你的脑海中已经描绘出我当时遇到的尴尬,恭喜你的中文水平已经和机器打成了平手~~


前两天,在学院的学位分委员会上,一位老师提到了一个让我难以设想的现象。有的学生为了避免学位论文查重超过阈值,将学位论文设为两个版本,一个是正常的打印送审版,一个是查重版。在查重版里,这些学生将句子篡改得乱七八糟,然后......你懂的,这些不像人话的“学位论文”都轻易通过了查重。我们都知道查重(至少现在的查重)的原理只是让机器去扫描学位论文,然后和已有的文献数据库进行比对。正常的句子总是相似的,而不像人话的句子则各不相同(这里似乎重合了哪句名言?)。在“佩服”这些学生的“创举”之余,我想到了我一直关心的这件事,可不可以用一个简单通用的加密算法把我们的email文本在邮件客户端里篡改得乱七八糟,然后在收件方的客户端里通过逆运算还原?我回想了自己在二十多年前创建的MHSN加密算法。


(二)MHSN加密算法的前世今生


说到加密算法,那都是些高大上的东东,譬如曾获过图灵奖的RSA算法。把我的MHSN称呼为“加密算法”实在是因为我找不到更合适的词,原谅我这语文总在及格线附近~~(顺便怀念一下家驹)。


MHSN加密算法产生于我迈入高中那一年,26年弹指一挥间~~~


记得在某个70后回忆集锦里有一样物事是带锁的笔记本,相信我们这一代人都知道那是啥,因为大多数人有过写日记的经历,而带锁的笔记本铁定是当年的日记本,带上锁就是防止别人偷看。我在写日记时也有过类似的心态(咱也曾年轻过~~),但是我没有选择带锁的笔记本,原因有三:一是带锁的笔记本太贵,二是笔记本上挂个锁不美观(至少不简洁),最重要的是我觉得这种加密方法太普通,没有唯一性,于是我创建了MHSN加密算法。这个方法其实也很简单,就是将段落和页码按照一定的规律错乱开来,让你看着前言不搭后语,实现了加密的效果。时光荏苒,岁月无情地给我们证明,不论是带锁还是加密,其实都没啥用。因为你的日记总归逃不了“读者=作者”的宿命,除非你是雷锋、拉贝抑或可怜的安妮。嗯,我的日记的命运略好一些,在尘封了近十年后,它们迎来了第二位读者,就是我的爱人。爱人饶有兴趣地翻看了几页,却看不出所以然。我在一边眉飞色舞地说,知道为什么看得奇怪吗,我这是用算法加密过的!爱人意味深长地说,你的字体本身就是加密的呀~~看着自己当年潦草的字体(当然现在也没好多少),我心下里暗说,达令,你赢了~~~~


(三)MHSN加密算法


我们这一代人都是被“1+2”的故事熏陶过的,也多多少少为素数合数啥的痴迷过,估计也有不少人曾梦想摘取皇冠上的那颗明珠。我在纯数学方面的“造诣”仅仅止于素数这个概念,借用大伙熟知的一句话“Chemistry is really Physics, Physics is really Math, Math is really hard!”我深知自己的数学天赋有限,最终选择了这句话里离“hard”最远的一个方向。为此,MHSN加密算法里也没有什么高大上的数学概念,只有些素数,很小很小的素数。


书归正文,MHSN加密算法实际上就是四种数字重新排位的方法。记得当初选择这四个字母是很有讲究的,是我辛辛苦苦地从《山海经》、《逍遥游》等书中选出四种上古时期奇花异草珍禽怪兽的名字,它们的脾性或者相貌和这四种排列方式有天然相似之处,于是它们汉语拼音的首字母M、H、S、N横空出世。具体这些花草禽兽原本是啥我已经想不起来了,十四岁时的我思维跳脱,完败而今四十岁的我,嘿嘿。


排位的基本方法是将每个素数和素因子不超过这个素数的数归并为一组,称为素数组,按照素数的大小以及素数组内数字的大小以顺顺,顺反,反顺和反反形成四种排位算法。以数字1~32的排位为例,每个中括号内为一个素数组:


M加密算法:1,{2,4,8,16,32},{3,6,9,12,18,24,27},{5,10,15,20,25,30},{7,14,21,28},{11,22},13,17,19,23,29,31

H加密算法:1,{32,16,8,4,2},{27,24,18,12,9,6,3},{30,25,20,15,10,5},{28,21,14,7},{22,11},13,17,19,23,29,31

S加密算法:31,29,23,19,17,13,{11,22},{7,14,21,28},{5,10,15,20,25,30},{3,6,9,12,18,24,27},{2,4,8,16,32},1

N加密算法:31,29,23,19,17,13,{22,11},{28,21,14,7},{30,25,20,15,10,5},{27,24,18,12,9,6,3},{32,16,8,4,2},1


譬如,对“排位的基本方法是将每个素数和素因子不超过这个素数的数归并为一组。”这个共计32个字符的句子进行S加密算法的操作后就变为“组为素超子数个个法和这并本每素过的一的方将素不数归位基是因。排”,可以看出,只需一个简单的重新排位操作后,就已经不像人话了~~。对其进行S-1解密操作,将“组”字回归到第31位,“为”字回归到第29位等等后,我们又得到了原始的句子。


在这里,当字符总数发生变化时,排位算法的结果也会发生变化的,我们需要将字符总数也考虑进去,为此一个完整的操作符应该是这样的,如S323M321为对总共32个字符的句子进行连续三次S加密操作后再进行一次M加密操作。如果需要找回原始内容,则只要对其实施M32-1S32-3即可。


熟悉我的人都知道,我的email地址里有几个奇怪的字母。你猜对了,就是mhsn,我的个人标识码。在互联网上,如果你输入“胡爱国”,也许找到的不是我或者是和我无关的网页,而如果你输入hagmhsn的话,so far,都和我相关,呵呵。当然了,请科学网的网友们手下留情,保留这七个字母组合的唯一性~~~


(四)MHSN加密算法的应用


考虑到严谨性,我想我应该写成MHSN加密算法的(potential)应用,以和我们常规的科学论文写法保持同样的步调~~~


首先,建立一个MHSN算法的数据库,不需要很大,只要满足字符总数1K的要求即可。我们通常写email是不会长篇大论的,1000个字符(程序猿眼中应该是1024个)应该满足绝大多数人的需求了。粗略估计一下,这个数据库也就几个MB就足够。如果出现了长篇的email也没关系,将它分割成几块独立处理即可。


然后,在email客户端,如Foxmail中嵌入一个加密插件。写邮件还是按正常模式写,写好后,选择加密选项,如256M1S3N-2,意思是将email中文本按每256个字符进行切割,每一个切块进行一次M操作接三次S操作和两次逆N操作。此时,你的email已经变成了由一堆无关字符堆砌而成的天书。Foxmail客户端将此“天书”通过邮件服务器发送给对方。收件方收到“天书”后,按照这个约定的密钥进行恢复操作,即可阅读你的原信。当然,如果全部按照这个程序走,会让大家用起来觉得很烦。由于我们的目的只是避免邮件在离开我们自己的电脑至到达收件方的电脑之前被”偷看“,为此,软件完全可以设计得不影响我们正常收发邮件习惯。在Foxmail客户端里,增加一个”MHSN加密发送“选项,客户端在将email传输至邮件服务器前,先随机选择MHSN加密算法对文本进行重新排位操作,同时在邮件里嵌入加密算法的代号(如M2561S2561)。从前面的示例可以看出,只要进行一两个MHSN加密操作,邮件的文本内容就已经面目全非了。收件方的email客户端检索到邮件中存在的这个代号,即自动按照逆操作对邮件文本内容进行还原。实现这个目标的前提是,收发双方都在用使用同样加密算法的email客户端。考虑到Foxmail等email客户端已经非常普及,这一点解决起来应该不难。当然email客户端也可以在email中加入”本邮件已经过Foxmail9.0的MHSN加密操作,您可以使用S256-1M256-1对邮件进行解密,或者下载最新版的Foxmail自动解密“之类的句子,还起到推广这款软件的作用,呵呵。


这里多次提及Foxmail,有点广告贴的嫌疑。不过,非常感谢Foxmail和它的创始人张小龙先生,让我得以保存下来近10年的所有重要email,我想在这里给Foxmail打点广告也应该不为过分。


(五)MHSN加密算法的更多


我们看到的各种各样的电子文件,管它后缀是啥,总归是由1和0组成的,如果把这些1和0组成的字符串进行切块、重新排位处理,是否也可以实现所有类型电子文件的加密?嗯,咱是电脑小白,就不献丑了......



后记1:关于查重作弊的问题,大家不要担心这个帖子误导年轻人们。我们学院已经注意到这个现象可能的危害,从下一年度起,查重只接受经过研究生导师审核,从研究生导师邮箱发过来的毕业论文电子稿。


后记2:咱一向喜欢保持关键文档的唯一性和保密性。出去参加评审活动时,主办方一般会让大家先在一张草稿纸上排序,然后将确定的排序誊写在正式打分表里,临走时,主办方总是以保密的原因要求大家将那份草稿纸留下了。对于我而言,一直不存在这个问题,因为我的打分草稿表从不是按照ABCD这样走,而是经过加密的。譬如说有一次,主办方要求大家打八个级别的分,大伙多是ABCDEFGH或者是A+,A-啥的,而我的打分表上却是AEGHINWZ八个字母。为啥?因为当时的那个主持人叫张伟,便即兴用了他姓名拼音的八个字母(ZHANGWEI)。在这个体系中Z是最高分,A则只排第三。有一年研究生面试,一位没被我录取的学生过来说,我记得您在和我们几个讨论后在每个人名字后面写了一个字母,应该是用来打分的。为什么我是A您没有录取,而某某某是B您却录取了。我说,因为在和他们面试前刚刚和博士生讨论过科研工作,讨论最多的是我们做的Bergman环化反应,便即兴用了这七个字母。在这里B是排第一位的,而A则排第六位。那一次统招中,我最多可以招收三名研究生。


后记3:想来,我所谓的”MHSN加密算法“在方家眼里不值一哂。请谨慎拍砖,谢谢~~



http://blog.sciencenet.cn/blog-72447-934430.html

上一篇:研究生招生季的随笔

1 陈南晖

该博文允许注册用户评论 请点击登录 评论 (2 个评论)

数据加载中...
扫一扫,分享此博文

Archiver|手机版|科学网 ( 京ICP备14006957 )

GMT+8, 2019-10-17 16:18

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部