在不对称加密算法中,存在着一对独特而互补的密钥—公钥和私钥。使用这一算法加密文件时,唯有通过匹配的公钥和私钥,才能实现从明文到密文再到明文的转换过程。在加密阶段,明文需通过收信方的公钥进行加密,而解密时则需用收信方的私钥。值得注意的是,发信方(即加密者)能够获取收信方的公钥,但唯有收信方(即解密者)掌握着自己的私钥。基于这一原理,若发信方欲发送仅能由收信方解读的信息,首先需确保已知收信方的公钥,随后利用该公钥加密原文;收信方在接收加密后的密文后,唯有通过自己的私钥才能完成解密。
显然,采用不对称加密算法进行通信,收发双方在正式交流之前,必须预先交换公钥,而私钥则应由收信方单独保管。由于每对密钥中包含了两个部分,这一特性使得不对称加密算法非常适合于分布式系统的数据加密。目前,广泛使用的不对称加密算法包括RSA算法和美国国家标准局提出的DSA算法。其中,RSA算法通过两个大素数的乘积来生成密钥对,而DSA则基于椭圆曲线理论,用以提高加密效率。
除此之外,通过不对称加密算法,不仅能够确保通信过程中的数据安全,还能实现数字签名功能,从而增强信息的可信度。数字签名的过程是将消息摘要通过私钥加密,发信方将签名连同原文一同发送。收信方则通过验证签名,确认消息来源的真实性和完整性。这一过程不仅验证了消息未被篡改,也确认了消息确实来自声称的发送者。
综上所述,非对称加密算法在保障信息安全的同时,也提供了强大的数据加密和验证机制,使得分布式系统中的通信变得更加安全可靠。对于需要高安全性的应用场景,如电子商务、金融交易等,非对称加密算法无疑是不可或缺的关键技术。
Ⅱ 数字摘要的基本原理
数字摘要的基本原理涉及到发送端使用HASH函数对原始信息进行加密,生成摘要,然后将这个摘要与原始信息一起发送给接收端。接收端同样使用HASH函数对原始信息进行加密,生成新的摘要,通过比较两个摘要是否一致来验证信息的完整性。如果两个摘要相同,则表明信息完整无损;反之则说明信息可能已被篡改。
数字信封则是另一种信息保护机制。在发送端,数据首先使用对称密钥进行加密,然后将这个对称密钥再次用接收者的公钥加密,形成所谓的“数字信封”。该信封与加密后的数据一起发送给接收方。接收方使用自己的私钥解开数字信封,得到对称密钥,然后利用该密钥解开数据,从而确保了信息的保密性。
数字签名则结合了HASH函数和非对称加密技术。发送方先用HASH函数对原始文件生成一个数字摘要,再用自己的私钥对该摘要进行加密,形成电子签名,附在原始文件后。然后,发送方用对称密钥对包含电子签名的原始文件进行加密,并使用接收方的公钥对该对称密钥进行加密,最终将加密后的密钥文件一并发送给接收方。接收方使用自己的私钥解开密钥文件,获取对称密钥,之后利用该密钥解密数据并验证电子签名。接收方还使用发送方的公钥解开电子签名,然后利用HASH函数重新计算原始文件的摘要,与解密后电子签名的摘要进行对比,以此来验证信息的完整性和不可抵赖性。
Ⅲ 十大常见密码加密方式
一、密钥散列
采用MD5或者SHA1等散列算法,对明文进行加密。严格来说,MD5不算一种加密算法,而是一种摘要算法。无论多长的输入,MD5都会输出一个128位(16字节)的散列值。而SHA1也是流行的消息摘要算法,它可以生成一个被称为消息摘要的160位(20字节)散列值。MD5相对SHA1来说,安全性较低,但是速度快;SHA1和MD5相比安全性高,但是速度慢。
二、对称加密
采用单钥密码系统的加密方法,同一个密钥可以同时用作信息的加密和解密,这种加密方法称为对称加密。对称加密算法中常用的算法有:DES、3DES、TDEA、Blowfish、RC2、RC4、RC5、IDEA、SKIPJACK等。
三、非对称加密
非对称加密算法是一种密钥的保密方法,它需要两个密钥来进行加密和解密,这两个密钥是公开密钥和私有密钥。公钥与私钥是一对,如果用公钥对数据进行加密,只有用对应的私钥才能解密。非对称加密算法有:RSA、Elgamal、背包算法、Rabin、D-H、ECC(椭圆曲线加密算法)。
四、数字签名
数字签名(又称公钥数字签名)是只有信息的发送者才能产生的别人无法伪造的一段数字串,这段数字串同时也是对信息的发送者发送信息真实性的一个有效证明。它是一种类似写在纸上的普通的物理签名,但是在使用了公钥加密领域的技术来实现的,用于鉴别数字信息的方法。
五、直接明文保存
早期很多这样的做法,比如用户设置的密码是“123”,直接就将“123”保存到数据库中,这种是最简单的保存方式,也是最不安全的方式。但实际上不少互联网公司,都可能采取的是这种方式。
六、使用MD5、SHA1等单向HASH算法保护密码
使用这些算法后,无法通过计算还原出原始密码,而且实现比较简单,因此很多互联网公司都采用这种方式保存用户密码,曾经这种方式也是比较安全的方式,但随着彩虹表技术的兴起,可以建立彩虹表进行查表破解,目前这种方式已经很不安全了。
七、特殊的单向HASH算法
由于单向HASH算法在保护密码方面不再安全,于是有些公司在单向HASH算法基础上进行了加盐、多次HASH等扩展,这些方式可以在一定程度上增加破解难度,对于加了“固定盐”的HASH算法,需要保护“盐”不能泄露,这就会遇到“保护对称密钥”一样的问题,一旦“盐”泄露,根据“盐”重新建立彩虹表可以进行破解,对于多次HASH,也只是增加了破解的时间,并没有本质上的提升。
八、PBKDF2
该算法原理大致相当于在HASH算法基础上增加随机盐,并进行多次HASH运算,随机盐使得彩虹表的建表难度大幅增加,而多次HASH也使得建表和破解的难度都大幅增加。
九、BCrypt
BCrypt 在1999年就产生了,并且在对抗 GPU/ASIC 方面要优于 PBKDF2,但是我还是不建议你在新系统中使用它,因为它在离线破解的威胁模型分析中表现并不突出。
十、SCrypt
SCrypt 在如今是一个更好的选择:比 BCrypt设计得更好(尤其是关于内存方面)并且已经在该领域工作了 10 年。另一方面,它也被用于许多加密货币,并且我们有一些硬件(包括 FPGA 和 ASIC)能实现它。 尽管它们专门用于采矿,也可以将其重新用于破解。