API 加密和签名是两个不同的安全机制,通常用于不同的场景和目的。
-
API加密:API加密是指通过对请求的内容进行加密,以确保传输的数据在传输过程中不会被窃听或篡改。这通常使用HTTPS来实现,HTTPS本身提供了数据加密和完整性保护。在大多数情况下,使用HTTPS足以确保数据的安全性,不需要额外的加密。
-
API签名:API签名是一种用于验证请求的真实性和完整性的机制。通常,API请求中会包含一个签名字段,该签名字段是根据请求参数、密钥和特定算法生成的。服务器端会使用相同的密钥和算法来验证签名的有效性,以确保请求没有被篡改。API签名通常用于验证请求的来源和完整性。
在实际应用中,通常情况下,使用HTTPS来加密传输数据已经足够安全,因为HTTPS不仅提供了加密,还提供了身份验证和数据完整性保护。然而,在某些情况下,您可能希望在API请求中添加签名来增加额外的安全性,尤其是当您需要确保请求的来源是合法的时候。
总之,API加密和签名可以根据具体的安全需求来选择使用。如果您需要额外的安全性,可以考虑使用API签名,但不要忽视HTTPS本身提供的加密和安全性保护。
加签的目的:验证信息的发送方是否正确,信息是否被其他人篡改。
之所以用发送方的私钥加签,是因为,即便信息被黑客拦截,黑客修改了信息,但是加签需要用发送方的私钥,黑客没有发送方的私钥,所以也无法生成正确的签名,接收方验签就不通过。
反之如果用接收方的公钥加签,如果信息被黑客拦截,黑客修改了信息,因为接收方的公钥是公开的,黑客就可以重新生成新的签名,替换原有的签名,发送出去,接收方接收到信息,拿自己的私钥校验是通过的,所以接收方无法辨别信息是真正的发送方还是黑客发送过来的,这样的加签不能辨别信息是否被篡改过
加密的目的:保证信息的隐私,不被别人看到,只能让接收方看到正确的信息。
之所以用接收方的公钥加密,是因为,如果信息被黑客拦截,需要用接收方的私钥来解密,黑客无法获取接收方的私钥,即便拦截了信息(情报),黑客也无法看到明文,只能看天书了。
反之,如果用发送方的私钥加密,如果信息被黑客拦截,因为发送方的公钥是公开的,黑客就可以用发送方的公钥解密密文获得明文,这样的加密所有的人都可以看到明文,不能保证信息的隐私。