摘要

我身边有几个年龄分布在4-6岁的小朋友。由于他们还都不能熟练地掌握100以内的加减法,所以我原计划的对称加密,在他们看来还是有点难。那非对称加密呢,需要他们能熟练进行三位数的乘法,我想就可以逐步开展了。鉴于此,如果你大学已经毕业,甚至研究生都毕业了,那下面的内容一定是非常容易。好运开始!

前言

看到这个“高大上”的名字,许多人是不是就准备放弃继续看下去了!且听我用“人话”细细道来。

第一个例子

据说康熙打仗时,就用到了加密技术(当然西方那就更早了),边疆将军将军情信息使用事先约定好的方法加密,皇帝使用同样的加密方法(俗称算法),解密[1]。这就是所谓的对称加密!顾名思义,加密和解密使用同样的方法(算法或密码)。而非对称加密,即,加密和解密使用的方法是不相同的。

非对称加密的例子

你心里想一个三位数,将其乘以91,将结果的后三位告诉我,我就能知道你心里想的数字是多少!
你心里想一个四位数,将其乘以73,将结果的后四位告诉我,我就能知道你心里想的数字是多少!
你心里想一个五位数,将其乘以11,将结果的后五位告诉我,我就能知道你心里想的数字是多少!
如:

(1)需要传输:251;加密:251*91=22841;传输的密文:841;解密:841*11=9251;获得实际数据(后三位):251
(2)需要传输:3697;加密:3697*73=269881;传输的密文:9881;解密:9881*137=9251;获得实际数据(后四位):3697
(3)需要传输:56841;加密:3697*11=625251;传输的密文:25251;解密:25251*9091=229556841;获得实际数据(后四位):56841


此处我使用Excel做了一个简单的加密解密工具,使用链接:https://pan.baidu.com/s/1Va54Q2UHVuuJe_fy5EA-hA 提取码: ap6e
具体是什么原因,先卖个关子,待在文章结尾给大家揭晓。

实际的非对称加密——RSA

即将出现大家最讨厌的东西——概念!!
明文:需要加密的信息(如各类军事情报、银行数据等)
公钥:所有人都可以知道的加密密码(这个是最难理解的,也就是说:即使你知道了,也截获了传输中的信息,也是没有用)[2]
私钥:只有需要解密的一方才知道的绝对密码(这个肯定是保存在银行自己手里,其他人是断然不能让知道的!类似例子,你懂的!)
加密算法:就是具体将这些密码如何与需要传输的信息相互作用(需要一种方法的吧——如上例子中的两次乘法操作,实际中这两个方法不一定相同,显然,它很有可能是公开的)
密文:需要保密的数据——明文和密码相作用后的秘密信息(如你和女朋友的羞羞聊天记录——如果你有女朋友的话——传输路线上早被转换成二进制,这个转换过程可以近似看做是一种“加密”)
RSA加密原理:
此处为干货,需要带上你聪明的大脑!

关键技术:

(1)发送的数据:Input
(2)加密方法F1:Input的e次方,再除以N得到余数C;
(3)传输的数据:C
(4)加密密码:e
(5)解密方法F2:C的d次方,再除以N,得到余数output
(6)解密密码:d
(7)获得明文:output;
(8)关键核心:显然以上最关键的是,e,d和N是怎么来的:1)选取两个质数(素数),P和Q,将其相乘,得N;2)y=(P-1)*(Q-1);3)选个数e,其要满足以下条件:比1大,比y小,且要和y互质4)计算一个数d;其要满足以下条件:d =(y*k+1)/e;此处的k是任意一个整数,目的是让d为整数(显然只要的k会有很多,也就可以得到很多满足条件的d,我们只需要取其中一个就行!)[2.5]

至此这个RSA加密的原理就全部完了,是不是还意犹未尽!实际也就这么简单,我们的现在几乎所有的银行系统、射频卡加密系统、XX加密系统都是这个原理。如果你发现这其中的漏洞,那恭喜你,马上就不愁吃住了——全球所有的大国情报系统都会争相把你保护起来——因为你动摇了这个星球的安全系统![3]

RSA安全性

关于此类的帖子到处都是,几乎每篇讲RSA的文章都会说,不再赘述。
在此只做注释,即,RAS的安全性在于,一个足够大的数如何分解质因数,如上即使你破解了C,也知道了N,但是,你如果无法求解出N到底由哪两个数(P和Q),y也就无从知晓,d自然无法求解,然后的然后…仍然后面是凉凉!
(大胆猜测:如果有人实现了一个足够大的数——如主流银行的1024或2048位——如何因式分解的方法,那RSA的安全性就瞬间崩塌了!!你要不要挑战呢?那就从黎曼猜想开始吧!)
其他非对称加密原理也大致如此,只是安全性的机理是其他内容罢了。

写在最后

最后向大家揭秘上面的第一个例子,为什么出现这么神秘的一对数字,加密方和解密方不相同,却可以实现加密与解密。奥秘在于:
91乘11=1001;
73乘137=10001;
11乘9091=100001;
其本质是,加密方和解密方使用的两个算法(乘法),等于原数乘以1,(因为末尾都是1,其余位为0,中间位为0,不影响除了3、4、5位的值),因而实现了非对称加密,是不是觉得非常easy!!
(动脑的小伙伴可以发现类似的许多数:1000001=9001乘101,这样似乎可以为0-999999的数据做此类的非对称加密——思考为什么是从0开始!?)

参考文献:

[1]https://www.bilibili.com/video/BV1GA411s7ZE/
[2] https://www.cnblogs.com/btgyoyo/p/6245618.html
[2.5]https://blog.csdn.net/jijianshuai/article/details/80582187
[3]https://www.bilibili.com/video/BV164411676m?from=search&seid=13745271747718316492
[4]https://www.bilibili.com/video/BV12Z4y1G7rY?from=search&seid=13745271747718316492
[5]https://www.bilibili.com/video/BV1cp4y197AM?from=search&seid=13745271747718316492
[6]https://www.bilibili.com/video/BV1kE411h7ui/?spm_id_from=autoNext

展望

在以后有时间的情况下,下面的内容将会是该篇内容的续集:
(1)RSA中y的求解,即欧拉公式y=(P-1)X(Q-1);
(2)以上算法的编程实现;
(3)判断一个数是否为质数,已经如何分解质因数的暴力求解;
(4)除了RSA的其他非对称加密原理;
(5)尝试构造自己的非对称加密算法[偷笑];
(6)使用动画展示以上过程;
(7)说人话的一篇文章
(8)数学中的“元素周期表”;

(1)非对称加密——RSA——史上最通俗的小白可看懂!相关推荐

  1. 加密基础知识二 非对称加密RSA算法和对称加密

    一.RSA的计算过程 上述过程中,出现了公钥(3233,17)和私钥(3233,2753),这两组数字是怎么找出来的呢?参考RSA算法原理(二) 首字母缩写说明:E是加密(Encryption)D是解 ...

  2. php封装一个加密算法,PHP封装的非对称加密RSA算法示例

    本文实例讲述了PHP封装的非对称加密RSA算法.分享给大家供大家参考,具体如下: 将php的openssl扩展中的非对称加密函数封装成一个Rsa类. 需要注意的是,在windows上,需要打开open ...

  3. IOS 逆向开发(一)密码学 非对称加密RSA

    IOS 逆向开发(一)密码学 RSA 1. 密码学发展简介 2. 非对称加密RSA产生过程 3. RSA 数学原理 3.1 离散对数问题 3.1.1 原根 3.2 欧拉函数Φ 3.3 欧拉定理 3.4 ...

  4. 【工具编写】python实现非对称加密RSA算法

    python实现非对称加密RSA算法 0x01 RSA算法介绍 RSA加密算法是一种非对称加密算法.在公开密钥加密和电子商业中RSA被广泛使用.RSA是1977年由罗纳德·李维斯特(Ron Rives ...

  5. 零基础,史上最通俗视频编码技术入门

    本文引用了微信公众号"鲜枣课堂"的<视频编码零基础入门>文章内容.为了更好的内容呈现,引用和收录时内容有改动,转载时请注明原文来源信息,尊重原作者的劳动. 1.引言 如 ...

  6. pandorabox mysql_GitHub - gy-games/pandorabox: 基于非对称加密(RSA)的私密信息传递工具,数据由本地客户端进行加密、解密操作。...

    PandoraBox | 私密信息传递工具 基于非对称加密(RSA)的私密信息传递工具,数据由本地客户端进行加密.解密操作,密文通过网络进行传输,确保信息的安全性! -- Browse Website ...

  7. Android加密算法之非对称加密RSA

    丨版权说明 :<Android加密算法之非对称加密RSA>于当前CSDN博客和乘月网属同一原创,转载请说明出处,谢谢. 上文<Android加密算法之对称加密AES>提到与对称 ...

  8. c语言字符串非对称加密,RSA算法C语言实现(支持任意位密钥)

    之前分享过三种常用MD5.SHA2和AES加密算法(点这里)实现源码,前三者分别属于哈希加密和对称加密,而另一种很常用的非对称加密RSA算法实现这次分享出来.RSA算法的原理和用途大家可以网上自行搜索 ...

  9. 非对称加密RSA文本和Excel文件加密练习

    package com;import cn.hutool.core.codec.Base64; import cn.hutool.core.io.FileUtil; import cn.hutool. ...

最新文章

  1. MySQL 学习笔记(12)— 数据类型(定长字符、变长字符、字符串大对象、数字类型、日期时间类型、二进制类型)
  2. 数据蒋堂 | 倍增分段技术
  3. 如何分享文件_分布式文件存储系统如何分享文件
  4. java初始化变量n_java中预构造函数初始化变量的属性
  5. Mybatis-Plus的SQL语句组拼原理
  6. VSTO简介及简单使用
  7. java各种优秀开源库收集
  8. chm文件打开空白或显示不全
  9. 低电平译码器LS138设计
  10. CSS图片上面放文字实现方式
  11. 【转】MIT博士林达华解说数学体系
  12. border-radius(使用详解)
  13. 月薪五万,996真的就像呼吸一样自然吗?
  14. 连接数据库失败提示hba.conf不符合的处理方法
  15. 保暖防风又抗冻 春节出游当然要选头戴式耳机
  16. 家庭新成员:德牧听泉
  17. 一步一步教你写股票走势图——K线图三(添加均线)
  18. 如何设计神经网络结构,visio画神经网络结构图
  19. Python数据库操作【三】—— SQLServer
  20. ipa在线安装搭建_TF签名如何上架?苹果TestFlight APP如何安装?

热门文章

  1. python机器学习库sklearn——岭回归(Ridge、RidgeCV)(L2正则化)
  2. 《基于CapsNet的汉字字形表征模型》文章理解
  3. Perceptual Losses for Real-Time Style Transfer and Super-Resolution 运行程序
  4. 【架构】大型网站优化技术思路
  5. Anacoda 介绍、安装、环境切换
  6. php multicast多播实现详解
  7. Struts2之类型转换器
  8. 8/7排位赛,codeforces501
  9. android平台开发的安装
  10. 使用手机访问电脑上写的网页