算法
文章平均质量分 90
GeneralAndroid
这个作者很懒,什么都没留下…
展开
-
算法预备军(1)~数据结构绪论
说明:算法预备军系列内容均为个人的学习笔记,主要是指数据结构方面的,后面在继续学习的过程中会陆续分享相关内容.数据结构这块主要学习来源为,大家不喜欢摘录的,可以自行看书.数据结构:是相互之间存在一种或多种特定关系的数据元素的集合程序设计=数据结构+算法数据:是描述客观事物的符号,是计算机中可以操作的对象,是能被计算机识别,并输入给计算机处理的符号集合。数据不仅仅包括整型,实型等数值类型原创 2017-04-30 15:15:56 · 444 阅读 · 0 评论 -
DES算法原理与Java实现
在上一篇的文章中介绍了Feistel密码的原理与Java实现,这篇将带来DES算法的原理与Java实现,对于Java实现这里只给出一份代码(还有其他方式实现,主要是处理二进制位的方式不一样)。概述DES是一个分组加密算法,它以64位为分组对数据加密。同时DES也是一个对称算法:加密和解密用的是同一个算法。DES是一个包含16个阶段的“替换–置换”的分组加密算法,64位的分组明文序列作为...原创 2018-03-22 15:34:35 · 20137 阅读 · 8 评论 -
揭开分组密码的面纱
前面的几篇博文简单地介绍了传统加密的知识,大家应该已经了解了常见的传统加密方案以及代码实现。这篇文章主要来介绍密码学中的分组密码的工作模式以及填充模式,这篇文章没有相关的代码,都是一些简单的理论。这里说一下为什么是先介绍分组密码,这是因为分组密码的理论是DES,3DES,AES加密的基础理论之一,而且和加密解密算法的跨平台性有一定的关联。分组密码分组密码是将一个明文分组作为整体加密并且...原创 2018-02-21 21:40:38 · 4302 阅读 · 1 评论 -
传统加密技术续-Hill Vigenere Vernam
在上篇文章中,讲述了一些加密解密的概念以及Caesar、单表替换密码、Playfair密码。在这篇文章中主要涉及Hill密码,Vigenere密码,Vernam密码,置换技术。Hill密码希尔密码(Hill Cipher)是运用基本矩阵论原理的替换密码,由Lester S.Hill在1929年发明。该加密算法将m个连续的明文字母替换成m个密文字母,这是由m个线性等式决定的,在等式里每个...原创 2018-02-07 22:41:45 · 1079 阅读 · 0 评论 -
传统加密技术
最近由于工作需要,转而去研究加密与解密的东西,这个密码学的东西还是比较复杂的,还需要补一下数学知识。我会持续分享这方面的内容,由于初步涉及有可能总结的东西会有错误或逻辑漏洞,如果发生请及时告知和一起讨论。需要说明的是,这些都是学习笔记与感悟,和业务方案没有任何关系,并不会涉及泄露,故才会拿出分享。在之前的加密解密的初涉文章中,我们讲到了加密算法的分类:对称加密,非对称加密,Hash算法。那么什...原创 2018-02-07 22:40:47 · 7105 阅读 · 0 评论 -
Feistel密码原理与实现
Feistel概述Feistel密码结构,在密码学研究中,Feistel密码结构是用于分组密码中的一种对称结构。理解了Feistel密码结构,对于理解DES算法的原理有很大的帮助。 Feistel建议使用乘积密码的概念来逼近理想分组密码。乘积密码是指依次使用两个或两个以上基本密码,所得结果的密码强度将强于所有单个密码的强度。Feistel密码交替使用代替和置换来进行加密解密。 代替和置换的...原创 2018-02-27 16:56:39 · 23287 阅读 · 6 评论 -
算法预备军(5)~散列表
散列表又称为Hash表,核心体现在Hash算法上,而Hash算法又是加密算法的一种,所以我们很有必要去了解一下散列表。一些概念我们看一个公式:存储位置=f(关键字),我们将根据这个公式来理解散列技术与散列表的概念。散列技术:散列技术是在记录的存储位置和它的关键字之间建立一个确定的对应关系f,使得每个关键字key对应一个存储位置f(key)。查找时,根据这个确定的对应关系找到给定值key的映射f(ke原创 2017-11-21 10:13:16 · 419 阅读 · 0 评论 -
算法预备军(4)~树的概念
树树的基础树的定义定义树(Tree)是n(n>=0)个结点的有限集。n=0时称为空树。在任意一棵非空树中: (1)有且仅有一个特定的 称为根(Root)的结点; (2)当n>1时,其余结点可分为m(m>0)个互不相交的有限集T1,T2,…….,Tn, 其中每一个集合本身又是一棵树,并且称为根的子树(SubTree)。结点分类树的结点包含一个数据元素及若原创 2017-08-08 10:07:36 · 659 阅读 · 0 评论 -
算法预备军(3)~线性表
说明:算法预备军系列内容均为个人的学习笔记,主要是指数据结构方面的,后面在继续学习的过程中会陆续分享相关内容.数据结构这块主要学习来源为,大家不喜欢摘录的,可以自行看书.线性表:零个或多个数据元素的有限序列.首先它是一个序列.也就是说,元素之间是有顺序的,若元素存在多个,则第一个元素无前驱,最后一个元素无后继,其他每个元素都有且只有一个前驱和后继.然后线性表强调是有限的.事实上原创 2017-06-14 13:56:10 · 612 阅读 · 0 评论 -
散列表的基本原理与实现
散列表的基本原理与实现本篇博文主要介绍散列表(Hash Table)这一常见数据结构的原理与实现。由于个人水平有限,文章中难免存在不准确或是不清晰的地方,希望大家可以指正:)一、概述 符号表是一种用于存储键值对(key-value pair)的数据结构,我们平常经常使用的数组也可以看做是一个特殊的符号表,数组中的“键”即为数组索引,值为相应的数组元素。也就转载 2017-05-01 21:27:35 · 664 阅读 · 0 评论 -
算法预备军(2)~算法的一些概念
说明:算法预备军系列内容均为个人的学习笔记,主要是指数据结构方面的,后面在继续学习的过程中会陆续分享相关内容.数据结构这块主要学习来源为,大家不喜欢摘录的,可以自行看书.算法:算法是解决特定问题求解步骤的描述,在计算机中表现为指令的有限序列,并且每条指令表示一个或多个操作。算法定义中,提到了指令,指令能被人或机器等计算装置执行。它可以是计算机指令,也可以是我们平时的语言文字。为原创 2017-04-30 15:18:36 · 596 阅读 · 0 评论 -
汉诺塔问题算法
问题汉诺塔(又称河内塔)问题是源于印度一个古老传说的益智玩具。大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘。大梵天命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上。并且规定,在小圆盘上不能放大圆盘,在三根柱子之间一次只能移动一个圆盘。递归算法我们这里先列举盘子的个数为1,2,3,4的时候的情况,具体的如下表格。观察上面的四个表...原创 2019-03-26 00:12:39 · 5779 阅读 · 0 评论