Bootstrap

数据加密 第五篇:非对称密钥

非对称密钥(Asymmetric Keys)跟对称密钥相对,它使用一对密钥(算法),一个密钥用于加密,另一个密钥用于解密,加密的密钥称为私钥(private key),解密的密钥称为公钥(public key)。私钥由一方安全保管,不能外泄,而公钥则可以发给任何请求它的人。比如,你向银行请求公钥,银行将公钥发给你,你使用公钥对消息加密,那么只有私钥的持有人——银行才能对你的消息解密。与对称加密不同的是,银行不需要将私钥通过网络发送出去,因此安全性大大提高。

跟对称密钥相比,非对称密钥提供的安全级别更高,付出的代价是消耗的资源更多。我们建议开发者避免使用非对称密钥对大量的数据进行加密和解密操作,推荐的做法是:对数据进行压缩,使用对称密钥来加密压缩之后的数据,由于对称密钥可能在数据传递过程中被窃取和破译,因此,推荐使用非对称密钥来保护对称密钥。

举个例子,发送方把对称加密的密钥使用非对称加密的公钥进行加密,发送出去;接收方使用私钥进行解密得到对称加密的密钥,这样,双方使用对称加密来进行沟通。

ENCRYPTBYASYMKEY()函数使用非对称密钥来加密数据,该函数加密的数据字节长度是有限度的,根据算法的不同,加密的长度限制不同:

  • 对于RSA_512算法,最多加密53bytes;
  • 对于RSA_1024算法,最多加密117bytes;
  • 对于RSA_2048算法&#x
;