数据加密算法的基本概念

1、可逆与不可逆

对数据A进行算法F加密后,生成的密文B如果还能还原为数据A,则算法F为可逆加密算法,否则为不可逆加密算法。

MD5、SHA256、CRC32等哈希算法为不可逆算法,它们将任意长度的数据总是生成固定短小长度的密文。通常用来验证数据是否被修改,下载的软件是否损坏等。

AES、RSA、ECC等算法为可逆算法,通过“密钥”生成的密文能够再次使用“密钥”还原为原数据,生成的数据比原文大得多。通常用来加密数据。

2、对称加密与非对称加密

对称加密算法的加密与解密使用相同的密钥,速度比较快,但如何安全的传递密钥成为了一个问题。非对称加密算法则分别为加密和解密提供成对的不同密钥——私钥和公钥,通过公钥加密的数据只能使用对应的私钥解密,速度比较慢,不适合大量数据加密。

通常用户甲使用非对称算法生成私钥公钥,然后将公钥传递给用户乙。用户乙使用对称加密算法生成密钥A,使用公钥密钥A加密生成密文M,将密文M传递给用户甲。用户甲使用私钥密文M还原为密钥A,至此安全的传递密钥的步骤完成,之后双方的数据交换都使用密钥A进行对称加密。

3、数字签名

数字签名是为了证明数据是由你编写且没有被篡改,大多数网站和软件都在使用数字签名。流程是将数据通过哈希算法(例如SHA256)生成摘要,然后你使用私钥摘要加密生成数字签名A。其他人将你公开的公钥数字签名A解密为摘要A,然后使用同样的哈希算法将数据生成摘要B,最后对比摘要A摘要B是否相同。

4、实现

OpenSSL提供了各种常见的的加密算法实现,源码的demos中也提供了编程示例。

留下评论

您的电子邮箱地址不会被公开。 必填项已用 * 标注