香农理论在密码学中的应用 概率论基础假定x和y是分别定义在有限集合X和Y上的随机变量。联合概率 P(xi,yi)P(x_i,y_i) 是 x=xi,y=yix=x_i, y=y_i 的概率。条件概率 P(xi|yi)P(x_i \vert y_i ) 是 y=yiy=y_i 时, x=xix=x_i 的概率。如果对于任意x∈X,y∈Yx \in X , y \in Y 都有 P(x,y)=P(x)P(y)P(x, y) =
传统密码技术 密码(cryptography)是一种信息处理体系,涉及信息的机密性、完整性、认证性和不可否认性等许多方面。密码学发展历程自从人类社会有了战争,就有了保密通信,就需要信息处理体系。在1949年以前,密码的研究与应用仅仅是文字变换技术,简称为密码术。自1949年之后,Shannon做了相关的工作,发表了《保密系统的通信理论》一文,为密码学的发展奠定了坚实的理论基础。密码学发展大致分为古典密码时期、近代
自组织神经网络模型与学习算法 自组织神经网络又称为自组织竞争神经网络,特别适合于解决模式分类和识别方面的应用问题。该网络模型属于前向神经网络模型,采用无监督学习算法,其工作的基本思想是让竞争层的各个神经元通过竞争与输入模式进行匹配,最后仅有一个神经元成为竞争的胜利者,这一获胜神经元的输出就代表对输入模式的分类。常用的自组织竞争神经网络有自适应共振理论(ART)网络,自组织特征映射(SOM)网络,对传(CP)网络和协同神经网络(S
径向基函数神经网络模型与学习算法 1985年,Powell提出了多变量插值的径向基函数(RBF)方法。1988年Moody和Darken提出了一种神经网络结构,即RBF神经网络,属于前向神经网络类型,它能够以任意精度逼近任意连续函数,特别适合于解决分类问题。RBF网络的结构与多层前向网络类似,它是一种三层前向网络。输入层由信号源结点组成,第二层为隐含层,隐单元数视所描述问题的需要而定,隐单元的变换函数是RBF,它是对中心点径向对称且
BP神经网络模型与学习算法 在感知器神经网络模型与线性神经网络模型学习算法中,理想输出与实际输出之差被用来估计神经元连接权值误差。当解决线性不可分问题而引入多级网络后,如何估计网络隐含层神经元的误差就成了一大难题。因为在实际中,无法知道隐含层的任何神经元的理想输出值。1985年Rumelhart、McClelland提出了BP网络的误差反向后传(BP)学习算法,实现了Minsky设想的多层神经网络模型。BP算法在于利用输出后的
线性神经网络模型与学习算法 线性神经网络类似于感知器,但是线性神经网络的激活函数是线性的,而不是硬转移函数,因此,线性神经网络的输出可以是任意值,而感知器的输出不是0就是1。线性神经网络和感知器一样只能求解线性可分的问题。因此,线性神经网络的限制和感知器相同。线性神经元网络模型线性神经元与感知器神经元具有相似的结构,唯一的不同是线性神经元使用了线性传递函数purelin,因此与感知器神经网络不同,线性神经网络的输出可以是任意的
感知神经网络模型与学习算法 单层感知器该概念的是在1957年美国学者Rosenblatt提出的。感知器是监督学习的神经网络模型。单层感知器是包含一个突触权值可调的神经元的感知器模型。是神经网络用来进行模式识别的一种最简单的模型,属于前向神经网络类型,但是仅由一个神经元组成的单层感知器只能区分线性可分的模式。一个感知器模型,包括一个线性的累加器和一个二值阈值元件,同时还有一个外部偏差b,也称作阈值,其值可以为正,也可以为负。线性
信息检索模型与评估 信息检索的前提是对信息内容的索引提取,所谓的索引就是指用于标识信息内容的项。建立信息的索引的方法,通常可分为两类:一种是手动定义索引,一种是自动获取索引。而我们所要面临的数据源,既可能是模块化或结构化的语言,譬如HTML语言,又可能是非结构化的语言,譬如自然语言;既可能是与上下文相关的词汇,又可能是与上下文无关的词汇;既可能是一个简单的单词又可能是一个词组(这里的数据源前提假设为英文,对于中文的信息
Diffie-Hellman密钥交换 Diffie-Hellman密钥交换(DHKE)是由Whitfield Diffie和Martin Hellman在1976年提出的。密钥交换方案提供了实际中密钥分配问题的解决方案,即允许双方通过不安全的信道进行交流获得一个共同密钥。许多公开和商业密码协议中都实现了这种基本的密钥协议技术,比如安全外壳(SSH),传输层安全(TLS) DHKE的基本思想为Z∗pZ^*_p内的指数运算(p是素数)是单
RSA密码体制 公钥算法的基本数论知识公钥密码学中大部分引用了数论的成果,所以必要在介绍RSA密码体制之前,详细介绍一下所使用的几个数论的知识点欧几里得算法欧几里得算法主要是解决最大公约数问题,记两个正整数r0r_0和r1r_1的gcdgcd表示: gcd(r0,r1)gcd(r_0,r_1) 在公钥体系中,安全性依赖于大整数的因式分解通常是不可能的。所以人们通常使用一种更有效的算法计算gcd,即欧几里得算法,
分组密码加密操作模式 密码其目的为,通过加密数据为Alice发给Bob的消息提供了保密性。电子密码本模式(ECB)一种最直接的消息加密方式。若分组密码加密分组大小为b位,则如果长度超过b位时,消息将被分割为欸大小为b位的分组。如果消息长度不是b位的整数倍,则在加密前必须将其填充为b位的整数倍。由于传输问题导致接收方没有收到所有的加密分组时,接收方还是可能解密已收到的分组。但ECB模式最大的问题在于它的加密是高度确定的(只
AES加密算法 AES的基本要求是:比三重DES快、至少与三重DES一样安全、数据分组长度为128-bit、密钥长度为128/192/256-bit,对应于密钥的不同长度,加密轮的次数也不尽相同。选定Rijndael算法为新的AES算法。算法的原型是Square算法,其设计策略为宽轨迹策略(针对差分分析和线性分析提出的,最大优点是可以给出算法的最佳差分特征的概率以及最佳线性逼近的偏差的界;由此可以分析算法抵抗差分密
分组密码体制及DES加密体系 分组密码是将明文消息编码表示后的数字序列划分成长为n的组,每个组(可称为长度为n的矢量)分别在密钥控制下变换成等长的输出数字序列。 其加密函数E:V_n × K → V_m。 其中V_n和V_m分别为n维和m维的矢量空间,K为密钥空间。它与流密码不同之处在于输出的每一位数字不是只与相应时刻输入的明文数字有关,而是与一组长为n的明文数字有关。这种密码实质上是字长为n的数字序列的代换密码。混淆和扩散
流密码 利用密钥k产生一个密钥流。密钥流由密钥流发生器f产生 zi=f(k,δi)z_i = f(k, \delta_i)。 δi\delta_i是加密器中记忆元件在时刻i的状态。分组密码与流密码的区别在于有无记忆性。流密码的最初的滚动密钥由函数f、密钥k以及指定的初始状态δ0\delta_0决定,后续的密钥则可以通过输入加密器的明文,来影响加密器中的记忆元件来改变其状态。同步流密码根据加密器中的记忆元件的
信息安全面临的威胁 人为威胁包括两大类被动攻击主动攻击被动攻击主要是指窃听,是对系统的保密性进行的攻击。 被动攻击又分为两类获取消息的内容进行业务流分析主动攻击包含对数据流的篡改、伪造等方面中断 对系统可用性进行攻击篡改 对系统完整性进行攻击伪造 对系统真实性进行攻击恶意程序包括两类,一类是需要主程序的,即不能独立于实际的应用程序或系统程序,另一类是不需要主程序的,即能够被操作系统调度或独立运行。需
.net core Web应用启动类 在ASP.NET Core中,Startup类为Web应用的入口类,用于配置Web服务的管道/过滤器以及Web应用所能用到的服务。在启动Web应用后,ASP.NET将在主库中查询名为Startup的类,无论查找到的Startup类的访问限制是什么,ASP.NET Core将直接加载该类并执行后续的操作。ASP.NET的查询方式为首先查找主库中的根命名空间,根命名空间中不包含Startup类,则根据字
.net core Web应用启动类 通过官方的介绍可知,若要本地开始部署搭建一个基于.net core 1.0的Web应用,需要下载dotnet SDK,或在Visual Studio IDE之上安装相关插件以布置开发环境。为了使开发环境最小化,选择安装dotnet SDK。下载地址为:http://asp.net0x00.新建一个Web应用项目这里不必赘述,到相应目录中运行命令提示符:dotnet new -t web。dotnet
Nginx *nix下安装方式 特别标注:在没有任何介绍背景下,直接发如何安装软件的都是耍流氓!本文参照nginx.org提供的安装介绍,链接:nginx.org “installing nginx” page在不同的操作系统下,安装Nginx的方式也不同,即使在同一款操作系统,不同版本下的安装方式也有所不同。这里需要额外注意一下。这里仅仅介绍Linux下的安装。nginx包可以被以下架构和版本使用:RHEL/Centos 版
[corefx注释说]-System.Collections.Generic.Queue<T> 为了节省时间,只写一些关注的方法好了,剩下的可以MSDN嘛XD首先是声明部分,表示为队列是一个可用于枚举的只读集合 [DebuggerTypeProxy(typeof(QueueDebugView<>))] [DebuggerDisplay("Count = {Count}")] public class Queue<T> : IEnumerable<T>, S
[corefx注释说]-System.Collections.Generic.Stack<T> 对C#里边的基础类库有充分的好奇心,所以就心血来潮写一下,这个就不定期更新了,想什么时候写就什么时候写好了。这里弱弱的吐槽一下CSDN的博客。为了以防万一,会在我其他的博客做一下备份。废话不多说 切入正题: github上的源代码using System;using System.Diagnostics;using System.Diagnostics.CodeAnalysis;这里的引用没什