跳至主要內容

密码学

naijoug大约 6 分钟

reference

常用加密算法

  • 加密算法对比

    名称秘钥密钥管理安全性速度
    对称加密和解密密钥相同比较难,不适合互联网,一般用于内部系统快好几个数量级(软件加解密速度至少快100倍,每秒可以加解密数M比特数据),适合大数据量的加解密处理
    非对称加密和解密密钥不同密钥容易管理慢,适合小数据量加解密或数据签名
    散列不需要密码--
  • 对称加密算法对比

    名称密钥长度运算速度安全性资源消耗
    DES56位较快
    3DES112位或168位
    AES128、192、256位
  • 非对称算法对比

    名称成熟度安全性(取决于密钥长度)运算速度资源消耗
    RSA
    DSA只能用于数字签名
    ECC低( 计算量小, 存储空间占用小, 带宽要求低)
  • 散列算法对比

    名称安全性速度
    SHA-1
    MD5

对称加密

对称加密类型加密方式
序列算法或序列密码一次对明文中的单个位(有时对字节)运算的算法。
分组算法或分组密码一次对明文的一组位进行运算(即运算之前将明文分为若干组,然后分别对每一组进行运算,这些位组称为分组)
  • DES : Data Encryption Standard

    一种对称加密标准,是目前使用最广泛的密钥系统,特别是在保护金融数据的安全中。曾是美国联邦政府的加密标准,但现已被AES所替代

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

  • 3DES : Triple DES

    是基于DES的对称算法,对一块数据用三个不同的密钥进行三次加密,强度更高;

  • AES : Advanced Encryption Standard

    又称Rijndael加密法,是美国联邦政府采用的一种区块加密标准,有AES-128, AES-192或AES-256算法

    密码学中的高级加密标准,该加密算法采用对称分组密码体制,密钥长度的最少支持为128、192、256,分组长度128位,算法应易于各种硬件和软件实现

  • PBE : Password Base Encryption

    一种基于口令的加密算法,特点在于口令由用户自己掌握,采用随机数(我们这里叫做盐)杂凑多重加密等方法保证数据的安全性

非对称加密

  • RSA

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

  • Elgamal

    基于离散对数问题的加密算法,只能单向加解密,能用于数据加密和数字签名

  • D-H

    基于计算离散对数的难度的秘钥交换算法,它使得通信的双方能在非安全的信道中安全的交换密钥,用于加密后续的通信消息,不用于消息的加解密

  • ECC : Elliptic Curve Cryptography

    基于椭圆曲线的一种加密算法。与RSA算法对比,它的安全性更高,处理速度更快,但由于它的数学理论非常深奥和复杂,在工程应用中比较难于实现

  • DSA

    基于整数有限域离散对数难题的,DSA的一个重要特点是两个素数公开,这样,当使用别人的p和q时,即使不知道私钥,你也能确认它们是否是随机产生的,还是作了手脚。这一点,RSA算法做不到。相比于RSA,DSA 只用于签名,而 RSA 可用于签名和加密。

散列算法

  • SHA1

    SHA1是和MD5一样流行的消息摘要算法。SHA加密算法模仿MD4加密算法。

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

    SHA1是一种比MD5的安全性强的算法,理论上,凡是采取“消息摘要”方式的数字验证算法都是有“碰撞”的——也就是两个不同的东西算出的消息摘要相同,互通作弊图就是如此。但是安全性高的算法要找到指定数据的“碰撞”很困难,而利用公式来计算“碰撞”就更困难一目前为止通用安全算法中仅有MD5被破解。

  • MD5

    MD5为计算机安全领域广泛使用的一种散列函数,用以提供消息的完整性保护。

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

  • Base64

    网络上最常见的用于传输8bit字节代码的编码方式之一,Base64编码可用于在HTTP环境下传递较长的标识信息。 包含字符 : 大小写字母(a~z 、AZ)、数字(09) 和特殊字符(+ 、/)

  • Base58

    包含字符 : 大小写字母(不含 O(大写字母o)、l(小写字母L)、I(大写字母i)) 和 数字(不含 0) 不含特殊字符(+、/)

  • Base64URL

    =被省略、+替换成-、/替换成_

其它加密算法

  • PBKDF2 (Password-Based Key Derivation Function)

  • bcrypt

  • AEAD (Authenticated Encryption with Associated Data)

  • CRC (Cyclic Redundancy Check)

    循环冗余校验码