【发布时间】:2019-04-09 06:51:31
【问题描述】:
我们有一个场景,我们的 Angular 应用程序调用我们的后端 API(使用 django rest 框架开发)。我们使用 Jwt 进行 API 身份验证。我们有一个端点 url,它接受用户名和密码(POST 请求)并使用 django 后端对用户进行身份验证。我们已经在 APACHE HTTP Server 上部署了应用程序,并使用 SSL (Https) 进行加密。
但我们还想加密请求负载(发送到 django API 的数据)。在当前情况下,从 Angular 应用程序加密用户名和密码,并在 django 中解密相应的数据。为此,我们在 Angular 应用程序中使用 CryptoJs,在 Django 中使用 Pycrypto。但是我们无法解密 django 中的数据。
这是我们在django app上使用的解密函数代码:
MODE = AES.MODE_CBC
key = 'k%eu6sy)h&vue#5yrpok#1)^1ya#l1t('
def decrypt(ciphertext,key, mode):
encobj = AES.new('k%eu6sy)h&vue#5yrpok#1)^1ya#l1t(', AES.MODE_CBC)
decrypted = encobj.decrypt(ciphertext)
return decrypted.decode('utf-8')
ciphertext_user_name=request.data['username'].encode("utf8")
ciphertext_pwd=request.data['password'].encode("utf8")
usr = decrypt(ciphertext_user_name,key,MODE)
pwd = decrypt(ciphertext_pwd,key,MODE)
我们也在 CryptoJs 中使用 CBC 模式。
以上代码只是一个示例代码。有人可以建议,这是正确的方法吗,或者我们应该改变方法并做其他事情。
提前致谢!
【问题讨论】:
标签: encryption cryptojs pycrypto