精华内容
下载资源
问答
  • 几种常见加密算法

    万次阅读 2019-06-27 09:36:02
    一、加密算法分类 双向加密算法 单向加密算法(散列算法) 对称加密算法 非对称加密算法 MD5,SHA1,HMAC AES、DES、3DES RSA,DSA,ECC 双方采用共同的密钥和加密算法 A用B的公钥将消息加密,...

    一、加密算法分类

    双向加密算法单向加密算法(散列算法)
    对称加密算法非对称加密算法MD5,SHA1,HMAC
    AES、DES、3DESRSA,DSA,ECC
    双方采用共同的密钥和加密算法A用B的公钥将消息加密,发送给B,B用自己的私钥对消息进行解密的过程不可逆,只能加密,不能解密

    二、算法比较

    1、散列算法比较

    名称安全性速度
    SHA-1
    MD5

    2、对称加密算法比较

    名称密钥名称运行速度安全性资源消耗
    DES56位较快
    3DES112位或168位
    AES128、192、256位

    3、非对称加密算法比较

    名称成熟度安全性运算速度资源消耗
    RSA
    ECC

     

    三、算法特点

    1、对称加密

    1. 特点:算法公开、它要求和接发送方收方在安全通信之前,商定一个秘钥,共同用这个秘钥进行加密和解密
    2. 密钥管理:比较难,不适合互联网,一般用于内部系统

    3. 安全性:中

    4. 加密速度:快好 几个数量级 (软件加解密速度至少快 100 倍,每秒可以加解密数 M 比特 数据),适合大数据量的加解密处

    2、非对称加密

    1. 特点:算法强度复杂
    2. 密钥管理:密钥容易管理

    3. 安全性:高

    4. 加密速度:比较慢,适合 小数据量 加解密或数据签名

    3、散列算法

    1. 特点:算法强度复杂
    2. 密钥管理:无秘钥

    3. 安全性:极高

    4. 加密速度:很慢

    四、SHA256散列算法

    SHA256(Secure Hash Algorithm)算法是SHA家族(SHA1、SHA224、SHA256等)中的重要一员,SHA系列算法是美国国家安全局设计,美国国家标准与技术研究院 发布的一系列密码散列函数。

    著名的比特币算法就是通过SHA256实现的。由于SHA家族算法的优异加密效果,为此在很多层面具有广泛的应用,比如在银行、购物网站等都使用SHA加密算法对用户的敏感信息加密,用户首次设置密码时,系统对密码进行SHA加密并将加密结果保存到数据库,如果用户需要消费或者购物时,用户输入密码后,系统再次对密码进行SHA计算,并将结果与数据库加密密码进行比较,如果两者一致,就认为用户合法。这样做的好处十分明显,比如相关工作人员在没有权限的情况下,很难知道用户的密码与相关敏感信息。

    SHA算法能否被解密呢?

    SHA是散列算法,并非加密算法,也当然也不存在解密的问题。正确的说法应该叫“破解”。所谓破解就是找到任意一个源数据,能够生成相同的目标数据,即“碰撞”。目前的计算能力下,SHA256基本上是不可破解的,即找不到(或概率极小)“碰撞”结果。

    然而,就在2017年2月24日,谷歌公司宣布成功破解SHA1散列算法。Google解释,所谓的碰撞是让不同的文件产生同样的摘要,这事通常不会发生,除非SHA1算法含有安全漏洞(密码学家们在2005年就发现SHA1含有理论上的漏洞,可造成碰撞攻击(Collision attack),允许骇客打造拥有同样讯息摘要的文件,以方便伪装及取代合法文件)。Google与CWI花费了两年的时间进行研究,终于发现在SHA1上产生碰撞的第一个可行技术,成功地执行了碰撞攻击。为了证明此事,Google释出了两个含有不同内容、却拥有同样讯息摘要的PDF档案。

    虽然已经证明了SHA1的碰撞攻击是得以实践的,但不幸中的大幸是,要执行该攻击必须使用非常大量的运算资源,依照Google的说法,这是他们所完成的最大规模的运算之一,总计执行了9百京(quintillion,10的18次方)次的SHA1运算,若以一年为期,要用6500个CPU来完成第一阶段的计算,再用110个GPU进行第二阶段计算。相较之下,另一讯息摘要演算法MD5只要利用一台智慧型手机及30秒的时间就能被攻陷。

    五、Base64加密算法

    严格来讲base64并不是一种加密算法,而是一种编码转换。

    Base64一般用于在HTTP协议下传输二进制数据,由于HTTP协议是文本协议,所以在HTTP协议下传输二进制数据需要将二进制数据转换为字符数据。然而直接转换是不行的。因为网络传输只能传输可打印字符。什么是可打印字符?在ASCII码中规定,0~31、127这33个字符属于控制字符,32~126这95个字符属于可打印字符,也就是说网络传输只能传输这95个字符,不在这个范围内的字符无法传输。那么该怎么才能传输其他字符呢?其中一种方式就是使用Base64。

    Base64特点

    可逆,后一两位可能有“=”,生成的编码都是ascii字符。
    优点:速度快,ascii字符,肉眼不可理解
    缺点:编码比较长,非常容易被破解,仅适用于加密非关键信息的场合

     

    六、加密算法输出长度

    算法输出长度(bit--位)输出长度(Byte--字节)
    MD512816
    SHA116020
    SHA25625632
     所占字节
     一个英文字母一个中文汉字
    ASCII12
    UTF-813
    Unicode22

     

     

     

     

     

     

     

    展开全文
  • 几种常用加密算法简析与比较.pdf
  • 几种常用加密算法比较

    万次阅读 2016-04-28 10:24:17
    由于计算机软件的非法复制,通信的泄密、数据安全受到威胁,解密及盗版问题日益严重,...几种常用加密算法比较DES加密算法DES加密算法是一种分组密码,以64位为分组对数据加密,它的密钥长度是56位,加密解密用同一算法

    由于计算机软件的非法复制,通信的泄密、数据安全受到威胁,解密及盗版问题日益严重,甚至引发国际争端,所以在信息安全技术中,加密技术占有不可替代的位置,因此对信息加密技术和加密手段的研究与开发,受到各国计算机界的重视,发展日新月异。现在我们就几种常用的加密算法给大家比较一下。

    几种常用加密算法比较

    DES加密算法

    DES加密算法是一种分组密码,以64位为分组对数据加密,它的密钥长度是56位,加密解密用同一算法。DES加密算法是对密钥进行保密,而公开算法,包括加密和解密算法。这样,只有掌握了和发送方相同密钥的人才能解读由DES加密算法加密的密文数据。因此,破译DES加密算法实际上就是搜索密钥的编码。对于56位长度的密钥来说,如果用穷举法来进行搜索的话,其运算次数为256。

    随着计算机系统能力的不断发展,DES的安全性比它刚出现时会弱得多,然而从非关键性质的实际出发,仍可以认为它是足够的。不过,DES现在仅用于旧系统的鉴定,而更多地选择新的加密标准。

    AES加密算法

    AES加密算法是密码学中的高级加密标准,该加密算法采用对称分组密码体制,密钥长度的最少支持为128、192、256,分组长度128位,算法应易于各种硬件和软件实现。这种加密算法是美国联邦政府采用的区块加密标准,这个标准用来替代原先的DES,已经被多方分析且广为全世界所使用。

    AES加密算法被设计为支持128/192/256位(/32=nb)数据块大小(即分组长度);支持128/192/256位(/32=nk)密码长度,,在10进制里,对应34×1038、62×1057、1.1×1077个密钥。

    RSA加密算法

    RSA加密算法是目前最有影响力的公钥加密算法,并且被普遍认为是目前最优秀的公钥方案之一。RSA是第一个能同时用于加密和数宇签名的算法,它能够抵抗到目前为止已知的所有密码攻击,已被ISO推荐为公钥数据加密标准。RSA加密算法基于一个十分简单的数论事实:将两个大素数相乘十分容易,但那时想要,但那时想要对其乘积进行因式分解却极其困难,因此可以将乘积公开作为加密密钥。

    Base64加密算法

    Base64加密算法是网络上最常见的用于传输8bit字节代码的编码方式之一,Base64编码可用于在HTTP环境下传递较长的标识信息。例如,在JAVAPERSISTENCE系统HIBEMATE中,采用了Base64来将一个较长的唯一标识符编码为一个字符串,用作HTTP表单和HTTPGETURL中的参数。在其他应用程序中,也常常需要把二进制数据编码为适合放在URL(包括隐藏表单域)中的形式。此时,采用Base64编码不仅比较简短,同时也具有不可读性,即所编码的数据不会被人用肉眼所直接看到。

    MD5加密算法

    MD5为计算机安全领域广泛使用的一种散列函数,用以提供消息的完整性保护。对MD5加密算法简要的叙述可以为:MD5以512位分组来处理输入的信息,且每一分组又被划分为16个32位子分组,经过了一系列的处理后,算法的输出由四个32位分组组成,将这四个32位分组级联后将生成—个128位散列值。

    MD5被广泛用于各种软件的密码认证和钥匙识别上。MD5用的是哈希函数,它的典型应用是对一段信息产生信息摘要,以防止被篡改。MD5的典型应用是对一段Message产生fingerprin指纹,以防止被“篡改”。如果再有—个第三方的认证机构,用MD5还可以防止文件作者的“抵赖”,这就是所谓的数字签名应用。MD5还广泛用于操作系统的登陆认证上,如UNIX、各类BSD系统登录密码、数字签名等诸多方。

    SHA1加密算法

    SHA1是和MD5一样流行的消息摘要算法。SHA加密算法模仿MD4加密算法。SHA1设计为和数字签名算法(DSA)一起使用。

    SHA1主要适用于数字签名标准里面定义的数字签名算法。对于长度小于2“64位的消息,SHA1会产生一个160位的消息摘要。当接收到消息的时候,这个消息摘要可以用来验证数据的完整性。在传输的过程中,数据很可能会发生变化,那么这时候就会产生不同的消息摘要。SHA1不可以从消息摘要中复原信息,而两个不同的消息不会产生同样的消息摘要。这样,SHA1就可以验证数据的完整性,所以说SHA1是为了保证文件完整性的技术。

    SHA1加密算法可以采用不超过264位的数据输入,并产生一个160位的摘要。输入被划分为512位的块,并单独处理。160位缓冲器用来保存散列函数的中间和最后结果。缓冲器可以由5个32位寄存器(A、B、C、D和E)来表示。SHA1是一种比MD5的安全性强的算法,理论上,凡是采取“消息摘要”方式的数字验证算法都是有“碰撞”的——也就是两个不同的东西算出的消息摘要相同,互通作弊图就是如此。但是安全性高的算法要找到指定数据的“碰撞”很困难,而利用公式来计算“碰撞”就更困难一目前为止通用安全算法中仅有MD5被破解。

    加密算法是密码技术的核心,以上这些加密算法是常用的加密算法,而这些算法有些已经遭到破译,有些安全度不高,有些强度不明,有些待进—步分析,有些需要深入研究,而神秘的加密算法世界,又会有新的成员加入,期待更安全的算法诞生。

    小知识之加密算法:

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

    展开全文
  • 几种常用加密算法简析与比较

    千次阅读 2018-04-24 17:29:38
    常用加密算法总体可以分为两类:单项加密和双向加密,双向加密又分为对称加密和非对称加密,因此主要分析下面三种加密算法:对称加密算法、非对称加密算法和单项加密算法(Hash算法)。1、对称加密算法(AES、DES...

    常用的加密算法总体可以分为两类:单项加密和双向加密,双向加密又分为对称加密和非对称加密,因此主要分析下面三种加密算法:

    对称加密算法、非对称加密算法和单项加密算法(Hash算法)。


    1、对称加密算法(AES、DES、3DES)

    对称加密算法是指加密和解密采用相同的密钥,是可逆的(即可解密)。

    AES加密算法是密码学中的高级加密标准,采用的是对称分组密码体制,密钥长度的最少支持为128。AES加密算法是美国联邦政府采用的区块加密标准,这个标准用来替代原先的DES,已经被多方分析且广为全世界使用。

    优点:加密速度快

    缺点:密钥的传递和保存是一个问题,参与加密和解密的双方使用的密钥是一样的,这样密钥就很容易泄露。


    2、非对称加密算法(RSA、DSA)

    非对称加密算法是指加密和解密采用不同的密钥(公钥和私钥),因此非对称加密也叫公钥加密,是可逆的(即可解密)。

    RSA加密算法是基于一个十分简单的数论事实:将两个大素数相乘十分容易,但是想要对其乘积进行因式分解极其困难,因此可以将乘积公开作为加密密钥。虽然RSA的安全性一直未能得到理论上的证明,但它经历了各种攻击至今未被完全攻破。 

    优点:加密和解密的密钥不一致,公钥是可以公开的,只需保证私钥不被泄露即可,这样就密钥的传递变的简单很多,从而降低了被破解的几率。

    缺点:加密速度慢

    RSA加密算法既可以用来做数据加密,也可以用来数字签名。

    --数据加密过程:发送者用公钥加密,接收者用私钥解密(只有拥有私钥的接收者才能解读加密的内容)

    --数字签名过程:甲方用私钥加密,乙方用公钥解密(乙方解密成功说明就是甲方加的密,甲方就不可以抵赖)


    3、Hash加密算法(MD5)

    MD5全称是Message-Digest Algorithm 5(信息摘要算法5),单向的算法不可逆(被MD5加密的数据不能被解密)。MD5加密后的数据长度要比加密数据小的多,且长度固定,且加密后的串是唯一的。

    适用场景:常用在不可还原的密码存储、信息完整性校验等。

    信息完整性校验:典型的应用是对一段信息产生信息摘要,以防止被篡改。如果再有一个第三方的认证机构,用MD5还可以防止文件作者的“抵赖”,这就是所谓的数字签名应用。


    4、混合加密

    由于以上加密算法都有各自的缺点(RSA加密速度慢、AES密钥存储问题、MD5加密不可逆),因此实际应用时常将几种加密算法混合使用。

    例如:RSA+AES:

    采用RSA加密AES的密钥,采用AES对数据进行加密,这样集成了两种加密算法的优点,既保证了数据加密的速度,又实现了安全方便的密钥管理。

    那么,采用多少位的密钥合适呢?一般来讲密钥长度越长,安全性越高,但是加密速度越慢。所以密钥长度也要合理的选择,一般RSA建议采用1024位的数字,AES建议采用128位即可。


    5、Base64

    严格意义讲,Base64并不能算是一种加密算法,而是一种编码格式,是网络上最常见的用于传输8bid字节代码的编码方式之一。

    Base64编码可用于在HTTP环境下传递较长的标识信息,Base编码不仅不仅比较简单,同时也据有不可读性(编码的数据不会被肉眼直接看到)。





    展开全文
  • 1、几种常用加密算法比较

    千次阅读 2017-09-12 15:50:36
    由于计算机软件的非法复制,通信的泄密、...现在我们就几种常用加密算法给大家比较一下。DES加密算法DES加密算法是一种分组密码,以64位为分组对数据加密,它的密钥长度是56位,加密解密用同一算法。DES加密算法是对

    由于计算机软件的非法复制,通信的泄密、数据安全受到威胁,解密及盗版问题日益严重,甚至引发国际争端,所以在信息安全技术中,加密技术占有不可替代的位置,因此对信息加密技术和加密手段的研究与开发,受到各国计算机界的重视,发展日新月异。现在我们就几种常用的加密算法给大家比较一下。

    DES加密算法

    DES加密算法是一种分组密码,以64位为分组对数据加密,它的密钥长度是56位,加密解密用同一算法。DES加密算法是对密钥进行保密,而公开算法,包括加密和解密算法。这样,只有掌握了和发送方相同密钥的人才能解读由DES加密算法加密的密文数据。

    DES算法的入口参数有三个:Key、Data、Mode。其中Key为8个字节共64位,是DES算法的工作密钥;Data也为8个字节64位,是要被加密或被解密的数据;Mode为DES的工作方式,有两种:加密或解密。

    DES算法是这样工作的:如Mode为加密,则用Key 去把数据Data进行加密, 生成Data的密码形式(64位)作为DES的输出结果;如Mode为解密,则用Key去把密码形式的数据Data解密,还原为Data的明码形式(64位)作为DES的输出结果。在通信网络的两端,双方约定一致的Key,在通信的源点用Key对核心数据进行DES加密,然后以密码形式在公共通信网(如电话网)中传输到通信网络的终点,数据到达目的地后,用同样的Key对密码数据进行解密,便再现了明码形式的核心数据。这样,便保证了核心数据(如PIN、MAC等)在公共通信网中传输的安全性和可靠性。

    具体实现请参考DES加密算法java实现

    AES加密算法

    AES加密算法是密码学中的高级加密标准,该加密算法采用对称分组密码体制,密钥长度的最少支持为128、192、256,分组长度128位,算法应易于各种硬件和软件实现。这种加密算法是美国联邦政府采用的区块加密标准,这个标准用来替代原先的DES,已经被多方分析且广为全世界所使用。

    AES加密算法被设计为支持128/192/256位(/32=nb)数据块大小(即分组长度);支持128/192/256位(/32=nk)密码长度,,在10进制里,对应34×1038、62×1057、1.1×1077个密钥。

    具体实现请参考AES加密算法Java实现

    RSA加密算法

    RSA加密算法是目前最有影响力的公钥加密算法,并且被普遍认为是目前最优秀的公钥方案之一。RSA是第一个能同时用于加密和数宇签名的算法,它能够抵抗到目前为止已知的所有密码攻击,已被ISO推荐为公钥数据加密标准。RSA加密算法基于一个十分简单的数论事实:将两个大素数相乘十分容易,但那时想要对其乘积进行因式分解却极其困难,因此可以将乘积公开作为加密密钥。

    具体实现请参考RSA加密算法Java实现

    Base64加密算法

    Base64加密算法是网络上最常见的用于传输8bit字节代码的编码方式之一,Base64编码可用于在HTTP环境下传递较长的标识信息。例如,在JAVAPERSISTENCE系统HIBEMATE中,采用了Base64来将一个较长的唯一标识符编码为一个字符串,用作HTTP表单和HTTPGETURL中的参数。在其他应用程序中,也常常需要把二进制数据编码为适合放在URL(包括隐藏表单域)中的形式。此时,采用Base64编码不仅比较简短,同时也具有不可读性,即所编码的数据不会被人用肉眼所直接看到。

    具体实现请参考Base64加密算法实现

    MD5加密算法

    MD5为计算机安全领域广泛使用的一种散列函数,用以提供消息的完整性保护。对MD5加密算法简要的叙述可以为:MD5以512位分组来处理输入的信息,且每一分组又被划分为16个32位子分组,经过了一系列的处理后,算法的输出由四个32位分组组成,将这四个32位分组级联后将生成—个128位散列值。

    MD5被广泛用于各种软件的密码认证和钥匙识别上。MD5用的是哈希函数,它的典型应用是对一段信息产生信息摘要,以防止被篡改。MD5的典型应用是对一段Message产生fingerprin指纹,以防止被“篡改”。如果再有—个第三方的认证机构,用MD5还可以防止文件作者的“抵赖”,这就是所谓的数字签名应用。MD5还广泛用于操作系统的登陆认证上,如UNIX、各类BSD系统登录密码、数字签名等诸多方。

    具体实现请参考MD5加密算法Java实现

    SHA1加密算法

    SHA1是和MD5一样流行的消息摘要算法。SHA加密算法模仿MD4加密算法。SHA1设计为和数字签名算法(DSA)一起使用。

    SHA1主要适用于数字签名标准里面定义的数字签名算法。对于长度小于2的64次方位的消息,SHA1会产生一个160位的消息摘要。当接收到消息的时候,这个消息摘要可以用来验证数据的完整性。在传输的过程中,数据很可能会发生变化,那么这时候就会产生不同的消息摘要。SHA1不可以从消息摘要中复原信息,而两个不同的消息不会产生同样的消息摘要。这样,SHA1就可以验证数据的完整性,所以说SHA1是为了保证文件完整性的技术。

    SHA1加密算法可以采用不超过2的64次方位的数据输入,并产生一个160位的摘要。输入被划分为512位的块,并单独处理。160位缓冲器用来保存散列函数的中间和最后结果。缓冲器可以由5个32位寄存器(A、B、C、D和E)来表示。SHA1是一种比MD5的安全性强的算法,理论上,凡是采取“消息摘要”方式的数字验证算法都是有“碰撞”的——也就是两个不同的东西算出的消息摘要相同,互通作弊图就是如此。但是安全性高的算法要找到指定数据的“碰撞”很困难,而利用公式来计算“碰撞”就更困难一目前为止通用安全算法中仅有MD5被破解。

    具体实现请参考SHA1加密算法Java实现

    加密算法是密码技术的核心,以上这些加密算法是常用的加密算法,而这些算法有些已经遭到破译,有些安全度不高,有些强度不明,有些待进—步分析,有些需要深入研究,而神秘的加密算法世界,又会有新的成员加入,期待更安全的算法诞生。

    展开全文
  • 加 密算法通常分为对称性加密算法和非对称性加密算法,对于对称性加密算法,信息接收双方都需事先知道密匙和加解密算法且其密匙是相同的,之后便是对数据进行 加解密了。非对称算法与之不同,发送双方A,B事先均生成...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 75,389
精华内容 30,155
关键字:

几种常见加密算法