加密算法

上传人:简****9 文档编号:112018708 上传时间:2019-11-04 格式:PPT 页数:17 大小:2.39MB
返回 下载 相关 举报
加密算法_第1页
第1页 / 共17页
加密算法_第2页
第2页 / 共17页
加密算法_第3页
第3页 / 共17页
加密算法_第4页
第4页 / 共17页
加密算法_第5页
第5页 / 共17页
点击查看更多>>
资源描述

《加密算法》由会员分享,可在线阅读,更多相关《加密算法(17页珍藏版)》请在金锄头文库上搜索。

1、加密算法 计算机1003班 袁术 一、数据加密与加密系统S 数据加密的基本过程就是 对原来为明文的文件或数 据按某种算法进行处理, 使其成为不可读的一段代 码,通常称为“密文”,使 其只能在输入相应的密钥 之后才能显示出本来内容 ,通过这样的途径来达到 保护数据不被非法人窃取 、阅读的目的。 该过程的 逆过程为解密,即将该编 码信息转化为其原来数据 的过程。 一个加密系统S可以用数学符号描述如下: S=P, C, K, E, D 其中 P明文空间,表示全体可能出现的明 文集合, C密文空间,表示全体可能出现的密 文集合, K密钥空间,密钥是加密算法中的可 变参数, E加密算法,由一些公式、法则

2、或程 序构成, D解密算法,它是E的逆。 当给定密钥kK时,各符号之间有 如下关系: C = Ek(P), 对明文P加密后得到密文C P = Dk(C) = Dk(Ek(P), 对密文C解密后 得明文P 如用E-1 表示E的逆,D-1表示D的逆, 则有: Ek = Dk-1且Dk = Ek-1 因此,加密设计主要是确定E,D,K。 二、加密算法的概要 现有的序列号加密算法大多是软件开发者自行设计的,多 数较简单,而且有些算法作者虽然下了很大功夫,却往往 达不到希望的效果。其实,有很多成熟的算法可用,尤以 密码学中一些强度比较高的算法,如RSA,Blowfish, MD5等。这些算法在英特网上有

3、大量的源码或编译好的库 。可以直接加以利用,所要用的就是利用搜索引擎找到他 们将其嵌入自己的程序中,因此建议使用这些算法。但即 使这些算法的强度很高,但是使用方法也要得当否则效果 就和普通的四则运算没什么区别,很容易被解密者算出注 册码或写出注册机来。 三、加密算法的分类、定义、原理 加密算法的分类 1、单向散列算法 (1)、MD5算法 (2)、SHA算法 (3)、CRC算法 2、公开密钥算法 (1)、RSA算法 (2)、ElGamal算法 (3)、DSA算法 3、对称算法 (1)、BlowFish算法 4、其他算法 (1)、Base64编码 (2)、Crypto API 1、单项散列函数算

4、法 单项散列函数算法也称 Hash(哈希)算法,是一 种将任意长度的消息压缩 到某一固定长度的函数(该 过程不可逆)。Hash函数 可用于数字签名、消息的 完整性检测、消息起源的 认证检测等。常见的散列 算法有MD5,SHA,N- Hash,RIPE-MD,HAVAL等 。 (1)MD5算法 内容:MD5是Ron Rivest设 计的单向散列函数,MD表示消 息摘要,他对输入的消息运算 ,产生128位散列值。MD5经历 了最初的MD2,MD3和MD4的 发展演化而来。“MD”泛指字节 串的Hash变换,就是把一个任 意长度的字节串变换成一个固 定固定长的大整数。请注意这 里使用了“字节串”而不

5、是“字符 串”这个词。因为这种变换只与 字节的值有关,与字符集或编 码方式无关。 算法原理 a、数据填充 b、初始化变量 c、数据处理 d、输出 (2)、SHA算法 内容:安全哈希算法(Secure Hash Algorithm) 主要适用于数字签名标准(Digital Signature Standard DSS)里面定义的数字签名算法( Digital Signature Algorithm DSA)。对于长度小 于264位的消息,SHA1会产生一个160位的消息 摘要。当接收到消息的时候,这个消息摘要可以 用来验证数据的完整性。在传输的过程中,数据 很可能会发生变化,那么这时候就会产生不

6、同的 消息摘要。 SHA1有如下特性:不可以从消息摘 要中复原信息;两个不同的消息不会产生同样的 消息摘要。 (3)、CRC算法 CRC原理介绍: CRC的英文全称为Cyclic Redundancy Check(Code),中文名称为循 环冗余校验(码)。它是一类重要的线性分组码,编码和解码方法简单,检 错和纠错能力强,在通信领域广泛地用于实现差错控制。 CRC计算与普通的除法计算有所不同。普通的除法计算是借位相减的, 而CRC计算则是异或运算。任何一个除法运算都需要选取一个除数,在 CRC运算中我们称之为poly,而宽度W就是poly最高位的位置。比如poly 1001的W是3,而不是4。

7、注意最高位总是1,当你选定一个宽度,那么你只 需要选择低W各位的值。假如我们想计算一个位串的CRC码,并要保证每一 位都要被处理,因此我们需要在目标位串后面加上W个0 CRC32应用 实列CRC32-Test.exe。是一个带有文件完整性检查的样列。如果修 改了文件中的任意一个数据,文件通过CRC32计算就能发现自己被修改 过。 CRC的实现主要是通过查表法。对于CRC-16和 CRC-32,各自有一张现成的表。这张表也可用 下面算法生成: 2、公开密钥算法(非对称算法 ) 非对称密钥算法是指一个加密算法的加密密钥和解密密钥是不一 样的,或者说不能由其中一个密钥推导出另一个密钥。 非对称密钥也

8、叫公开密钥加密,它是用两个数学相关的密钥对信息 进行编码。在此系统中,其中一个密钥叫公开密钥,可随意发给期望 同密钥持有者进行安全通信的人。公开密钥用于对信息加密。第二个 密钥是私有密钥,属于密钥持有者,此人要仔细保存私有密钥。密钥 持有者用私有密钥对收到的信息进行解密。 优点:首先,在多人之间进行保密信息传输所需的密钥组和数量 很小;第二,密钥的发布不成问题;第三,公开密钥系统可实现数字 签名。 缺点:公开密钥加密比私有密钥加密在加密解密时的速度慢。 加解密时采用的密钥的差异:从上述对对称密钥算法和非对称密 钥算法的描述中可看出,对称密钥加解密使用的同一个密钥,或者能 从加密密钥很容易推出解

9、密密钥对称密钥算法具有加密处理简单,加 解密速度快,密钥较短,发展历史悠久等特点,非对称密钥算法具有 加解密速度慢的特点,密钥尺寸大,发展历史较短等特点 (1)、RSA算法 定义: RSA公开密钥密码体制。所谓的公开密钥密码体制就是使用不同的加密密 钥与解密密钥,是一种“由已知加密密钥推导出解密密钥在计算上是不可行的” 密码体制。 在公开密钥密码体制中,加密密钥(即公开密钥)PK是公开信息,而解 密密钥(即秘密密钥)SK是需要保密的。加密算法E和解密算法D也都是公 开的。虽然秘密密钥SK是由公开密钥PK决定的,但却不能根据PK计算出SK 。正是基于这种理论,1978年出现了著名的RSA算法,它

10、通常是先生成一对 RSA 密钥,其中之一是保密密钥,由用户保存;另一个为公开密钥,可对外 公开,甚至可在网络服务器中注册。为提高保密强度,RSA密钥至少为500 位长,一般推荐使用1024位。这就使加密的计算量很大。为减少计算量,在 传送信息时,常采用传统加密方法与公开密钥加密方法相结合的方式,即信 息采用改进的DES或IDEA对话密钥加密,然后使用RSA密钥加密对话密钥和 信息摘要。对方收到信息后,用不同的密钥解密并可核对信息摘要。 RSA算法是第一个能同时用于加密和数字签名的算法,也易于理解和操作 。RSA是被研究得最广泛的公钥算法,从提出到现在的三十多年里,经历了 各种攻击的考验,逐渐为

11、人们接受,普遍认为是目前最优秀的公钥方案之一 。 RSA算法内容摘要 RSA 的安全性 RSA的安全性依赖于大数分解, 但是否等同于大数分解一直未能得 到理论上的证明,因为没有证明破 解 RSA就一定需要作大数分解。假 设存在一种无须分解大数的算法, 那它肯定可以修改成为大数分解算 法。目前, RSA 的一些变种算法 已被证明等价于大数分解。不管怎 样,分解n是最显然的攻击方法。 现在,人们已能分解多个十进制位 的大素数。因此,模数n 必须选大 一些,因具体适用情况而定。 RSA 加密算法的缺点 1)产生密钥很麻烦,受到素 数产生技术的限制,因而难以做到 一次一密。 2)安全性,RSA的安全性

12、依赖于 大数的因子分解,但并没有从理论 上证明破译RSA的难度与大数分解 难度等价,而且密码学界多数人士 倾向于因子分解不是NPC问题。 3)速度太慢,由于RSA 的分组长 度太大,为保证安全性,n 至少也 要 600 bitx以上,使运算代价很高 ,尤其是速度较慢,较对称密码算 法慢几个数量级;且随着大数分解 技术的发展,这个长度还在增加, 不利于数据格式的标准化。 (2)、ElGamal算法 ElGamal算法既能用于 数据加密也能用于数字签 名,其安全性依赖于计算 有限域上离散对数这一难 题。 算法原理: a、 ElGamal签名 b、 ElGamal 应用: a、随机生成密钥对 b、在

13、软件中判断注册码 (3)DSA算法 Digital Signature Algorithm (DSA)是 Schnorr和ElGamal签名算 法的变种,被美国NIST作 为DSS(DigitalSignature Standard)。 3、对称加密算法 内容: 对称加密(也叫私钥加密)指加密和解密使用相同密钥的加密算法。 有时又叫传统密码算法,就是加密密钥能够从解密密钥中推算出来, 同时解密密钥也可以从加密密钥中推算出来。而在大多数的对称算法 中,加密密钥和解密密钥是相同的,所以也称这种加密算法为秘密密 钥算法或单密钥算法。它要求发送方和接收方在安全通信之前,商定 一个密钥。对称算法的安全性

14、依赖于密钥,泄漏密钥就意味着任何人 都可以对他们发送或接收的消息解密,所以密钥的保密性对通信性至 关重要。 特点: 对称加密算法的特点是算法公开、计算量小、加密速度快、加密效 率高 种类: DES算法,3DES算法,TDEA算法,Blowfish算法,RC5算法, IDEA算法。 (1)、BlowFish BlowFish算法内容: BlowFish是一个容易使用的文件和文件夹 加密软件,只要用鼠标把把文件或文件夹 拖到加密的文档地方。 4、其它算法 (1)、Base64编码 Base64是网络上最常见的用于传输 8Bit字节代码的编码方式之一,大家可 以查看RFC2045RFC2049,上面

15、有 MIME的详细规范。Base64编码可用于 在HTTP环境下传递较长的标识信息。 例如,在Java Persistence系统 Hibernate中,就采用了Base64来将一 个较长的唯一标识符(一般为128-bit的 UUID)编码为一个字符串,用作HTTP 表单和HTTP GET URL中的参数。在其 他应用程序中,也常常需要把二进制数 据编码为适合放在URL(包括隐藏表单 域)中的形式。此时,采用Base64编 码不仅比较简短,同时也具有不可读性 ,即所编码的数据不会被人用肉眼所直 接看到。 (2)、Crypto API 作为 Microsoft Windows 的一部分提供 的应

16、用程序编程接口 (API)。CryptoAPI 提供了一组函数,这些函数允许应用程 序在对用户的敏感私钥数据提供保护时 以灵活的方式对数据进行加密或数字签 名。实际的加密操作是由称为加密服务 提供程序 (CSP) 的独立模块执行。 因为过于复杂的加密算法实现起来非常 困难,所以在过去,许多应用程序只能 使用非常简单的加密技术,这样做的结 果就是加密的数据很容易就可以被人破 译。而使用Microsoft提供的加密应用程 序接口(即Cryptography API),或称 CryptoAPI,就可以方便地在应用程序 中加入强大的加密功能,而不必考虑基 本的算法。本文将对CryptoAPI及其使 用的数据加密原理作一简单的介绍,然 后给出了用CryptoAPI编写加密程序的 大致步骤,最后以一个文件

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 商业/管理/HR > 管理学资料

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号