密码学

算法第一章作业

爷,独闯天下 提交于 2019-11-28 22:49:42
1.在算法设计与分析课程中,我将采用C++进行编程,相关编程规范的链接为https://www.jianshu.com/p/df03f2def39d。 2.吴军博士的《数学之美》一书中有提到:“数学是解决信息检索和自然语言处理的最好工具。它能非常清晰地描述这些领域的实际问题并且给出漂亮的解决办法。”这句话侧面映射出算法在软件开发中的作用,因为算法是将数学模型转化为一段程序代码后的产物。例如书中所提及的:使用图的遍历算法,可以从任何一个网页出发自动地访问到任何一个网页并把它们存起来,完成这个功能的程序叫做网络爬虫,在一些文献中也称为"机器人"。至于算法的重要性,吴军博士在书中说:“我认为,在计算机中一个好的算法,应该向阿卡 47 冲锋枪那样简单、有效、可靠性好而且容易读懂(或者说易操作),而不应该是故弄玄虚。”就拿密码学来举例,密码学在现代所涉及的领域或者说行业都是比较广的,缺少了这一门学科,人们的生活就少了一份安全保障,而当今的密码学就是以数学,准确来说是由数学衍生的算法为基础的;再者谈到全球导航,也是与我们的生活息息相关的,而它的关键技术之一:根据用户输入的起终点,在地图上规划最短路线或者最快路线所依赖的就是计算机科学图论中的动态规划(Dynamic Programming)的算法。 根据网上的相关文章,再结合博士的《数学之美》,总的来说算法在软件开发中的作用就是

本体技术视点 | 区块链的恐慌来了?

时光怂恿深爱的人放手 提交于 2019-11-28 12:47:50
上个月末, Google AI Quantum 等机构发布的一篇关于量子计算机进展的论文 《Quantum Supremacy Using a Programmable Superconducting Processor》 引起了巨大反响, 量子计算机 以其远远超越经典计算机的计算能力得到了广泛关注。而这种超级计算能力也给区块链领域带来了一丝恐慌,各个社区纷纷开始担心量子计算机会成为区块链底层密码算法的致命威胁。 图 | 网络 一、引言 量子计算机正成为新兴计算机的一个发展方向。虽然量子计算机目前还没有成为现实,但也在一步一步地努力实现中。早在2015年,IBM 的研究员在位于纽约的实验室中就建造了一台有5个量子比特的量子计算机,并向公众发布免费量子计算云服务,让所有人都可以使用这5量子比特的量子计算机。在2019年度国际消费电子展上, IBM 展示了一台 量子计算机 IBM Q System One 模型 。据报道,IBM 将很快为其 IBM Q Network 的客户提供53量子比特的量子计算机。而 谷歌 在2018年美国物理学会年会上推出的 Bristlecone 量子计算芯片有72个量子比特。另外, D-Wave 也在推出其 下一代的量子退火计算机 。 这一切迹象表明量子计算机正在悄然而坚定地向我们走来。据 美国国家标准与技术研究院(NIST) 预测,在十五年左右的时间内,

对称加密算法及对称加密算法

情到浓时终转凉″ 提交于 2019-11-28 05:55:23
对称加密:双方使用的同一个密钥,既可以加密又可以解密,这种加密方法称为对称加密,也称为单密钥加密。 优点: 速度快,对称性加密通常在消息发送方需要加密大量数据时使用,算法公开、计算量小、加密速度快、加密效率高。 缺点: 在数据传送前,发送方和接收方必须商定好秘钥,然后 使双方都能保存好秘钥。其次如果一方的秘钥被泄露,那么加密信息也就不安全了。另外,每对用户每次使用对称加密算法时,都需要使用其他人不知道的唯一秘 钥,这会使得收、发双方所拥有的钥匙数量巨大,密钥管理成为双方的负担。 在对称加密算法中常用的算法有:DES、AES等。 AES:密钥的长度可以为128、192和256位,也就是16个字节、24个字节和32个字节 DES:密钥的长度64位,8个字节。 非对称加密:一对密钥由公钥和私钥组成(可以使用很多对密钥)。私钥解密公钥加密数据,公钥解密私钥加密数据(私钥公钥可以互相加密解密)。 私钥只能由一方保管,不能外泄。公钥可以交给任何请求方。 在非对称加密算法中常用的算法有: RSA、Elgamal、背包算法、Rabin、Diffie-Hellman、ECC(椭圆曲线加密算法)。 使用最广泛的是RSA算法,Elgamal是另一种常用的非对称加密算法。 缺点: 速度较慢 优点: 安全 1.分类 加密算法首先分为两种:单向加密、双向加密。 单向加密是不可逆的,也就是只能加密,不能解密

【密码学】AES简单学习

本秂侑毒 提交于 2019-11-27 20:48:03
欧拉函数 公式 φ(n)=(p-1)(q-1) 小于x并且和x互质的数的个数 相关概念 因数:a*b=c 那么就称 a、b 是 c 的因数 素数:一个数如果除了1与它本身之外没有其他的因数,那么这个数就被称为素数(prime) 公因数:共同的因数,比如 8 和 10 的公因数是 2、1,最大公因数是 2 互质:最大公因数是 1 例如:7、3,最大公因数是 1,他们互质 gcb(7,3)=1 φ(10)=4 (1,3,7,9) 对于公式的解释 p、q 都是素数,例如:10,p、q 分别为 2、5,φ(10)=(p-1)(q-1)=(2-1)(5-1)=4 取模运算 如果存在正整数 m 与两个整数 a、b,如果 a-b 能被 m 整除,那么 a 和 b 模 m 同余 记作:a ≡ b mod(m) 模指数运算 先进行指数运算,在进行取模运算 记作:a ≡ bⁿ mod(m) python中处理函数 pow(x,y,z) 意思是计算x的y次方,如果z存在对结果进行取模 等效于pow(x,y)%z 欧几里得拓展算法 对于不完全为0的非负整数a,b,gcb(a,b)表示a,b的最大公约数,必然存在x,y使得gcb(a,b)=ax+by 证明: 假设 a>b   1、显然当 b=0,gcd(a,b)=a,此时 x=1,y=0;   2、ab!=0 时,设 ax1+by1=gcd(a,b);  

网络安全 与 加密算法

大兔子大兔子 提交于 2019-11-27 07:12:33
计算机中的网络安全 在本篇中介绍了以下几个方面: 机密性 密码学 对称加密算法(DES, 3DES, AES) 公开秘钥算法 RSA大素数的获取 完整性 散列函数(MD5, SHA-1, 并没有提及算法实现) 报文鉴别(MAC) 数字签名 端点鉴别 应用 SSL(TCP网络安全) 运行时安全 防火墙的基本知识 主要体现在以下几个方面: 机密性, 即发送的信息只有双方彼此能够解读,其他人以任何方式皆无法解读。 报文完整性, 即接收方需要能够验证,当前接收到的数据是完整的,没有被经过篡改的。机密性与完整性是相互独立的两个属性。 端点鉴别, 需要知道我收到的消息, 确确实实是来自于对方, 而不是恶意方伪装的。 运行性安全, 需要能够识别并阻拦恶意攻击。如 Dos攻击等, 其目的并非为了窃取信息,而是使得系统瘫痪, 无法运行。 机密性 首先来看机密性问题, 小明和小红之间发送的有效信息 不希望被第三方解读。 而实现这点的方式自然是, 加密, 加密,就需要相关的密码。 密码学 加密所要实现的根本目的是,将数据加密,除非拥有相关的秘钥,算法,才能够 也 必须能够 将数据恢复到 原始数据。 这里的原始数据被称作 明文 , 小明使用了 加密算法 加密其明文, 生成的文本为 密文 , 加密算法是公知的,而 秘钥 是私有的. 对称秘钥体系 凯撒密码 是一种简单的加密算法。 对于字母而言, 约定 用

[转]走近0day

谁都会走 提交于 2019-11-26 12:43:00
首先,需要大家端正一下学习态度-也就是对于破解的态度.每一个有一定修为的软件破解者,也就是CRACKER,都很清楚,我们破解掉软件的序列号,功能限制,时间限制等等东西都不是最终的目的,一个真正的CRACKER追求的是一种技术上的极致,一种对技术的无限渴望.不允许软件作者在它的软件里面留下一个充满未知的黑盒子,所以要分析这个软件,看看作者到底是如何实现软件的保护,这种保护机制有何优缺点,有什么值得借鉴之处. 最出色的保护体制一定会用到最出色的技术,或者在算法上,或者在编程思想上,我们通过分析,研究,最终将它们搞清楚,那么我们就可以把这些心得用到自己编写的软件中去.很多CRACKER最终之所以都成为了优秀的PROGRAMMER或是优秀的系统分析员,就是因为如此.所以,CRACKING有个更加专业的名字:”Reverse Engineering”,译成中文就是”逆向工程”. 当然,不可否认,某些时候,对软件实施”逆向工程”的确会影响到软件开发者的个人利益.由于这种影响的存在,很多开发者对于CRACKER们可以说是抱有一种”仇视”的态度,其实细究之下,完全没有必要.真正对软件开发者造成严重损害的,不是CRACKER,而是无耻盗用CRACKER劳动成果的盗版商人,这些盗版者,不仅严重损害了开发者的利益,也严重损害了CRACKER的利益和声誉,软件作为程序员知识的结晶

什么是区块链

筅森魡賤 提交于 2019-11-26 12:09:36
什么是区块链 区块链简介 什么是区块链?目前没有看到很好的定义和介绍,网上要么是讲一些区块链意义的空泛文章,比如“区块链技术颠覆谁谁谁”、又或“互联网已颠覆世界,区块链要颠覆互联网等等”,要么就是通篇介绍比特币,矿工,挖矿等。那么区块链到底是个什么东西?它跟比特币又有什么关系呢? 其实区块链本质上是一个去中心化的分布式账本数据库。其本身是一串使用密码学相关联所产生的数据块,每一个数据块中包含了多次交易有效确认的信息。而比特币就是基于区块链技术的一个应用。 这里先抛出几个问题: 1、什么叫去中心化的分布式数据库? 2、数据区块里都有什么? 3、如何利用密码学保证区块里数据不会被篡改? 4、数据是不断增加的,怎么保证新增的数据被其他节点认可? 中心化与去中心化 先看一个中心化与分布式案例,搞IT编程的都知道,目前版本控制软件最流行的一个是svn,一个是git那它俩有什么区别呢,如下图: svn是一个集中式的服务器,代码的版本变更信息都存储在svn server服务端,每个客户端磁盘里只有众多版本中的其中一个版本,假如服务端坏掉了,那我们就丢失了版本变更记录。 而git不一样,它是没有中心服务器的,每个人机器上都是一个完整的库,里面就有各个版本的变更信息,我们开发完代码以后先commit到本地仓库,在push推送到远程服务器,假如远端服务器坏掉了,只需要把本地仓库重新push一次即可

密码学 BugKu聪明的小羊

佐手、 提交于 2019-11-26 05:38:15
一只小羊翻过了2个栅栏 KYsd3js2E{a2jda} 看到了’栅栏’和{},感觉应该是 栅栏密码 。 在 栅栏密码转换 这个网址进行解密,题目中提到 2 个栅栏,把字数设置为2,正好得到答案KEY{sad23jjdsa2}。 来源: https://blog.csdn.net/Autumn_man/article/details/98761850