资讯专栏INFORMATION COLUMN

永强教你加解密:对称篇(一)

opengps / 849人阅读

摘要:大家好,我是永强,就是老李之前经常给你们说的区块链大神大学肄业却依然大公司主程一波儿流只生活在老李口中尚未真实露面的骗钱高手老王的左膀右臂赵永强。

大家好,我是永强,就是老李之前经常给你们说的区块链大神、大学肄业却依然大公司iOS主程一波儿流、只生活在老李口中尚未真实露面的骗钱高手、老王的左膀右臂 ——— 赵永强。我和尼古拉斯赵四之间并没有什么强关联,我只是单方面认识他而已。

之前老李企图让我发表一些关于如何进行高端骗工资骗钱的教程,被我义正言辞地拒绝了:

                   毕竟是毕生绝学,不能就这么轻而易举地教给你们

不过后面有时间我可以给大家出一些关于“如何在公司混日子还能升职加薪”的入门级教程,传男不传女,独家绝技!敬请期待!

言归正传,那个一直以来我对加解密技术都是耿耿于怀的,因为很多年前有一次面试中被这东西给坑掉了,虽然我后来就自己对加解密中一些自己不懂的地方请教了对方而且他也没有给我讲清楚…

事情都过去好几年了,本人自我感觉已经一定程度掌握了一些关于加密的高端技术,因为决定出来装一波儿逼,时间比较紧张,我打算赶在2020年农历新年之前把逼装完,你们要注意配合。

我知道老李之前在社区发表了一些关于加密啊、解密啊之类的东西,甚至还扯上了什么DH什么ECDH,又是质数又是椭圆曲线,不过这并不与本系列产生冲突,这并不重要,不要在意这些细节,他那个too young too simple,sometimes naive…

这将是一个大概由四篇左右的文章组成的系列文章,所以在正式开始之前,我不得不强调一点 ——— 如下这几门学科的基础理论知识:

《离散数学》

《微分与积分》

《空间几何》

《概率论》

你并不需要具备。。。

不过你总得知道除了html和css之外的任意一门编程语言。尽管本人精通上到CLanguage下到Perl之类的各种语言,但是本文将采用世界上最好的语言进行一些程序演示,后面老李可能会使用CLanguage和Golang进行其他语言的演示补充。

简单说来呢,加解密技术就是分为两大类:

对称加解密

非对称加解密

其中,常见的对称加解密算法有DES、3DES、AES;而非对称加解密技术比较典型的则是RSA,就是什么公钥私钥证书什么乱七八糟的。

我们先从对称加解密开始,粗暴地说呢,对称加解密就是“加密和解密的时候用同一个密码”,听起来就非常对称,有没有?

用图表达一下就是:

最一开始的时候,我朝人民一般都是倾向于使用“天王盖地虎”,“宝塔镇河妖”这种加解密技术;然而,美帝用了一种叫做DES的技术进行对称加解密,这玩意一度成为业界通用的对称加解密技术,银行、五角大楼都爱用这玩意,可惜好景不长、世风日下、世态炎凉,这玩意的破解成本越来越低越来越低~~ 于是,为了续命,就又有一些白胡子老头给DES打补丁,缝缝补补搞出来一个玩意叫做3DES,继续用,又不是不能用…这个顾名思义就行了,别打我,真的:3DES就是用DES处理(注意是处理,我没说是加密)了三次的意思。就目前看来,3DES实际上用的可能也并不是十分广泛了,所以如果大家在选择对称加解密技术的时候,尽量避开DES和3DES就可以了。

呵呵,喜新厌旧的沙雕人类…虽然DES已经没人用了,但毕竟也是辉煌过,我觉得还是得动手表演一波儿。我们知道,在php7里,原来的mcrypt系列加解密已经被放弃掉了,官方建议我们使用openssl系列来进行加解密,所以确保你的PHP环境里安装了openssl标准扩展。


文件保存成test.php后,执行一把:php test.php | grep des,结果你们感受一下:

其中带有ede的,比如des-ede*这样的就表示是3DES。还有这么多奇奇怪怪的后缀是什么含义?回头再说…又不是不能用。

筛选一下,我们看des(非des3)有几种带着尾巴的具体方法:

des-cbc

des-cfb*(注意后面的通配符星号)

des-ecb

des-ofb

我们先用传统des方法继续进行装逼表演:


保存为test.php执行一把:

完美!就像老王的meshbox一样,完美!

简单解析一下:

换个方法继续一下:我们使用openssl_get_cipher_methods()函数获取到可以使用的所有des加密方法,然后简单判断一下我们选用的方法是否在其中;紧接着我们用123456作为密码,helloMOTO作为明文内容,openssl_encrypt()就是加密函数,openssl_decrypt()就是解密函数,具体的函数原型出门左拐查手册,总之一切都是这么的完美!


执行一波儿,结果如下图:

并不完美,报错了,一个warning级的错误,虽然并不影响加密和解密,但是毕竟是报错了,错误原文我复制粘贴过来,你们感受下:

PHP Warning: openssl_encrypt(): Using an empty Initialization Vector (iv) is potentially insecure and not recommended in /home/ubuntu/lab/test.php on line 10

大概意思就是:用了一个并不推荐而且不安全的空iv在test.php的第十行。我正在翻译的这句的时候,已经精通英语的老李在旁边跟我说“你这翻译也太硬了,要学会人性化,看好了,一看你这就是没上过全日制大学本科的恶果”:

PHP警告:openssl_encrypt():iv向量最好别是空的,不推荐这么用,而且这样并不安全~

什么是iv向量?先抛开这个问题,我先写一段代码,让他能跑起来:


注意到8、9、10和15、17两行,均为iv向量做了改动,然后这次代码保存了运行一波儿:

完美!就像老王的meshbox一样,完美!

那么,在des加解密中,我们遗留了两个问题:

des-cbcdes-cfb等这些后缀是什么意思?

iv向量是什么鬼东西?

长按或许有惊喜

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/31702.html

相关文章

  • 永强持续你加解密对称(二)

    摘要:但是给永强留下了面积巨大的心理阴影。所以永强本来昨天要发的文章拖到了今天,但是永强实在是怕了,他怕被人喷了被人骂了。 永强被吓坏了!因为永强看到了某个微信群有人指出公众号里上篇打酱油附送的那篇文章《震惊!北京一男子竟然用swoole做了这种事!》的内容实在是太low了,这种low文章就不要拿出来发了。 但是给永强留下了面积巨大的心理阴影。他尚未见识过社交网络的恶毒嘴脸。 所以永强本来昨...

    kk_miles 评论0 收藏0
  • 关于PHP加解密的懒汉入门(API安全加强)

    摘要:由于密钥被暴露了,所以必须换新的密钥,元首这会儿只能走途径告诉古德里安新的密钥,这会儿逗逼的事情来了,如何对密钥进行加密。但是,有一点是值得说明,那就是无论是对称加密还是非对称加密,都顶不住用机器是强行暴力猜解私钥。 懒汉 入门 这两点就足以说明这篇文章不想要着有什么高端大气的技术内容,我跟你讲,全是水。不可能有什么质数素数、椭圆曲线加密、迪菲-赫尔曼什么的,不可能有的。 首先我不...

    waterc 评论0 收藏0
  • SpringCloud(第 031 )配置客户端ConfigClient链接经过对称解密的配置微

    摘要:添加应用启动类配置客户端链接经过对称加解密的配置微服务专门为测试经过对称加解密的配置微服务微服务模块。 SpringCloud(第 031 篇)配置客户端ConfigClient链接经过对称加解密的配置微服务 - 一、大致介绍 1、Git服务端的文件内容进行了加密处理,那么是不是配置客户端拿到内容之后需要解密呢? 2、答案显然不是的,因为这样解密的话,先不说实现起来的难易程度,单从表面...

    DDreach 评论0 收藏0
  • SpringCloud(第 033 )配置客户端ConfigClient链接经过对称解密的配置微

    SpringCloud(第 033 篇)配置客户端ConfigClient链接经过对称加解密的配置微服务 - 一、大致介绍 1、在(第 031 篇)讲解了如何链接对称加密的配置服务端,而链接对称非对称加密的配置微服务也是同样的; 2、配置客户端不需要做什么加解密的配置,加解密的配置在服务端做就好了; 3、这里还顺便列举下配置路径的规则: /****************************...

    ARGUS 评论0 收藏0
  • 关于PHP加解密的青年抬高(API安全加强二)

    摘要:实际上这一篇和上一篇均可以看作是关于加解密的懒汉入门篇安全加强篇一的后续,只不过侧重点在于安全上。回到上篇结果提到的问题,就是对称加密的安全性要人命,非对称加密的性能非常要人命。元首作为高智商罪犯,这种低级错误是不可能犯的。 为什么标题总是要带上API安全关键字呢?因为我想我乐意。 实际上这一篇和上一篇均可以看作是《关于PHP加解密的懒汉入门篇(API安全加强篇一)》》)的后续,只不过...

    wujl596 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<