首页 12 数据的加密保护

12 数据的加密保护

举报
开通vip

12 数据的加密保护null第十二章第十二章数据的加密保护 null在信息时代,数据的安全越来越受到了关注。对于保存在计算机上的某些数据,我们希望其信息不被人所知;对于在网络上传输的重要数据,我们希望即使被敌方窃听之后也不会泄密。此时,将信息进行加密,就成了保障数据安全的首要方法。 加密算法一般可分为对称加密、非对称加密和单向加密三类,由于其特点不同,在不同的系统中具有不同的应用范围,各类算法中都具有一些代表性算法。如对称加密体系中的DES、3DES、AES算法;非对称加密体系中的RSA、DSA算法;单向加密中的MD5、SHA算法等。...

12 数据的加密保护
null第十二章第十二章数据的加密保护 null在信息时代,数据的安全越来越受到了关注。对于保存在计算机上的某些数据,我们希望其信息不被人所知;对于在网络上传输的重要数据,我们希望即使被敌方窃听之后也不会泄密。此时,将信息进行加密,就成了保障数据安全的首要方法。 加密算法一般可分为对称加密、非对称加密和单向加密三类,由于其特点不同,在不同的系统中具有不同的应用范围,各类算法中都具有一些代表性算法。如对称加密体系中的DES、3DES、AES算法;非对称加密体系中的RSA、DSA算法;单向加密中的MD5、SHA算法等。 null一般而言,加密体系中,其最核心的内容是加密算法和密钥;加密算法通常公开,加密系统的安全性决定于密钥的隐蔽性,因此,密钥管理是加密系统中的重要工作。 不同的语言对于加密算法的实现原理基本相同,本章以Java语言为例,实现了一些常见的加密解密算法。对于其他语言实现加密解密,读者可以参考其他文献。 另外,本章还对密钥的安全进行了讲解。 12.1 加密概述12.1 加密概述12.1.1 加密的应用12.1.1 加密的应用我们知道,信息被敌方获取并得知,可能被敌方用于非法的操作以获取利益;加密1是以某种特殊的算法将原有的信息数据进行改变,在这种情况下,未授权的用户即使获得了已加密的信息,但是因为无法知道解密的方法,仍然无法了解信息的内容。数据加密技术已经广泛应用于因特网电子商务、手机网络和银行自动取款机等领域。加密系统中有如下重要概念: 1:明文(plaintext):需要被保护的消息; 2:密文(ciphertext):将明文利用一定算法进行改变后的消息; 3.加密(encryption):将明文利用一定算法转换成密文的过程; 4:解密(decryption):由密文恢复出明文的过程; null5:敌方:也称攻击者,通过各种办法,窃取机密信息,来达到非法的目的; 6:被动攻击(passive attack) ;通过获取密文,其目的是经过 分析 定性数据统计分析pdf销售业绩分析模板建筑结构震害分析销售进度分析表京东商城竞争战略分析 得到明文,这是一类攻击的总称; 7:主动攻击(active attack):非法入侵者采用篡改、伪造等手段向系统注入假消息等,这也是一类攻击的总称; 8:加密算法:对明文进行加密时采用的算法; 9:解密算法:对密文进行解密时采用算法; null这里特别需要强调的一个概念是:密钥(key)。密钥包括加密密钥(encryption key)和解密密钥(decryption key)。由于加密算法和解密算法的操作通常是在一组输入数据的控制下进行的,这组输入数据就叫做密钥,在加密时使用的密钥为加密密钥,解密时使用的密钥为解密密钥。 在密码系统(加密系统和解密系统,为了方便讲解,我们后面也将密码系统称为加密系统)中,有两大主要要素: 密码算法(加密算法和解密算法); 密钥。 两者之间具有紧密的联系。以最简单的“恺撒加密法”为例: 《高卢战记》描述,恺撒大帝曾经使用密码来传递信息,即所谓的“恺撒密码”。它是一种替代密码,通过将字母按顺序推后3位起到加密作用。如将字母A换作字母D,将字母B换作字母E,X、Y、Z字母分别又变为A、B、C字母。如“China”可以变为“Fklqd”;解密过程相反。 null在这个简单的加密方法中,“向右移位”,可以理解为加密算法;“3”可以理解为加密密钥。对于解密过程,“向左移位”,可以理解为解密算法;“3”可以理解为解密密钥。显然,密钥是一种参数,它是在明文转换为密文或将密文转换为明文的算法中输入的数据。 恺撒加密法的安全性来源于两个方面: 对密码算法本身的保密; 对密钥的保密。 单单对密码算法进行保密,以保护信息,在学界和业界已有相当讨论,一般认为是不够安全的。目前在业界中广泛认为的是,加密之所以安全,是因为其密钥的保密,并非加密算法本身的保密。因此,密码算法一般公开,而将密钥进行保密。如果攻击者要通过密文得到明文,除非对每一个可能的密钥进行穷举性测试。从后面的篇幅我们将可以看出,流行的一些加密解密算法一般是完全公开的。敌方如果取得已加密的数据,即使得知加密算法,若没有密钥,也不能进行解密。12.1.2 常见的加密算法12.1.2 常见的加密算法加密技术从本质上说是对信息进行编码和解码的技术。加密是将可读信息(明文)变为代码形式(密文);解密是加密的逆过程,相当于将密文变为明文。加密算法有很多种,这些算法一般可分为三类: 对称加密; 非对称加密; 单向加密。 null对称加密算法应用较早,技术较为成熟。其过程如下: 1:发送方将明文用加密密钥和加密算法进行加密处理,变成密文,连同密钥一起,发送给接收方; 2:接收方收到密文后,使用发送方的加密密钥及相同算法的逆算法对密文解密,恢复为明文。null在对称加密算法中,双方使用的密钥相同,要求解密方事先必须知道对方使用的加密密钥。其算法一般公开,优势是计算量较小、加密速度较快、效率较高。不足之处是,通信双方都使用同样的密钥,密钥在传送的过程中,可能被敌方获取,安全性得不到保证。当然,为了安全起见,用户每次使用该算法,密钥可以更换,但是原来通信的密钥也不能马上删除,这样,使得双方所拥有的密钥数量很大,对于双方来说,密钥管理较为困难。 对称加密算法中,目前流行的算法有: DES; 3DES; IDEA; AES;等等。 其中,AES由美国国家标准局倡导,即将作为新标准取代DES。null与对称加密算法不同,非对称加密算法需要两个密钥:公开密钥(publickey)和私有密钥(privatekey)。每个人都可以产生这两个密钥,其中,公开密钥对外公开(可以通过网上发布,也可以传输给通信的对方),私有密钥不公开。对于同一段数据,利用非对称加密算法具有如下性质: 如果用公开密钥对数据对其进行加密,那么只有用对应的私有密钥才能对其解密; 如果用私有密钥对数据对其进行加密,那么只有用对应的公开密钥才能对其解密。 null非对称加密算法的基本过程是: 1:通信前,接收方随机生成一对公开密钥和私有密钥,将公开密钥公开给发送方,自己保留私有密钥; 2:发送方利用接收方的公开密钥加密明文,使其变为密文; 3:接收方收到密文后,使用自己的私有密钥解密密文,获得明文。 目前,在非对称密码体系中,使用得比较广泛的是非对称加密算法有: RSA; 美国国家标准局提出的DSA;等等。 null和对称加密算法相比,非对称加密算法的保密性比较好,在通信的过程中,只存在公开密钥在网络上的传输,而公开密钥被敌方获取,也没有用;因此,基本不用担心密钥在网上被截获而引起的安全的问题。但该加密体系中,加密和解密花费时间比较长、速度比较慢,一般情况下,它不适合于对大量数据的文件进行加密,而只适用于对少量数据进行加密。 null另一类算法是单向加密算法。该算法在加密过程中,输入明文后由系统直接经过加密算法处理,得到密文,不需要使用密钥。既然没有密钥,那么就无法通过密文恢复为明文。 那么这种方法有什么应用呢?主要是可以用于进行某些信息的鉴别。在鉴别时,重新输入明文,并经过同样的加密算法进行加密处理,得到密文,然后看这个密文是否和以前得到的密文相同,来判断输入的明文是否和以前的明文相同。这在某种程度上讲,也是一种解密。null该方法计算复杂,通常只在数据量不大的情形下使用,如计算机系统口令保护 措施 《全国民用建筑工程设计技术措施》规划•建筑•景观全国民用建筑工程设计技术措施》规划•建筑•景观软件质量保证措施下载工地伤害及预防措施下载关于贯彻落实的具体措施 中,这种加密算法就得到了广泛的应用。近年来,单向加密的应用领域正在逐渐增大。应用较多单向加密算法的有: RSA公司发明的MD5算法; 美国国家安全局(NSA) 设计 领导形象设计圆作业设计ao工艺污水处理厂设计附属工程施工组织设计清扫机器人结构设计 ,美国国家标准与技术研究院(NIST) 发布的SHA;等等。 大多数语言体系(如.net、Java)都具有相关的API支持各种加密算法。本章以 Java语言为例来阐述加密解密过程,这些算法在其他语言中的实现,读者可以参考相关资料。提示提示本书中对加密算法的实现,实际上利用了高级语言中包装的API。也就是说,我们并不对算法本身进行讲述,只对算法的实现进行介绍。如果要进行底层加密算法的实现,读者可以参考相关文献。 实际上,在真实应用的场合,我们可以使用系统提供的加密解密函数进行加密解密,因为这些函数的发布,经过了严密的测试,理论上讲是安全的。 12.2 实现对称加密12.2 实现对称加密null如前所述,对称加密算法过程中,发送方将明文和加密密钥一起经过加密算法处理,变成密文,发送出去;接收方收到密文后,使用加密密钥及相同算法的逆算法对密文解密,恢复为明文。双方使用的密钥相同,要求解密方事先必须知道加密密钥。从这里可以得出几个结论: 1:加密时使用什么密钥,解密时必须使用相同的密钥,否则将无法对密文进行解密。 2:对同样的信息,从理论上讲,不同的密钥,加密结果不相同;同样的密文,用不同的密钥解密,结果也应该不同。 本节介绍三种流行的对称加密算法:DES、3DES和AES。在编程的过程中,我们力求用不同的构架来向读者展示加密和解密的过程。12.2.1 用Java实现DES 12.2.1 用Java实现DES DES是数据加密标准2(Data Encryption Standard)的简称,来源于 IBM 的研究工作,并在 1977 年被美国政府正式采纳。这种密钥系统使用得非常广泛,最初开发DES是嵌入硬件中,后来在其他领域得到了发展,目前,在金融数据安全保护等领域,DES发挥了巨大的作用。 DES算法的基本思想如下: 首先确定一个64位的初始密钥K(也称为主密钥),在这64位中,实际的密钥只有56位,另有8位是奇偶校验位,分布于64位密钥中,每8位中有1 位奇偶检验位。加密过程比较复杂,具体大家可以参考相关文献。null要对DES进行攻击,一般只能使用穷举的密钥搜索方法,即重复尝试各种密钥,直到找到符合的为止。但这样几乎是不可能的,如果 DES使用56位的密钥,则可能的密钥数量是256个。 关于DES的其他信息,可以参考相关资料。 在对称加密中,解密和加密的密钥一定要相同。以下代码是用Java语言实现将一个字符串“郭克华_安全编程技术”先加密,然后用同样的密钥解密的过程。不过,由于本书不是讲解某种语言本身,所以在这里略过Java加密体系的讲解,在代码中如果出现新的API,读者可以参考Java文档。提示提示值得一提的是,在读者的机器上运行,密文的内容会不一样。因为KeyGenerator每次生成的密钥是随机的,加密的结果肯定也不一样。这很容易理解,否则DES算法就没有安全性可言了。 另外,本例中,加密和解密一定要是同一个密钥。 12.2.2 用Java实现3DES 12.2.2 用Java实现3DES 3DES,即三重DES,是DES的加强版,也是DES的一个更安全的变形。它使用3个56位(共168位)的密钥对数据进行三次加密,和DES相比,安全性得到了较大的提高。实际上,3DES是一个过渡的加密算法。1999年,NIST将3-DES指定为DES向AES过渡的加密标准。 3DES以DES为基本模块,通过组合分组方法设计出分组加密算法。若三个密钥互不相同,本质上就相当于用一个长为168位的密钥进行加密,大大加强了数据的安全性。若数据对安全性要求不高,可以让其中的两个密钥相等,这样,密钥的有效长度也有112位。 在Java的加密体系中,使用3DES非常简单,程序结构和使用DES时相同,只不过在初始化时将算法名称由“DES”改为“DESede”即可。12.2.3 用Java实现AES 12.2.3 用Java实现AES AES在密码学中是高级加密标准(Advanced Encryption Standard)的缩写,该标准是NIST推出旨在取代DES的21世纪的加密标准,已被多方分析且广为使用,在对称加密系统中,成为最流行的算法之一。 提示 AES算法又称Rijndael密码算法,该算法为比利时密码学家Joan Daemen和Vincent Rijmen所设计,结合两位作者的名字,以Rijndael命名。 nullAES算法已被广泛应用在各个领域中。AES设计的密钥长度有:128,192,256位三种,比DES的56密钥安全性能好得多。关于其具体思路,读者可以参考密码学书籍。 P12_03.java是用Java语言实现AES算法,将一个字符串“郭克华_安全编程技术”先加密,然后用同样的密钥解密。在代码中如果出现新的API,读者可以参考Java文档。 运行,效果如下: 12.3 实现非对称加密12.3 实现非对称加密null在非对称加密算法体系中,接收方产生一个公开密钥和一个私有密钥,公开密钥可以通过各种手段公开。发送方将明文用接收方的公开密钥进行处理,变成密文,发送出去;接收方收到密文后,使用自己的私有密钥对密文解密,恢复为明文。在这种通信过程中,密钥由接收方产生,公开密钥公开,私有密钥保密。该通信过程中,有如下几个特点: 1:加密时使用的公开密钥,解密时必须使用对应的私有密钥,否则无法将密文解密。 2:对同样的信息,可以用公开密钥加密,用私有密钥解密;也可以用私有密钥加密,用公开密钥解密。在应付窃听上,前者用得较多,但是在对付信息篡改和抵赖上,后者用得较多。 本节介绍2种流行的非对称加密算法:RSA和DSA。12.3.1 用Java实现RSA 12.3.1 用Java实现RSA RSA算法出现于上个世纪70年代,它既能用于数据加密,也能用于数字签名。由于其易于理解和容易操作,流行程度较广。 该算法由Ron Rivest、AdiShamir和Leonard Adleman发明,也就以三人的名字命名。针对RSA的研究比较广泛,在使用的过程中,经历了各种攻击的考验,逐渐被普遍认为是目前最优秀的公钥 方案 气瓶 现场处置方案 .pdf气瓶 现场处置方案 .doc见习基地管理方案.doc关于群访事件的化解方案建筑工地扬尘治理专项方案下载 之一。 RSA的安全性依赖于大数的因子分解,虽然目前并没有从理论上证明破译RSA的难度与大数分解难度等价,不过这并不影响RSA的流行性。null关于RSA算法的描述,读者可以参考相关文献。RSA 可用于数字签名,具体操作时考虑到安全性和信息量较大等因素,一般可以先作HASH运算。 由于进行的都是大数计算,使得RSA最大的问题是运行时间较长。无论是软件还是硬件实现,RSA的运行速度一直不能和DES相比,一般来说只用于少量数据加密情况。 P12_04.java是用Java语言实现RSA算法,将一个字符串“郭克华_安全编程技术”先加密,然后用同样的密钥解密。在代码中如果出现新的API,读者可以参考Java文档。 运行,效果如下: 12.3.2 DSA算法12.3.2 DSA算法数字签名算法(Digital Signature Algorithm,DSA),也是一种非对称加密算法,被美国NIST作为数字签名标准(DigitalSignature Standard, DSS)。DSA一般应用于数字签名中,在后面的章节将会讲解。 12.4 实现单向加密12.4 实现单向加密null单向加密算法,又称为不可逆加密算法,在加密过程中不需要使用密钥,明文由系统加密处理成密文,密文无法解密。一般适合于数据的验证。在验证过程中,重新输入明文,并经过同样的加密算法处理,看能否得到相同的密文,由此判断明文的正确性。该算法有如下特点: 1:加密算法对同一消息反复执行该函数总得到相同的密文; 2:加密算法生成的密文是不可预见的,密文看起来和明文没有任何关系; 3:明文的任何微小变化都会对生成的密文产生很大的影响; 4:具有不可逆性。即通过密文要得到明文,理论上是不可行的。 本节介绍2种流行的单向加密算法:MD5和SHA。12.4.1 用Java实现MD5 12.4.1 用Java实现MD5 MD5的全称是Message-digest Algorithm 5(信息-摘要算法),最初的目标是用于确保信息传输过程中的完整一致性。MD5算法由MD2和MD4发展而来。它的基本思想是:将大容量信息变换成一个定长的大整数,这个大整数对这个信息来说是单向的。一般来说,这个大整数称为消息摘要。MD5能够获得一个随机长度的信息,然后产生一个128位的信息摘要。 MD5广泛用于密码认证、软件序列号等领域中。相关信息大家可以参考相应文献。 P12_07.java是用Java语言实现MD5算法,将一个字符串“郭克华_安全编程技术”加密。在代码中如果出现新的API,读者可以参考Java文档。null运行,效果如下: 反复运行,效果一样。 在读者的机器上,得到的也是相同的效果。 12.4.2 用Java实现SHA 12.4.2 用Java实现SHA 安全散列算法(Secure Hash Algorithm,SHA)是NIST发布的国家标准,一般称为SHA-1,该算法也是一种单向加密算法,输入长度不超过264二进制位消息,产生160位的消息摘要输出。 P12_06.java是用Java语言实现SHA算法,将一个字符串“郭克华_安全编程技术”进行加密。 运行,效果如下: 反复运行,效果一样。在读者的机器上,得到的也是相同的效果。 12.4.3 用Java实现消息验证码12.4.3 用Java实现消息验证码单向加密的结果也叫做消息摘要,因为不同的数据加密得到的结果不同,因此可以较好地验证数据的完整性。利用MD5算法生成消息摘要,可以验证数据是否被修改,方法是:根据收到的数据,重新利用MD5算法生成摘要,和原来的摘要相比较,如果相同,说明数据没有被修改,反之,说明数据被修改了。 但是,这无法完全阻止数据的修改。如果在数据传递过程中,窃取者将数据窃取出来,并且修改数据,再重新生成一次摘要,将改后的数据和重新计算的摘要发送给接收者,接收者利用算法对修改过的数据进行验证时,生成的消息摘要和收到的消息摘要仍然相同,消息被判断为“没有被修改”。这是一个安全隐患。 因此,为了确保安全性,我们有时除了需要知道消息和消息摘要之外,还需要知道发送者身份,本节所讲解的消息验证码,在一定程度上可以实现这个功能,以保证安全性。null消息验证码和MD5/SHA1算法不同的地方是:在生成摘要时,发送者和接收者都拥有一个共同的密钥。这个密钥可以是通过对称密码体系生成的,事先被双方共有,在生成消息验证码时,还必须要有密钥的参与。只有同样的密钥才能生成同样的消息验证码。 Java里面可以较好地完成这个功能。P12_07.java是用Java语言实现HMAC/MD5算法,将一个字符串“郭克华_安全编程技术”进行加密。 null运行,效果如下: 注意,该程序反复运行,效果不一样,在读者的机器上,结果和本书中也会有所不同,因为每次生成的DES密钥不一样。 在实际操作的过程中,为了保证双方得到的是相同的密钥,DES密钥是保存在文件中或者数据库中,然后从其中取出,这样可以保证得到的消息摘要是一样的。敌方即使得知了消息本身,但是由于得不到密钥,也无法生成正确的消息验证码。敌方篡改过的数据在验证是将无法通过。12.5 密钥安全 12.5 密钥安全 null从前面的例子可以看出,对称和非对称加密系统的安全工作,依赖于两个方面:加密算法和密钥。一般情况下,加密算法都是公开的,所以,加密系统的安全性依赖于密钥的安全。一般说来,好的密钥应该满足以下特性: 1:不同情况下生成的密钥应是独立的、互不相关的,即每次生成的密钥和其他密钥无关。 2:密钥值应是不可预测的。 3:密钥值在某个范围内实现均匀分布。 本节主要针对密钥安全进行阐述。 12.5.1 随机数安全12.5.1 随机数安全实现密钥的以上特点,随机数起到了很大的作用。随机数生成是许多加密操作不可分割的组成部分,常常被用作密钥的生成。同理,随机数也应有三个特性: 均匀分布; 数值不可预测; 互不相关。 如果达不到这几个特性,随机数就认为是不良的,对系统的安全性会产生巨大的影响。 产生随机数,有多种不同的方法。这些方法被称为随机数发生器,基本上所有的高级语言都封装了随机数发生器。null看P12_08.java 。 运行,打印: 再次运行,你会发现,打印的结果一样。在相同的平台环境下,每次运行它,显示的随机数都是相同的。 这是因为,在相同的编译平台环境下,由随机种子生成随机数的计算方法都是一样的,再加上随机种子一样,所以产生的随机数就是一样的。 null解决这个问题的方法是:可以设定一个随机种子来产生随机数。以下内容可以帮你设置种子: 1:系统时钟; 2:底层系统信息,如空闲进程时间、IO读写计数等; 3:环境信息,如CPU的温度; 等等。 在文献一书中,作者在列举了Windows中的CryGenRandom()函数,并通过例子,说明这个随机数生成器比rand()函数更加健壮,它可以从系统的众多资源中获取种子的随机性。有兴趣的读者可以参考相关文献。 null以Java为例,可改为P12_09.java 。 本程序中,利用系统时间作为种子,运行,产生的随机数为: 重新运行,结果不一样。这里用户使用系统时间的值做为随机种子,由于系统时间对应的数值是不断变化的,所以,在相同的平台环境下,每次运行它,显示的随机数结果会有不同。不过,值得一提的是,这里产生的随机数是伪随机数(为什么?请读者自己思考)。null在Java中,如果用户或第三方不设置随机种子,那么在默认情况下随机种子来自系统时钟。如下代码: 每次运行产生的随机数也会不一样。 但是,其他语言中可能不是这样,比如VB中,需要用Randomize()函数来首先设置一下随机种子,否则系统无法得到伪随机数。 Random rnd = new Random(); System.out.println(rnd.nextInt()); System.out.println(rnd.nextInt()); System.out.println(rnd.nextInt()); 12.5.2 密钥管理安全12.5.2 密钥管理安全密钥管理是一件很复杂的事情,从密钥的产生到密钥的销毁的各个方面都需要考虑。主要表现于: 密钥的管理体制; 密钥的管理 协议 离婚协议模板下载合伙人协议 下载渠道分销协议免费下载敬业协议下载授课协议下载 ; 密钥产生产生、分配、销毁;等等。 由于不同的加密体系,密钥产生之后的使用方法各不相同。如对称加密体系中,双方密钥必须相同;非对称加密体系中,公钥私钥要成对出现,因此,本节从各种加密方法进行讲解。null1:对称加密体系中的密钥管理。对称加密体系中,采用对称加密技术的通信双方必须要保证采用的是相同的密钥,由于密钥双方都需要知道,因此只能通过秘密的方法传送。这就为密钥的传递带来了风险,必须保证彼此密钥的交换是安全可靠的,主要是防止密钥泄露或者被敌方更改。因此,对称密钥的管理和分发工作是一件很有风险的事情。 解决这个问题的方法一般是:通过非对称密码体系来对对称密钥进行管理(采用该方法的一个原因是由于非对称密码体系适合对少量数据进行加密解密)。具体过程如下(为描述简便,此处只涉及到密钥,没有涉及到被加密的数据信息,实际上,被加密的数据信息也存在于通信的过程中): 发送方生成对称密钥,将其用接收方的公开密钥加密,发出; 接收方用自己的私钥将加密后的对称密钥解密,得到对称密钥。 null由于对每次信息发送和接收,都对应了惟一一个对称密钥,因此双方不需要对密钥进行维护,另外,即使泄露了密钥,敌方也无法知道密钥的内容,因为他不知道接收方的私人密钥,无法对对称密钥进行解密。 这种方式使得管理相对简单和安全,同时,该方法还解决了对称密钥中存在的密钥篡改问题。 null2:非对称加密体系中的密钥管理。在该体系中,主要涉及的是公开密钥管理。一般情况下,通信双方间可以使用数字证书(公开密钥证书)来交换公开密钥。 国际电信联盟(ITU)制定的标准X.509,对数字证书进行了定义,利用数字证书,可以确定如下内容: 证书所有者名称; 证书发布者的名称; 证书所有者的公开密钥; 证书发布者的数字签名; 证书的有效期及证书的序列号;等等。 信息,而证书发布者一般都是证书管理机构(CA),它是通信各方都信赖的机构。关于数字证书的相关知识,读者可以参考相关文献null近年来,还出现了一些密钥管理芯片。密钥管理芯片是专门为嵌入式程序的防攻击,以及密钥管理而设计的新一代加密芯片。可用于消费类电子产品的如视频处理板卡的数据流加密解密、游戏机板、路由器、机顶盒等。由于其加密解密速度较快,也得到了较为广泛的应用。 小结小结本章首先讲解了加密的意义,然后介绍了常见的三种加密体系中的一些算法:对称加密体系中的DES、3DES、AES算法;非对称加密体系中的RSA、DSA算法;单向加密中的MD5、SHA算法。每一种算法,基于Java语言进行了实现,并分析了它们的特点。 由于加密算法通常是公开的,加密系统的安全性决定于密钥的隐蔽性,因此,密钥安全是加密系统中的重要工作。本文在后面的篇幅中,讲解了密钥安全中的两个问题:随机数和密钥管理。练习练习1:对称加密体系具有较为广泛的应用。任写一个文本文件,将其内容用DES、AES方式加密然后解密。 2:非对称加密体系和对称加密体系相比,具有自己的优势。任写一个文本文件,将其内容用RSA方法加密然后解密。 3:单向加密算法不需要密钥,在数据认证方面具有较为广泛的应用。任写一个文本文件,将其内容用MD5算法进行加密,然后修改这个文本文件,再加密,比较两次的密文。 4:编写一个“软件加密器”:打开一个Java界面,必须首先选择一个破解文件,如果能够找到正确的破解文件,该Java界面才能打开;否则提示:软件没有破解,无法使用某些功能。null5:查询相关资料,了解DES算法的内部原理,用C语言实现DES加密算法和解密算法。 6:请查找关于“中国山东大学王小云教授破解MD5算法”的报道,了解以下问题: (1) 这里的“破解”是什么含义? (2) 是否可以说明,可以由明文推测出密文或者密文推测出明文? 7:消息验证码和普通的单向加密,都可以生成消息摘要进行消息认证,请比较两者有何不同? 8:对称密码中,密钥的安全性表现在哪些方面? 9:为什么说计算机生成的随机数是伪随机数? 10:非对称密码体系中,怎样进行密钥管理?
本文档为【12 数据的加密保护】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_592957
暂无简介~
格式:ppt
大小:679KB
软件:PowerPoint
页数:0
分类:互联网
上传时间:2012-10-20
浏览量:17