详解加密技术概念、加密方法以及应用

时间:2024-02-19 07:26:41 其他范文 收藏本文 下载本文

详解加密技术概念、加密方法以及应用(精选5篇)由网友“SZGO168”投稿提供,以下是小编帮大家整理后的详解加密技术概念、加密方法以及应用,供大家参考借鉴,希望可以帮助到您。

详解加密技术概念、加密方法以及应用

篇1:详解加密技术概念、加密方法以及应用

详解加密技术概念、加密方法以及应用

随着网络技术的发展,网络安全也就成为当今网络社会的焦点中的焦点,几乎没有人不在谈论网络上的安全问题,病毒、黑客程序、邮件炸弹、远程侦听等这一切都无不让人胆战心惊。病毒、黑客的猖獗使身处今日网络社会的人们感觉到谈网色变,无所适从。

但我们必需清楚地认识到,这一切一切的安全问题我们不可一下全部找到解决方案,况且有的是根本无法找到彻底的解决方案,如病毒程序,因为任何反病毒程序都只能在新病毒发现之后才能开发出来,目前还没有哪能一家反病毒软件开发商敢承诺他们的软件能查杀所有已知的和未知的病毒,所以我们不能有等网络安全了再上网的念头,因为或许网络不能有这么一日,就象“矛”与“盾”,网络与病毒、黑客永远是一对共存体。

现代的电脑加密技术就是适应了网络安全的需要而应运产生的,它为我们进行一般的电子商务活动提供了安全保障,如在网络中进行文件传输、电子邮件往来和进行合同文本的签署等。其实加密技术也不是什么新生事物,只不过应用在当今电子商务、电脑网络中还是近几年的历史。下面我们就详细介绍一下加密技术的方方面面,希望能为那些对加密技术还一知半解的朋友提供一个详细了解的机会!

一、加密的由来

加密作为保障数据安全的一种方式,它不是现在才有的,它产生的历史相当久远,它是起源于要追溯于公元前(几个世纪了),虽然它不是现在我们所讲的加密技术(甚至不叫加密),但作为一种加密的概念,确实早在几个世纪前就诞生了。当时埃及人是最先使用特别的象形文字作为信息编码的,随着时间推移,巴比伦、美索不达米亚和希腊文明都开始使用一些方法来保护他们的书面信息。

近期加密技术主要应用于军事领域,如美国独立战争、美国内战和两次世界大战。最广为人知的编码机器是German Enigma机,在第二次世界大战中德国人利用它创建了加密信息。此后,由于Alan Turing和Ultra计划以及其他人的努力,终于对德国人的密码进行了破解。当初,计算机的研究就是为了破解德国人的密码,人们并没有想到计算机给今天带来的信息革命。随着计算机的发展,运算能力的增强,过去的密码都变得十分简单了,于是人们又不断地研究出了新的数据加密方式,如利用ROSA算法产生的私钥和公钥就是在这个基础上产生的。

二、加密的概念

数据加密的基本过程就是对原来为明文的文件或数据按某种算法进行处理,使其成为不可读的一段代码,通常称为“密文”,使其只能在输入相应的密钥之后才能显示出本来内容,通过这样的途径来达到保护数据不被非法人窃取、阅读的目的。该过程的逆过程为解密,即将该编码信息转化为其原来数据的过程。

三、加密的理由

当今网络社会选择加密已是我们别无选择,其一是我们知道在互联网上进行文件传输、电子邮件商务往来存在许多不安全因素,特别是对于一些大公司和一些机密文件在网络上传输。而且这种不安全性是互联网存在基础――TCP/IP协议所固有的,包括一些基于TCP/IP的服务;另一方面,互联网给众多的商家带来了无限的商机,互联网把全世界连在了一起,走向互联网就意味着走向了世界,这对于无数商家无疑是梦寐以求的好事,特别是对于中小企业。为了解决这一对矛盾、为了能在安全的基础上大开这通向世界之门,我们只好选择了数据加密和基于加密技术的数字签名。

加密在网络上的作用就是防止有用或私有化信息在网络上被拦截和窃取。一个简单的例子就是密码的传输,计算机密码极为重要,许多安全防护体系是基于密码的,密码的泄露在某种意义上来讲意味着其安全体系的全面崩溃。

通过网络进行登录时,所键入的密码以明文的形式被传输到服务器,而网络上的窃听是一件极为容易的事情,所以很有可能黑客会窃取得用户的密码,如果用户是Root用户或Administrator用户,那后果将是极为严重的。

还有如果你公司在进行着某个招标项目的投标工作,工作人员通过电子邮件的方式把他们单位的标书发给招标单位,如果此时有另一位竞争对手从网络上窃取到你公司的标书,从中知道你公司投标的标的,那后果将是怎样,相信不用多说聪明的你也明白。

这样的例子实在是太多了,解决上述难题的方案就是加密,加密后的口令即使被黑客获得也是不可读的,加密后的标书没有收件人的私钥也就无法解开,标书成为一大堆无任何实际意义的乱码。总之无论是单位还是个人在某种意义上来说加密也成为当今网络社会进行文件或邮件安全传输的时代象征!

数字签名就是基于加密技术的,它的作用就是用来确定用户是否是真实的。应用最多的还是电子邮件,如当用户收到一封电子邮件时,邮件上面标有发信人的姓名和信箱地址,很多人可能会简单地认为发信人就是信上说明的那个人,但实际上伪造一封电子邮件对于一个通常人来说是极为容易的事。在这种情况下,就要用到加密技术基础上的数字签名,用它来确认发信人身份的真实性。

类似数字签名技术的还有一种身份认证技术,有些站点提供入站FTP和WWW服务,当然用户通常接触的这类服务是匿名服务,用户的权力要受到限制,但也有的这类服务不是匿名的,如某公司为了信息交流提供用户的合作伙伴非匿名的FTP服务,或开发小组把他们的Web网页上载到用户的WWW服务器上,现在的问题就是,用户如何确定正在访问用户的服务器的人就是用户认为的那个人,身份认证技术就是一个好的解决方案。

在这里需要强调一点的就是,文件加密其实不只用于电子邮件或网络上的文件传输,其实也可应用静态的文件保护,如PIP软件就可以对磁盘、硬盘中的文件或文件夹进行加密,以防他人窃取其中的信息。

四、两种加密方法

加密技术通常分为两大类:“对称式”和“非对称式”。

对称式加密就是加密和解密使用同一个密钥,通常称之为“Session Key ”这种加

密技术目前被广泛采用,如美国政府所采用的DES加密标准就是一种典型的“对称式”加密法,它的Session Key长度为56Bits。

非对称式加密就是加密和解密所使用的不是同一个密钥,通常有两个密钥,称为“公钥”和“私钥”,它们两个必需配对使用,否则不能打开加密文件。这里的“公钥”是指可以对外公布的,“私钥”则不能,只能由持有人一个人知道。它的优越性就在这里,因为对称式的加密方法如果是在网络上传输加密文件就很难把密钥告诉对方,不管用什么方法都有可能被别窃听到。而非对称式的加密方法有两个密钥,且其中的“公钥”是可以公开的,也就不怕别人知道,收件人解密时只要用自己的私钥即可以,这样就很好地避免了密钥的传输安全性问题。

五、加密技术中的摘要函数(MAD、MAD和MAD)

摘要是一种防止改动的方法,其中用到的函数叫摘要函数。这些函数的输入可以是任意大小的消息,而输出是一个固定长度的摘要。摘要有这样一个性质,如果改变了输入消息中的任何东西,甚至只有一位,输出的摘要将会发生不可预测的改变,也就是说输入消息的每一位对输出摘要都有影响。总之,摘要算法从给定的文本块中产生一个数字签名(fingerprint或message digest),数字签名可以用于防止有人从一个签名上获取文本信息或改变文本信息内容和进行身份认证。摘要算法的'数字签名原理在很多加密算法中都被使用,如SO/KEY和PIP(pretty good privacy)。

现在流行的摘要函数有MAD和MAD,但要记住客户机和服务器必须使用相同的算法,无论是MAD还是MAD,MAD客户机不能和MAD服务器交互。

MAD摘要算法的设计是出于利用32位RISC结构来最大其吞吐量,而不需要大量的替换表(substitution table)来考虑的。

MAD算法是以消息给予的长度作为输入,产生一个128位的“指纹”或“消息化”。要产生两个具有相同消息化的文字块或者产生任何具有预先给定“指纹”的消息,都被认为在计算上是不可能的。

MAD摘要算法是个数据认证标准。MAD的设计思想是要找出速度更快,比MAD更安全的一种算法,MAD的设计者通过使MAD在计算上慢下来,以及对这些计算做了一些基础性的改动来解决安全性这一问题,是MAD算法的一个扩展。

六、密钥的管理

密钥既然要求保密,这就涉及到密钥的管理问题,管理不好,密钥同样可能被无意识地泄露,并不是有了密钥就高枕无忧,任何保密也只是相对的,是有时效的。要管理好密钥我们还要注意以下几个方面:

1、密钥的使用要注意时效和次数

如果用户可以一次又一次地使用同样密钥与别人交换信息,那么密钥也同其它任何密码一样存在着一定的安全性,虽然说用户的私钥是不对外公开的,但是也很难保证私钥长期的保密性,很难保证长期以来不被泄露。如果某人偶然地知道了用户的密钥,那么用户曾经和另一个人交换的每一条消息都不再是保密的了。另外使用一个特定密钥加密的信息越多,提供给窃听者的材料也就越多,从某种意义上来讲也就越不安全了。

因此,一般强调仅将一个对话密钥用于一条信息中或一次对话中,或者建立一种按时更换密钥的机制以减小密钥暴露的可能性。

2、多密钥的管理

假设在某机构中有100个人,如果他们任意两人之间可以进行秘密对话,那么总共需要多少密钥呢?每个人需要知道多少密钥呢?也许很容易得出答案,如果任何两个人之间要不同的密钥,则总共需要4950个密钥,而且每个人应记住99个密钥。如果机构的人数是1000、10000人或更多,这种办法就显然过于愚蠢了,管理密钥将是一件可怕的事情。

Kerberos提供了一种解决这个较好方案,它是由MIT发明的,使保密密钥的管理和分发变得十分容易,但这种方法本身还存在一定的缺点。为能在因特网上提供一个实用的解决方案,Kerberos建立了一个安全的、可信任的密钥分发中心(Key Distribution Center,KDC),每个用户只要知道一个和KDC进行会话的密钥就可以了,而不需要知道成百上千个不同的密钥。

假设用户甲想要和用户乙进行秘密通信,则用户甲先和KDC通信,用只有用户甲和KDC知道的密钥进行加密 ,用户甲告诉KDC他想和用户乙进行通信,KDC会为用户甲和用户乙之间的会话随机选择一个对话密钥,并生成一个标签,这个标签由KDC和用户乙之间的密钥进行加密,并在用户甲启动和用户乙对话时,用户甲会把这个标签交给用户乙。这个标签的作用是让用户甲确信和他交谈的是用户乙,而不是冒充者。因为这个标签是由只有用户乙和KDC知道的密钥进行加密的,所以即使冒充者得到用户甲发出的标签也不可能进行解密,只有用户乙收到后才能够进行解密,从而确定了与用户甲对话的人就是用户乙。

当KDC生成标签和随机会话密码,就会把它们用只有用户甲和KDC知道的密钥进行加密,然后把标签和会话钥传给用户甲,加密的结果可以确保只有用户甲能得到这个信息,只有用户甲能利用这个会话密钥和用户乙进行通话。同理,KDC会把会话密码用只有KDC和用户乙知道的密钥加密,并把会话密钥给用户乙。

用户甲会启动一个和用户乙的会话,并用得到的会话密钥加密自己和用户乙的会话,还要把KDC传给它的标签传给用户乙以确定用户乙的身份,然后用户甲和用户乙之间就可以用会话密钥进行安全的会话了,而且为了保证安全,这个会话密钥是一次性的,这样黑客就更难进行破解了。同时由于密钥是一次性由系统自动产生的,则用户不必记那么多密钥了,方便了人们的通信。

七、数据加密的标准

&n

bsp;最早、最著名的保密密钥或对称密钥加密算法DES(Data Encryption Standard)是由IBM公司在70年代发展起来的,并经政府的加密标准筛选后,于1976年11月被美国政府采用,DES随后被美国国家标准局和美国国家标准协会(American National Standard Institute,ANSI)承认。    DES使用56位密钥对64位的数据块进行加密,并对64位的数据块进行16轮编码。与每轮编码时,一个48位的“每轮”密钥值由56位的完整密钥得出来。DES用软件进行解码需用很长时间,而用硬件解码速度非常快。幸运的是,当时大多数黑客并没有足够的设备制造出这种硬件设备。在1977年,人们估计要耗资两千万美元才能建成一个专门计算机用于DES的解密,而且需要12个小时的破解才能得到结果。当时DES被认为是一种十分强大的加密方法。

随着计算机硬件的速度越来越快,制造一台这样特殊的机器的花费已经降到了十万美元左右,而用它来保护十亿美元的银行,那显然是不够保险了。另一方面,如果只用它来保护一台普通服务器,那么DES确实是一种好的办法,因为黑客绝不会仅仅为入侵一个服务器而花那么多的钱破解DES密文。

另一种非常著名的加密算法就是RSA了,RSA(Rivest-Shamir-Adleman)算法是基于大数不可能被质因数分解假设的公钥体系。简单地说就是找两个很大的质数。一个对外公开的为“公钥”(Prblic key) ,另一个不告诉任何人,称为“私钥”(Private key)。这两个密钥是互补的,也就是说用公钥加密的密文可以用私钥解密,反过来也一样。

假设用户甲要寄信给用户乙,他们互相知道对方的公钥。甲就用乙的公钥加密邮件寄出,乙收到后就可以用自己的私钥解密出甲的原文。由于别人不知道乙的私钥,所以即使是甲本人也无法解密那封信,这就解决了信件保密的问题。另一方面,由于每个人都知道乙的公钥,他们都可以给乙发信,那么乙怎么确信是不是甲的来信呢?那就要用到基于加密技术的数字签名了。

甲用自己的私钥将签名内容加密,附加在邮件后,再用乙的公钥将整个邮件加密(注意这里的次序,如果先加密再签名的话,别人可以将签名去掉后签上自己的签名,从而篡改了签名)。这样这份密文被乙收到以后,乙用自己的私钥将邮件解密,得到甲的原文和数字签名,然后用甲的公钥解密签名,这样一来就可以确保两方面的安全了。

八、加密技术的应用

加密技术的应用是多方面的,但最为广泛的还是在电子商务和VPN上的应用,下面就分别简叙。

1、在电子商务方面的应用

电子商务(E-business)要求顾客可以在网上进行各种商务活动,不必担心自己的信用卡会被人盗用。在过去,用户为了防止信用卡的号码被窃取到,一般是通过电话订货,然后使用用户的信用卡进行付款。现在人们开始用RSA(一种公开/私有密钥)的加密技术,提高信用卡交易的安全性,从而使电子商务走向实用成为可能。

许多人都知道NETSCAPE公司是Internet商业中领先技术的提供者,该公司提供了一种基于RSA和保密密钥的应用于因特网的技术,被称为安全插座层(Secure Sockets Layer,SSL)。

也许很多人知道Socket,它是一个编程界面,并不提供任何安全措施,而SSL不但提供编程界面,而且向上提供一种安全的服务,SSL3.0现在已经应用到了服务器和浏览器上,SSL2.0则只能应用于服务器端。

SSL3.0用一种电子证书(electric certificate)来实行身份进行验证后,双方就可以用保密密钥进行安全的会话了。它同时使用“对称”和“非对称”加密方法,在客户与电子商务的服务器进行沟通的过程中,客户会产生一个Session Key,然后客户用服务器端的公钥将Session Key进行加密,再传给服务器端,在双方都知道Session Key后,传输的数据都是以Session Key进行加密与解密的,但服务器端发给用户的公钥必需先向有关发证机关申请,以得到公证。

基于SSL3.0提供的安全保障,用户就可以自由订购商品并且给出信用卡号了,也可以在网上和合作伙伴交流商业信息并且让供应商把订单和收货单从网上发过来,这样可以节省大量的纸张,为公司节省大量的电话、传真费用。在过去,电子信息交换(Electric Data Interchange,EDI)、信息交易(information transaction)和金融交易(financial transaction)都是在专用网络上完成的,使用专用网的费用大大高于互联网。正是这样巨大的诱惑,才使人们开始发展因特网上的电子商务,但不要忘记数据加密。

2、加密技术在VPN中的应用

现在,越多越多的公司走向国际化,一个公司可能在多个国家都有办事机构或销售中心,每一个机构都有自己的局域网LAN(Local Area Network),但在当今的网络社会人们的要求不仅如此,用户希望将这些LAN连结在一起组成一个公司的广域网,这个在现在已不是什么难事了。

事实上,很多公司都已经这样做了,但他们一般使用租用专用线路来连结这些局域网 ,他们考虑的就是网络的安全问题。现在具有加密/解密功能的路由器已到处都是,这就使人们通过互联网连接这些局域网成为可能,这就是我们通常所说的虚拟专用网(Virtual Private Network ,VPN)。当数据离开发送者所在的局域网时,该数据首先被用户湍连接到互联网上的路由器进行硬件加密,数据在互联网上是以加密的形式传送的,当达到目的LAN的路由器时,该路由器就会对数据进行解密,这样目的LAN中的用户就可以看到真正的信息了。

篇2:详解加密技术概念、加密方法以及应用

详解加密技术概念、加密方法以及应用

随着网络技术的发展,网络安全也就成为当今网络社会的焦点中的焦点,几乎没有人不在谈论网络上的安全问题,病毒、黑客程序、邮件炸弹、远程侦听等这一切都无不让人胆战心惊。病毒、黑客的猖獗使身处今日网络社会的人们感觉到谈网色变,无所适从。

但我们必需清楚地认识到,这一切一切的安全问题我们不可一下全部找到解决方案,况且有的是根本无法找到彻底的解决方案,如病毒程序,因为任何反病毒程序都只能在新病毒发现之后才能开发出来,目前还没有哪能一家反病毒软件开发商敢承诺他们的软件能查杀所有已知的和未知的病毒,所以我们不能有等网络安全了再上网的念头,因为或许网络不能有这么一日,就象“矛”与“盾”,网络与病毒、黑客永远是一对共存体。

现代的电脑加密技术就是适应了网络安全的需要而应运产生的,它为我们进行一般的电子商务活动提供了安全保障,如在网络中进行文件传输、电子邮件往来和进行合同文本的签署等。其实加密技术也不是什么新生事物,只不过应用在当今电子商务、电脑网络中还是近几年的历史。下面我们就详细介绍一下加密技术的方方面面,希望能为那些对加密技术还一知半解的朋友提供一个详细了解的机会!

一、加密的由来

加密作为保障数据安全的一种方式,它不是现在才有的,它产生的'历史相当久远,它是起源于要追溯于公元前20(几个世纪了),虽然它不是现在我们所讲的加密技术(甚至不叫加密),但作为一种加密的概念,确实早在几个世纪前就诞生了。当时埃及人是最先使用特别的象形文字作为信息编码的,随着时间推移,巴比伦、美索不达米亚和希腊文明都开始使用一些方法来保护他们的书面信息。

近期加密技术主要应用于军事领域,如美国独立战争、美国内战和两次世界大战。最广为人知的编码机器是German Enigma机,在第二次世界大战中德国人利用它创建了加密信息。此后,由于Alan Turing和Ultra计划以及其他人的努力,终于对德国人的密码进行了破解。当初,计算机的研究就是为了破解德国人的密码,人们并没有想到计算机给今天带来的信息革命。随着计算机的发展,运算能力的增强,过去的密码都变得十分简单了,于是人们又不断地研究出了新的数据加密方式,如利用ROSA算法产生的私钥和公钥就是在这个基础上产生的。

二、加密的概念

数据加密的基本过程就是对原来为明文的文件或数据按某种算法进行处理,使其成为不可读的一段代码,通常称为“密文”,使其只能在输入相应的密钥之后才能显示出本来内容,通过这样的途径来达到保护数据不被非法人窃取、阅读的目的。该过程的逆过程为解密,即将该编码信息转化为其原来数据的过程。

三、加密的理由

当今网络社会选择加密已是我们别无选择,其一是我们知道在互联网上进行文件传输、电子邮件商务往来存在许多不安全因素,特别是对于一些大公司和一些机密文件在网络上传输。而且这种不安全性是互联网存在基础――TCP/IP协议所固有的,包括一些基于TCP/IP的服务;另一方面,互联网给众多的商家带来了无限的商机,互联网把全世界连在了一起,走向互联网就意味着走向了世界,这对于无数商家无疑是梦寐以求的好事,特别是对于中小企业。为了解决这一对矛盾、为了能在安全的基础上大开这通向世界之门,我们只好选择了数据加密和基于加密技术的数字签名。

加密在网络上的作用就是防止有用或私有化信息在网络上被拦截和窃取。一个简单的例子就是密码的传输,计算机密码极为重要,许多安全防护体系是基于密码的,密码的泄露在某种意义上来讲意味着其安全体系的全面崩溃。

通过网络进行登录时,所键入的密码以明文的形式被传输到服务器,而网络上的窃听是一件极为容易的事情,所以很有可能黑客会窃取得用户的密码,如果用户是Root用户或Administrator用户,那后果将是极为严重的。

还有如果你公司在进行着某个招标项目的投标工作,工作人员通过电子邮件的方式把他们单位的标书发给招标单位,

[1] [2] [3] [4]

篇3:详解加密技术概念、加密方法以及应用

详解加密技术概念、加密方法以及应用

随着网络技术的发展,网络安全也就成为当今网络社会的焦点中的焦点,几乎没有人不在谈论网络上的安全问题,病毒、黑客程序、邮件炸弹、远程侦听等这一切都无不让人胆战心惊。病毒、黑客的猖獗使身处今日网络社会的人们感觉到谈网色变,无所适从。

但我们必需清楚地认识到,这一切一切的安全问题我们不可一下全部找到解决方案,况且有的是根本无法找到彻底的解决方案,如病毒程序,因为任何反病毒程序都只能在新病毒发现之后才能开发出来,目前还没有哪能一家反病毒软件开发商敢承诺他们的软件能查杀所有已知的和未知的病毒,所以我们不能有等网络安全了再上网的念头,因为或许网络不能有这么一日,就象“矛”与“盾”,网络与病毒、黑客永远是一对共存体。

现代的电脑加密技术就是适应了网络安全的需要而应运产生的,它为我们进行一般的电子商务活动提供了安全保障,如在网络中进行文件传输、电子邮件往来和进行合同文本的签署等。其实加密技术也不是什么新生事物,只不过应用在当今电子商务、电脑网络中还是近几年的历史。下面我们就详细介绍一下加密技术的方方面面,希望能为那些对加密技术还一知半解的朋友提供一个详细了解的机会!

一、加密的由来

加密作为保障数据安全的一种方式,它不是现在才有的,它产生的历史相当久远,它是起源于要追溯于公元前(几个世纪了),虽然它不是现在我们所讲的加密技术(甚至不叫加密),但作为一种加密的概念,确实早在几个世纪前就诞生了。当时埃及人是最先使用特别的象形文字作为信息编码的,随着时间推移,巴比伦、美索不达米亚和希腊文明都开始使用一些方法来保护他们的书面信息。

近期加密技术主要应用于军事领域,如美国独立战争、美国内战和两次世界大战。最广为人知的编码机器是German Enigma机,在第二次世界大战中德国人利用它创建了加密信息。此后,由于Alan Turing和Ultra计划以及其他人的努力,终于对德国人的密码进行了破解。当初,计算机的研究就是为了破解德国人的密码,人们并没有想到计算机给今天带来的信息革命。随着计算机的发展,运算能力的增强,过去的密码都变得十分简单了,于是人们又不断地研究出了新的数据加密方式,如利用ROSA算法产生的私钥和公钥就是在这个基础上产生的。

二、加密的概念

数据加密的基本过程就是对原来为明文的文件或数据按某种算法进行处理,使其成为不可读的一段代码,通常称为“密文”,使其只能在输入相应的'密钥之后才能显示出本来内容,通过这样的途径来达到保护数据不被非法人窃取、阅读的目的。该过程的逆过程为解密,即将该编码信息转化为其原来数据的过程。

三、加密的理由

当今网络社会选择加密已是我们别无选择,其一是我们知道在互联网上进行文件传输、电子邮件商务往来存在许多不安全因素,特别是对于一些大公司和一些机密文件在网络上传输。而且这种不安全性是互联网存在基础――TCP/IP协议所固有的,包括一些基于TCP/IP的服务;另一方面,互联网给众多的商家带来了无限的商机,互联网把全世界连在了一起,走向互联网就意味着走向了世界,这对于无数商家无疑是梦寐以求的好事,特别是对于中小企业。为了解决这一对矛盾、为了能在安全的基础上大开这通向世界之门,我们只好选择了数据加密和基于加密技术的数字签名。

加密在网络上的作用就是防止有用或私有化信息在网络上被拦截和窃取。一个简单的例子就是密码的传输,

[1] [2] [3] [4] [5] [6]

篇4:python实现DES加密解密方法实例详解

作者:liupengs 字体:[增加 减小] 类型:

这篇文章主要介绍了python实现DES加密解密方法,以实例形式较为详细的分析了基于Python实现的DES加密与解密技巧,需要的朋友可以参考下

本文实例讲述了python实现DES加密解密方法,分享给大家供大家参考。具体分析如下:

实现功能:加密中文等字符串

密钥与明文可以不等长

这里只贴代码,加密过程可以自己百度,此处python代码没有优化

1. desstruct.py DES加密中要使用的结构体

ip= (58, 50, 42, 34, 26, 18, 10, 2, 60, 52, 44, 36, 28, 20, 12, 4, 62, 54, 46, 38, 30, 22, 14, 6, 64, 56, 48, 40, 32, 24, 16, 8, 57, 49, 41, 33, 25, 17, 9 , 1, 59, 51, 43, 35, 27, 19, 11, 3, 61, 53, 45, 37, 29, 21, 13, 5, 63, 55, 47, 39, 31, 23, 15, 7)ip_1=(40, 8, 48, 16, 56, 24, 64, 32, 39, 7, 47, 15, 55, 23, 63, 31, 38, 6, 46, 14, 54, 22, 62, 30, 37, 5, 45, 13, 53, 21, 61, 29, 36, 4, 44, 12, 52, 20, 60, 28, 35, 3, 43, 11, 51, 19, 59, 27, 34, 2, 42, 10, 50, 18, 58, 26, 33, 1, 41, 9, 49, 17, 57, 25)e =(32, 1, 2, 3, 4, 5, 4, 5, 6, 7, 8, 9, 8, 9, 10, 11, 12,13, 12, 13, 14, 15, 16, 17, 16,17, 18, 19, 20, 21, 20, 21, 22, 23, 24, 25,24, 25, 26, 27, 28, 29,28, 29, 30, 31, 32, 1)p=(16, 7, 20, 21, 29, 12, 28, 17, 1, 15, 23, 26, 5, 18, 31, 10, 2, 8, 24, 14, 32, 27, 3, 9, 19, 13, 30, 6, 22, 11, 4, 25)s=[ [[14, 4, 13, 1, 2, 15, 11, 8, 3, 10, 6, 12, 5, 9, 0, 7], [0, 15, 7, 4, 14, 2, 13, 1, 10, 6, 12, 11, 9, 5, 3, 8], [4, 1, 14, 8, 13, 6, 2, 11, 15, 12, 9, 7, 3, 10, 5, 0], [15, 12, 8, 2, 4, 9, 1, 7, 5, 11, 3, 14, 10, 0, 6, 13]], [[15, 1, 8, 14, 6, 11, 3, 4, 9, 7, 2, 13, 12, 0, 5, 10], [3, 13, 4, 7, 15, 2, 8, 14, 12, 0, 1, 10, 6, 9, 11, 5], [0, 14, 7, 11, 10, 4, 13, 1, 5, 8, 12, 6, 9, 3, 2, 15], [13, 8, 10, 1, 3, 15, 4, 2, 11, 6, 7, 12, 0, 5, 14, 9]], [[10, 0, 9, 14, 6, 3, 15, 5, 1, 13, 12, 7, 11, 4, 2, 8], [13, 7, 0, 9, 3, 4, 6, 10, 2, 8, 5, 14, 12, 11, 15, 1], [13, 6, 4, 9, 8, 15, 3, 0, 11, 1, 2, 12, 5, 10, 14, 7], [1, 10, 13, 0, 6, 9, 8, 7, 4, 15, 14, 3, 11, 5, 2, 12]], [[7, 13, 14, 3, 0, 6, 9, 10, 1, 2, 8, 5, 11, 12, 4, 15], [13, 8, 11, 5, 6, 15, 0, 3, 4, 7, 2, 12, 1, 10, 14,9], [10, 6, 9, 0, 12, 11, 7, 13, 15, 1, 3, 14, 5, 2, 8, 4], [3, 15, 0, 6, 10, 1, 13, 8, 9, 4, 5, 11, 12, 7, 2, 14]], [[2, 12, 4, 1, 7, 10, 11, 6, 8, 5, 3, 15, 13, 0, 14, 9], [14, 11, 2, 12, 4, 7, 13, 1, 5, 0, 15, 10, 3, 9, 8, 6], [4, 2, 1, 11, 10, 13, 7, 8, 15, 9, 12, 5, 6, 3, 0, 14], [11, 8, 12, 7, 1, 14, 2, 13, 6, 15, 0, 9, 10, 4, 5, 3]], [[12, 1, 10, 15, 9, 2, 6, 8, 0, 13, 3, 4, 14, 7, 5, 11], [10, 15, 4, 2, 7, 12, 9, 5, 6, 1, 13, 14, 0, 11, 3, 8], [9, 14, 15, 5, 2, 8, 12, 3, 7, 0, 4, 10, 1, 13, 11, 6], [4, 3, 2, 12, 9, 5, 15, 10, 11, 14, 1, 7, 6, 0, 8, 13]], [[4, 11, 2, 14, 15, 0, 8, 13, 3, 12, 9, 7, 5, 10, 6, 1], [13, 0, 11, 7, 4, 9, 1, 10, 14, 3, 5, 12, 2, 15, 8, 6], [1, 4, 11, 13, 12, 3, 7, 14, 10, 15, 6, 8, 0, 5, 9, 2], [6, 11, 13, 8, 1, 4, 10, 7, 9, 5, 0, 15, 14, 2, 3, 12]], [[13, 2, 8, 4, 6, 15, 11, 1, 10, 9, 3, 14, 5, 0, 12, 7], [1, 15, 13, 8, 10, 3, 7, 4, 12, 5, 6, 11, 0, 14, 9, 2], [7, 11, 4, 1, 9, 12, 14, 2, 0, 6, 10, 13, 15, 3, 5, 8], [2, 1, 14, 7, 4, 10, 8, 13, 15, 12, 9, 0, 3, 5, 6, 11]]]pc1=(57, 49, 41, 33, 25, 17, 9, 1, 58, 50, 42, 34, 26, 18, 10, 2, 59, 51, 43, 35, 27, 19, 11, 3, 60, 52, 44, 36, 63, 55, 47, 39, 31, 33, 15, 7, 62, 54, 46, 38, 30, 22, 14, 6, 61, 53, 45, 37, 29, 21, 13, 5, 28, 20, 12, 4);pc2= (14, 17, 11, 24, 1, 5, 3, 28, 15, 6, 21, 10, 23, 19, 12, 4, 26, 8, 16, 7, 27, 20, 13, 2, 41, 52, 31, 37, 47, 55, 30, 40, 51, 45, 33, 48, 44, 49, 39, 56, 34, 53, 46, 42, 50, 36, 29, 32)d = ( 1, 1, 2, 2, 2, 2, 2, 2, 1, 2, 2, 2, 2, 2, 2, 1)

2. des.py 加密文件

#_*_ coding:utf-8 _*_#!/usr/bin/env python#Filename:des.pyfrom desstruct import *import re__all__=[‘desencode‘]class DES: ‘‘‘des 加密‘‘‘ def __init__(self): pass #加密 def code(self,from_code,key,code_len,key_len): utput=”“ trun_len=0 #将密文和密钥转换为二进制 code_string=self._functionCharToA(from_code,code_len) code_key=self._functionCharToA(key,key_len) #如果密钥长度不是16的整数倍则以增加0的方式变为16的整数倍 if code_len%16!=0:real_len=(code_len/16)*16+16 else:real_len=code_len if key_len%16!=0:key_len=(key_len/16)*16+16 key_len*=4 #每个16进制占4位 trun_len=4*real_len #对每64位进行一次加密 for i in range(0,trun_len,64):run_code=code_string[i:i+64]l=i%key_lenrun_key=code_key[l:l+64]#64位明文、密钥初始置换run_code= self._codefirstchange(run_code)run_key= self._keyfirstchange(run_key)#16次迭代for j in range(16): #取出明文左右32位 code_r=run_code[32:64] code_l=run_code[0:32] #64左右交换 run_code=code_r #右边32位扩展置换 code_r= self._functionE(code_r) #获取本轮子密钥 key_l=run_key[0:28] key_r=run_key[28:56] key_l=key_l[d[j]:28]+key_l[0:d[j]] key_r=key_r[d[j]:28]+key_r[0:d[j]] run_key=key_l+key_r key_y= self._functionKeySecondChange(run_key) #异或 code_r= self._codeyihuo(code_r,key_y) #S盒代替/选择 code_r= self._functionS(code_r) #P转换 code_r= self._functionP(code_r) #异或 code_r= self._codeyihuo(code_l,code_r) run_code+=code_r#32互换code_r=run_code[32:64]code_l=run_code[0:32]run_code=code_r+code_l#将二进制转换为16进制、逆初始置换output+=self._functionCodeChange(run_code) return output #异或 def _codeyihuo(self,code,key): code_len=len(key) return_list=‘‘ for i in range(code_len):if code[i]==key[i]: return_list+=‘0‘else: return_list+=‘1‘ return return_list #密文或明文初始置换 def _codefirstchange(self,code): changed_code=‘‘ for i in range(64):changed_code+=code[ip[i]-1] return changed_code #密钥初始置换 def _keyfirstchange (self,key): changed_key=‘‘ for i in range(56):changed_key+=key[pc1[i]-1] return changed_key #逆初始置换 def _functionCodeChange(self, code): lens=len(code)/4 return_list=‘‘ for i in range(lens):list=‘‘for j in range(4): list+=code[ip_1[i*4+j]-1]return_list+=”%x“ %int(list,2) return return_list #扩展置换 def _functionE(self,code): return_list=‘‘ for i in range(48):return_list+=code[e[i]-1] return return_list #置换Pdef _functionP(self,code): return_list=‘‘ for i in range(32):return_list+=code[p[i]-1] return return_list #S盒代替选择置换 def _functionS(self, key): return_list=‘‘ for i in range(8):row=int( str(key[i*6])+str(key[i*6+5]),2)raw=int(str( key[i*6+1])+str(key[i*6+2])+str(key[i*6+3])+str(key[i*6+4]),2)return_list+=self._functionTos(s[i][row][raw],4) return return_list #密钥置换选择2 def _functionKeySecondChange(self,key): return_list=‘‘ for i in range(48):return_list+=key[pc2[i]-1] return return_list #将十六进制转换为二进制字符串 def _functionCharToA(self,code,lens): return_code=‘‘ lens=lens%16 for key in code:code_ord=int(key,16)return_code+=self._functionTos(code_ord,4) if lens!=0:return_code+=‘0‘*(16-lens)*4 return return_code #二进制转换 def _functionTos(self,o,lens): return_code=‘‘ for i in range(lens):return_code=str(o>>i &1)+return_code return return_code#将unicode字符转换为16进制def tohex(string): return_string=‘‘ for i in string: return_string+=”%02x“%ord(i) return return_stringdef tounicode(string): return_string=‘‘ string_len=len(string) for i in range(0,string_len,2): return_string+=chr(int(string[i:i+2],16)) return return_string#入口函数def desencode(from_code,key): #转换为16进制 from_code=tohex(from_code) key=tohex(key) des=DES() key_len=len(key) string_len=len(from_code)if string_len<1 or key_len<1: print ‘error input‘ return False key_code= des.code(from_code,key,string_len,key_len) return key_code#测试if __name__ == ‘__main__‘: print desencode(‘我是12345678刘就是我abcdwfd‘,‘0f1571c947刘‘)#返回密文为: 84148584371a6a1fe99e1da0ce1e34649b88ed15098e8aa4b8eb0bf24885c658

3. 解密文件

#_*_coding:utf-8_*_#!/usr/bin/env python#Filename:des.pyfrom desstruct import *import re__all__=[‘desdecode‘]class DES(): ‘‘‘解密函数,DES加密与解密的方法相差不大 只是在解密的时候所用的子密钥与加密的子密钥相反 ‘‘‘ def __init__(self): pass def decode(self,string,key,key_len,string_len): utput=”“ trun_len=0 num=0 #将密文转换为二进制 code_string=self._functionCharToA(string,string_len) #获取字密钥 code_key=self._getkey(key,key_len) #如果密钥长度不是16的整数倍则以增加0的方式变为16的整数倍 real_len=(key_len/16)+1 if key_len%16!=0 else key_len/16 trun_len=string_len*4 #对每64位进行一次加密 for i in range(0,trun_len,64):run_code=code_string[i:i+64]run_key=code_key[num%real_len]#64位明文初始置换run_code= self._codefirstchange(run_code)#16次迭代for j in range(16): code_r=run_code[32:64] code_l=run_code[0:32] #64左右交换 run_code=code_r #右边32位扩展置换 code_r= self._functionE(code_r) #获取本轮子密钥 key_y=run_key[15-j] #异或 code_r= self._codeyihuo(code_r,key_y) #S盒代替/选择 code_r= self._functionS(code_r) #P转换 code_r= self._functionP(code_r) #异或 code_r= self._codeyihuo(code_l,code_r) run_code+=code_rnum+=1#32互换code_r=run_code[32:64]code_l=run_code[0:32]run_code=code_r+code_l#将二进制转换为16进制、逆初始置换output+=self._functionCodeChange(run_code) return output #获取子密钥 def _getkey(self,key,key_len): #将密钥转换为二进制 code_key=self._functionCharToA(key,key_len) a=[‘‘]*16 real_len=(key_len/16)*16+16 if key_len%16!=0 else key_len b=[‘‘]*(real_len/16) for i in range(real_len/16):b[i]=a[:] num=0 trun_len=4*key_len for i in range(0,trun_len,64):run_key=code_key[i:i+64]run_key= self._keyfirstchange(run_key)for j in range(16): key_l=run_key[0:28] key_r=run_key[28:56] key_l=key_l[d[j]:28]+key_l[0:d[j]] key_r=key_r[d[j]:28]+key_r[0:d[j]] run_key=key_l+key_r key_y= self._functionKeySecondChange(run_key) b[num][j]=key_y[:]num+=1 return b #异或 def _codeyihuo(self,code,key): code_len=len(key) return_list=‘‘ for i in range(code_len):if code[i]==key[i]: return_list+=‘0‘else: return_list+=‘1‘ return return_list #密文或明文初始置换 def _codefirstchange(self,code): changed_code=‘‘ for i in range(64):changed_code+=code[ip[i]-1] return changed_code #密钥初始置换 def _keyfirstchange (self,key): changed_key=‘‘ for i in range(56):changed_key+=key[pc1[i]-1] return changed_key #逆初始置换 def _functionCodeChange(self, code): return_list=‘‘ for i in range(16):list=‘‘for j in range(4): list+=code[ip_1[i*4+j]-1]return_list+=”%x“ %int(list,2) return return_list #扩展置换 def _functionE(self,code): return_list=‘‘ for i in range(48):return_list+=code[e[i]-1] return return_list #置换P def _functionP(self,code): return_list=‘‘ for i in range(32):return_list+=code[p[i]-1] return return_list #S盒代替选择置换 def _functionS(self, key): return_list=‘‘ for i in range(8):row=int( str(key[i*6])+str(key[i*6+5]),2)raw=int(str( key[i*6+1])+str(key[i*6+2])+str(key[i*6+3])+str(key[i*6+4]),2)return_list+=self._functionTos(s[i][row][raw],4) return return_list #密钥置换选择2 def _functionKeySecondChange(self,key): return_list=‘‘ for i in range(48):return_list+=key[pc2[i]-1] return return_list #将十六进制转换为二进制字符串 def _functionCharToA(self,code,lens): return_code=‘‘ lens=lens%16 for key in code:code_ord=int(key,16)return_code+=self._functionTos(code_ord,4) if lens!=0:return_code+=‘0‘*(16-lens)*4 return return_code #二进制转换 def _functionTos(self,o,lens): return_code=‘‘ for i in range(lens):return_code=str(o>>i &1)+return_code return return_code#将unicode字符转换为16进制def tohex(string): return_string=‘‘ for i in string: return_string+=”%02x"%ord(i) return return_stringdef tounicode(string): return_string=‘‘ string_len=len(string) for i in range(0,string_len,2): return_string+=chr(int(string[i:i+2],16)) return return_string#入口函数def desdecode(from_code,key): key=tohex(key) des=DES() key_len=len(key) string_len=len(from_code) if string_len%16!=0: return False if string_len<1 or key_len<1: return False key_code= des.decode(from_code,key,key_len,string_len) return tounicode(key_code)#测试if __name__ == ‘__main__‘: print desdecode(‘84148584371a6a1fe99e1da0ce1e34649b88ed15098e8aa4b8eb0bf24885c658‘,‘0f1571c947刘‘

解密后为: 我是12345678刘就是我abcdwfd

希望本文所述对大家的Python程序设计有所帮助,

篇5:计算机安全中数据加密技术的应用

计算机安全中数据加密技术的应用

摘 要:科技社会的发展速度逐渐加快,增加计算机运转的信息量。目前,计算机安全成为科技社会重点关注的理由,积极采用数据加密技术,改善计算机的运转环境,进而提高计算机的安全水平。数据加密技术属于计算机安全保护的有效途径,强化安全运转的环境。因此,本文通过对数据加密技术进行研究,分析其在计算机安全中的应用。

关键词:计算机安全;数据加密技术;信息加密数据加密技术在计算机安全中具有较高的影响力,提供信息加密的方式,强化计算机的安全性。随着科技社会的发展,计算机对安全环境的需求量逐渐增加,各项信息流通与处理,均需要加密的环境,由此才能稳定数据安全运转的能力。数据加密技术在计算机中具有较高的安全级别,符合计算机安全运转的需求,所以其属于计算机安全保护的常用技术。

一、计算机运转中的安全威胁

根据计算机运转的情况,分析其在运转中受到的安全威胁,汇总并做如下分析:

(1)系统漏洞。计算机操作系统的漏洞,无法通过有效的手段规避,其在运转中只能通过修复、加密等方式,提高系统环境的安全性。操作系统在编程时,为方便修改,会遗漏一些端口,虽然操作系统不断推出防护补丁,但是计算机用户仍然受到系统漏洞的威胁[1]。攻击者频繁的向操作系统发出攻击,尤其是Windows系统,导致系统面对极大的安全威胁。(2)网络攻击。网络环境具有两面性,其在为用户提供网络服务的同时,也在传递攻击行为。网络环境是攻击行为的载体,威胁系数非常高,用户在执行网页浏览、邮件收发等操作时,为攻击者提供路径,而攻击者经常会将病毒、木马的代码植入正常的网页中,用户点击后即会激活病毒,攻击用户的电脑,窃取用户的计算机信息。(3)通信隐患。通信是计算机系统的必要环节,用户群体之间通过计算机共享或传输文件,具有方便、快捷的优势,而文件传输的路径可以做为黑客的攻击点。黑客利用不同的攻击手段,多次入侵通信路径,目的是获取传输中的文件,导致计算机通信中,出现极大的隐患。

二、计算机安全中的数据加密技术

数据加密是计算机安全中最主要的应用技术,数据加密技术的核心为AES算法,对其做如下分析:密的过程。AES算法在加解密的过程中体现了循环的执行方式,按照加解密的过程,实行次序性的加密,在每个需求加密的点都对应了不同的AES算法[2]。AES的结构非常复杂,其在计算机安全保护中,以矩阵的方式存在,虽然加密过程有明确的顺序,但是算法没有任何规律,提高结构的安全能力。(2)AES解密。AES解密在计算机数据中,利用invsubbyte()置换矩阵中的.密钥,在AES密钥的基础上,按照原本加密的顺序进行解密。AES解密必须保持两个异同模块的同时进行,由此才能确保解密的准确性,排除攻击者的恶意剖析。

三、数据加密技术在计算机安全中的应用

结合计算机运转中的安全威胁,研究数据加密技术在计算机安全中的应用,分析如下:(1)加密技术。加密技术就是“明文→密文→明文”的过程,其通过加密算法,将明文加密成多样化的密文,攻击者无法找到破解算法的依据,无法攻破已经受到加密保护的密文,待密文传输完成后,对应的解密方式会将密文转化成原来的明文。加密技术的加密算法,具备嵌套的功能,在一个加密算法的基础上,再进行另一个算法,循环后实现无法破解的状态[3]。目前,加密技术在网上银行系统中最为常用,网上银行具有海量的计算机数据,其对安全级别的要求非常高,不容许出现任何漏洞,网上银行利用的是“端端保护”,即:银行端口和用户端口,通过网银或USBKey,实现端与端之间的加密转化,如果攻击者盗取了银行信息,也无法读取银行系统的内容,体现全面的数据保护。(2)签名技术。签名技术在计算机安全数据加密技术中普遍存在,上文提到的USBKey内部,就是采用签名技术,实现双方识别。以某银行推出的USBKey为例,分析签名技术的加密方式。该银行内的USBKey具有对应的用户信息,不存在重复性,能够在最短的时间内核实用户身份。USBKey认证用户的过程中完成一次签名加密。USBKey的使用较为普遍,一旦用户丢失USBKey,可以到该银行注销并重新申请,而其他人也无法通过丢失的USBKey查询到该用户的信息,因为USBKey内的签名技术,本身存在一种公、私密钥的匹配方式,只有持有者才能通过对应的签名匹配使用USBKey,防止USBKey的信息被恶意窃取,提高数据加密技术的应用能力。(3)密钥技术。密钥是数据加密技术的重要部分,算法相对比较固定,需通过多样化的密钥,拓宽密文的种类。密钥分为私钥和公钥两部分,计算机安全保护中,倾向于密钥与私钥结合,保障每台计算机均具备访问保护的能力[4]。以金融信用卡为例,分析密钥技术的应用。当信用卡具有消费行为时,POS机主动传输解密数据到相关的金融机构,金融机构通过密钥技术,认证是否属于该用户本人操作,用户输入的密码与信用卡加密的方式一致,在公钥和私钥的共同作用下,完成匹配过程,既可以防止信用卡盗用,也可以防止POS机盗取信用卡及用户的个人信息。

计算机网络系统的加密技术分析论文

数字签名

论信息安全的论文

电子数字签名

计算机三级网络技术近年笔试试题及答案

信息安全网络安全与网络空间安全分析论文

电子商务中数据加密技术

论文:电子政务信息安全研究

如何提高数字图书馆的数据安全性论文

ORIMA空三加密软件在铁路航测中的应用与开发

详解加密技术概念、加密方法以及应用
《详解加密技术概念、加密方法以及应用.doc》
将本文的Word文档下载到电脑,方便收藏和打印
推荐度:
点击下载文档

【详解加密技术概念、加密方法以及应用(精选5篇)】相关文章:

网络即时通信的原理和实现论文2022-10-30

网络信息安全论文2022-08-03

电子商务的安全审计2022-08-06

计算机科学技术在计算机教育中的应用论文2023-06-03

安全论文2022-05-25

税务系统网络的信息安全建设论文2023-06-27

网络安全的论文2022-06-23

电子商务将来发展的三个步骤2022-09-06

网络论文2023-04-28

电子商务安全体系的发展与动态2022-08-21

点击下载本文文档