牛骨文教育服务平台(让学习变的简单)
博文笔记

加密算法RSA+ASE使用情境

创建时间:2017-04-08 投稿人: 浏览次数:1143

在客户端和服务端进行信息交互的时候,免不了要对重要信息进行加密。下面介绍两类加密算法(对称加密和非对称加密)的使用情境。

  • 对称加密:加密和解密均使用同一份密钥,即使用该密钥加密之后只能靠此密钥才能解密。

  • 非对称加密:分为公钥和私钥,如果用公开密钥对数据进行加密,只有用对应的私有密钥才能解密;如果用私有密钥对数据进行加密,那么只有用对应的公开密钥才能解密。

以AES作为对称加密的代表,RSA作为非对称加密的代表。

AES和RSA加密算法的实现和使用可以参考 RSA、AES

两类加密算法的使用情境:

  • 情境一、登录时,客户端需要向服务端发送请求参数信息,服务端只需要回复是否简单的登录成功成功与否。

    1、只使用非对称算法:客户端向服务端发送的用户账号密码信息需要进行加密,这里可以先进行RSA加密(使用公钥进行加密),然后将密文进行发送,服务端通过私钥进行解密。<给定条件:客户端拥有公钥,服务端拥有私钥>

    2、使用两种加密算法:先使用AES(对称加密)对用户信息进行加密,得到密文。再使用RSA对AES的密钥进行加密,然后将密文和加密后的AES密钥一起发送给服务端,服务端先利用私钥对加密过的AES密钥进行解密,得到AES密钥,然后再利用AES密钥对密文进行解密,得到原始用户信息

  • 情境二 、登录成功后,服务端也需要向客户端发送相关重要信息。

    因为服务端需要向客户端发送重要信息,所以必须将服务端的信息进行加密处理。
    采取情境一的方法进行分析:
    1、直接使用RSA,在服务端利用私钥加密,然后在客户端采用公钥解密。这样做是不安全的,因为公钥是公开的,每个客户端都可以拥有。所以,当其他客户端截取到密文时就可以利用公钥进行解密。显然这种方法不可取。

    2、使用上面的第二种方法,将密文用服务器端生成的AES密钥进行加密,再用RSA对AES密钥进行加密,然后将密文与加密的AES密钥进行发送给客户端。当然这样做也不行,跟第一种情况类似,当其他客户端截取到密文和加密后的密钥时,就可以利用公钥将加密后的AES密钥进行解密,得到AES密钥后再对密文进行解密就可以获得服务端发送的原始信息了。

解决方法:可以在情境一的第二种方法上稍作修改:
在情境一的第2种情况下,服务端已经获取到了客户端发过来的AES密钥。此时,客户端和服务端同时拥有AES的密钥。所以,只需在服务端对要发给客户端的信息进行AES加密,得到密文。然后将密文(不发送AES密钥)发送给客户端就可以了。此时,其他客户端是没有AES私钥的,就算截取到了密文也是没有办法对它进行解密的。

相关文章:一篇不错的介绍AES和RSA的文章

声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。