几种常见数字签名算法比较
原文链接:数字签名算法介绍和区别
summary:数字签名是一个带有密钥的消息摘要算法,这个密钥包括了公钥和私钥,用于验证数据完整性、认证数据来源和抗否认,遵循OSI参考模型、私钥签名和公钥验证。也是非对称加密算法和消息摘要算法的结合体,常见的数字签名算法主要有RSA、DSA、ECDSA三种,本文对数字签名算法进行详细介绍。
RSARSA是目前计算机密码学中最经典算法,也是目前为止使用最广泛的数字签名算法,RSA数字签名算法的密钥实现与RSA的加密算法是一样的,算法的名称都叫RSA。密钥的产生和转换都是一样的,包括在售的所有SSL数字证书、代码签名证书、文档签名以及邮件签名大多都采用RSA算法进行加密。
RSA数字签名算法主要包括MD和SHA两种算法,例如我们熟知的MD5和SHA-256即是这两种算法中的一类。
DSADSA全称Digital Signature Algorithm,DSA只是一种算法,和RSA不同之处在于它不能用作加密和解密,也不能进行密钥交换,只用于签名,所以它比RSA要快很多,其安全性与RSA相比差不多。DSA的一个重要特点是两个素数公开,这样,当使用别人的p和q ...
数据存储的基本原理
数据存储的实现介质实现数据存储必须有三个基本条件:存储介质的不同状态、存储介质的状态感知、存储介质的状态转换。1,存储介质的不同状态:根据磁性薄膜上剩余磁化方向不同实现此表面记录技术,磁化方向不同可表示电平的跳变,经解码识别为01,实现数据存储。根据电平高低状态,实现用于记忆的电路,如半导体静态随机存取存储器(SRAM 6个晶体管组成)。基于电阻值的大小存储数据,阻变存储器RRAM,相变存储器PCM、磁性存储器MRAM。光盘表面采用不同波长激光产生凹坑大小不同,光盘记录容量也不同。2,存储介质的状态感知:写入时,写入电流的改变在磁介质表面留下不同方向的剩余磁化状态。读出时,读出磁头感应出剩余磁化方向的改变,经解码后转化为读出数据。通过对光盘表面照射激光束检测有无凹坑读出光盘数据。3,存储介质的状态转换:对磁盘而言,通过改变流经写入磁头的电流方向,改变磁盘表面的磁化方向。对SRAM而言,通过改变位线上的电平改变高低电平状态。对于阻变存储单元,通过对某一单元施加高低电平实现低高阻态。光盘大多为一次写入,多次读出。
数据写入与读出技术
首先是晶体管的工作原理,如下图所示,我们可以在栅极(Ga ...
RAID磁盘阵列分级与结构
RAID的分级与结构磁盘整列整体结构图:
RAID0
即Data Stripping(数据分块,数据条带化)。将整个逻辑盘的数据分块地分布在多个物理磁盘上,可以进行并行读写,提供最快速度,但是没有冗余能力。
优点: (1)读写时数据分块,并行操作; (2)当每个磁盘控制器只连接一个磁盘时,数据能分块到多个磁盘控制器,取得最佳性能; (3)不需要计算校验和; (4)设计简单,计算容易;
缺点: (1)不能容错,不算真正的RAID; (2)一块磁盘失效,可能丢失所有数据; (3)不能用在可靠性要求高的应用中;
RAID1RAID1又称镜像模式(Mirror或Mirroring),目标是最大限度地保证用户数据的可用性和可修复性。把用户写入硬盘的数据百分之百地自动复制到另一个硬盘上。与RAID0相比,RAID1首要考虑安全性,容量减半,速度不变。- 优点: (1)对每个磁盘对只需要一次写操作; (2)写性能与单块磁盘相同,读性能优于单块磁盘; (3)100%的数据冗余,一块磁盘失效时,只需要把数据拷贝到替换的磁盘上; (4)特定系统下,RAID1系统可在 ...
存储系统体系结构
1 海量存储系统的体系结构存储系统在高速度、大容量、低成本三者之间是存在矛盾的。在追求单个存储器高性能的同时,通过先进的体系结构技术,可以构建出性价比最优的复合存储系统。
海量存储系统的研究目标: 通过软硬件结合、本地与网络结合的方法,研究新型体系结构技术,设计出性能优化的存储系统。
概括: 将不同容量、速度、价格的存储器组成多层系统,通过软硬件组合为整体,数据分布在各层中,达到最优化的性能价格比。从cpu的角度上看,这个多级存储系统具有与最快存储器相当的速度,容量相当于磁盘的高速、大容量存储器,每字节成本接近磁盘。
1.1 多级存储层次的基本概念
在存储系统多级层次结构中,由上至下分为三级,容量递增,速度递减,成本递减。整体又分为两个层次
Cache-主存层次:
主存-辅存层次:
进一步细分,先进的CPU内部含有三级存储体系,分别是寄存器、L1 Cache、L2 Cache:
多级结构存储系统服从两个基本原则:存储层次结构的有效性基于实践局部性、空间局部性两个局部性原理:
时间局部性(Temproral Locality) :如果某个数据或指令被引用,那么 ...
数据库分片 Database Sharding
本文翻译自:Understanding Database Sharding
什么是Sharding:
分片是一种与水平分区相关的数据库架构模式——将一个表的行分成多个不同的表的做法,称为分区。 每个分区都有相同的架构和列,但也有完全不同的行。 同样,每个分区中保存的数据都是唯一的,独立于其他分区中保存的数据。
根据水平分区与垂直分区的关系来考虑水平分区会很有帮助。 在垂直分区的表中,整列被分离出来并放入新的、不同的表中。 一个垂直分区中保存的数据独立于所有其他分区中的数据,并且每个分区都包含不同的行和列。 下图说明了如何对表进行水平和垂直分区:
分片涉及将一个人的数据分成两个或更多更小的块,称为逻辑分片。 然后将逻辑分片分布在单独的数据库节点上,称为物理分片,它可以容纳多个逻辑分片。 尽管如此,所有分片中保存的数据共同代表了整个逻辑数据集。
数据库分片体现了无共享架构。 这意味着分片是自治的; 它们不共享任何相同的数据或计算资源。 但是,在某些情况下,将某些表复制到每个分片中以用作参考表可能是有意义的。 例如,假设有一个应用程序的数据库,它依赖于重量测量的固定转换率。 通过将包含必要转 ...
NoSQL数据库比较
本文翻译自:A Comparison of NoSQL Database Management Systems and Models
背景介绍当大多数人想到数据库时,他们通常会想到传统的关系数据库模型,该模型涉及由行和列组成的表。 虽然关系数据库管理系统仍然处理互联网上的大部分数据,但近年来,随着开发人员寻求解决关系模型局限性的方法,替代数据模型变得越来越普遍。 这些非关系型数据库模型都有自己独特的优点、缺点和用例,已被归类为 NoSQL 数据库。
本文将向您介绍一些比较常用的 NoSQL 数据库模型。 它将权衡它们的一些优点和缺点,并提供一些数据库管理系统示例和每个示例的潜在用例。
关系型数据库和它们的缺陷数据库是逻辑建模的信息或数据集群。同时,数据库管理系统 (DBMS) 是与数据库交互的计算机程序。 DBMS 允许您控制对数据库的访问、写入数据、运行查询以及执行与数据库管理相关的任何其他任务。尽管数据库管理系统通常被称为“数据库”,但这两个术语并不完全可以互换。数据库可以是任何数据集合,而不仅仅是存储在计算机上的数据,而 DBMS 是允许您与数据库交互的特定软件。
所有数据库管理 ...
大话存储第七章-熟读宝典—系统与系统之间的语言OSI
OSI(开放式系统互连)OSI是一种抽象的系统间通信模型,描述两个或多个系统之间如何交流,计算机之间、人体之间、人体与计算机之间的通信都可以用OSI模型描述。
一个实例:计算机a想向计算机b发送一个数据包,内容是“打开文件C:\tellme.txt”
计算机a首先需要在内存中通过双方定义的语言,生成这个数据包:
将数据包通过总线发送给TCP/IP协议处理单元,告知其对方IP地址和所用传输方式(UDP/TCP)和端口号;
TCP/IP处理模块收到数据包,包装并通过总线发送给以太网卡;
以太网卡将数据包进行编码,通过电路将包装好的数据包变成一串电路高低电平,发送给交换机;
交换机将数据包交换到计算机b的接口;
计算机b收到这串电位流后,送至以太网卡解码芯片,去掉以太网头,之后产生中断信号,将数据包送到内存:
由TCP/IP协议处理模块对这个数据包进行分析,提取IP头和TCP或UDP头,以便区分应输送到哪个应用程序的缓冲区内存;
即最终TCP/IP协议将“打开文件C:\tellme.txt”这句话,成功输送到计算机b应用程序的缓冲区内存;
计算机b应用程序提取这句话,分析语法,根据这个命令 ...
大话存储第六章-磁盘阵列
磁盘阵列简单理解就是装成百上千块磁盘的大柜子。外置磁盘柜应用探索 找一个箱子内部有SCSI线缆,可以固化到电路板上。外边放一个接口,用来连接主机上的SCSI卡。如果主机装的SCSI卡不带RAID功能,那么主机会看到磁盘箱中的所有磁盘,箱子里有多少块,OS磁盘管理器就会显示多少块。如果主机的SCSI卡带RAID功能,那么可以用这个RAID卡先对认识到的磁盘做RAID,划分逻辑盘,然后OS识别到的是逻辑盘,不会是箱子里的物理磁盘。
这种磁盘箱叫做JBOD,“Just a Bound Of Disks”
结合RAID卡实现外置磁盘阵列把RAID功能做到磁盘箱中,这样主机就不用再配置RAID,直接连接就能识别到逻辑盘了。
把自带RAID控制器的磁盘箱叫做“磁盘阵列”,自此大家默认凡是JBOD都叫磁盘柜,凡是自带RAID控制器的盘柜就叫磁盘阵列或盘阵。
盘阵就是在盘柜的基础上,将内部的磁盘经过自带的RAID控制器虚拟化成逻辑磁盘,然后经过外部SCSI接口连接到主机端的SCSI接口。此时盘阵对主机来说就是主机SCSI总线上的一个或多个设备,具有一个或多个SCSI ID,所有逻辑 ...
大话存储第五章-RAID、虚拟磁盘、卷和文件系统实战
为保证性能同一个磁盘组一般只能用同一类型的磁盘。
1 RAID 卡
软件RAID有三个缺点:占用内存空间、占用CPU资源、软件RAID程序无法将安装有操作系统的那个磁盘分区做成RAID模式;因为RAID程序是运行在操作系统上的,所以操作系统启动前无法使用RAID功能,操作系统损坏,RAID程序无法运行,所以大部分RAID程序会在磁盘上存储自己的算法信息。
RAID卡是利用独立硬件来实现RAID功能的方法。人们在SCSI卡上增加了额外的芯片用于实现RAID功能,专门用来执行RAID算法,可以是ASIC高速芯片也可以是通用指令CPU芯片,可以从ROM中加载代码直接执行,也可以先载入RAM后执行,从而实现RAID功能。
RAID卡克服了软件RAID缺点,使操作系统本身可以安装在RAID虚拟磁盘上,这是软件RAID做不到的。
2 磁盘阵列 在七种RAID形式基础上,还可以进行扩展,实现更高级的RAID。
RAID 50
控制器将RAID 0和RAID 5的映射方程组合成一个映射方程,直接带入逻辑盘的LBA,得出将要写入或读出的物理地址。左右两边的盘分别允许损坏一块磁盘而 ...
大话存储第四章-详解七种RAID(主要RAID5)
纯技术角度剖析RAID模式的组成原理和结构,以及相对于单盘IO的速率变化:
注意:Stripe完全是程序在内存中虚拟出来的,就是一个map公式,就是实现RAID的程序代码,物理上磁盘只有扇区。此外,程序会在磁盘特定的一些扇区中写入自己运行时需要的信息,比如一些RAID标签信息等。
1 存储分区相关概念:
磁盘相同偏移处横向逻辑分割形成Stripe条带,一个Stripe横跨的扇区或块的个数或字节容量就是条带长度,即Stripe Length。
一个Stripe占用的单块磁盘上的区域叫做Segment,一个Segment中包含的data Block或者扇区的个数或者字节容量称为Stripe Depth。Data Block可以是N倍扇区大小的容量,应该可以调节或不可以,由控制器决定。
2 IO相关重要概念 IO可以分为读/写IO、大/小块IO、连续/随机IO、顺序/并发IO、稳定/突发IO、持续/间断IO和实/虚IO。
读/写IO: 指令一般指通知磁盘开始扇区位置,然后给出需要从这个初始扇区往后读取连续扇区个数,同时给出动作是读还是写。控制器发出这种指令加数据并得到对方回执的过程就是 ...