我的Android应用程序从服务器下载一些加密的消息并将其存储在本地。即使在脱机期间,应用程序也需要稍后解密消息。该应用程序将公开分发,以便任何用户都能够解密该消息。
我是否应该使用客户端应用程序中嵌入的通用密码或将密钥与加密消息一起存储在服务器中?对于这个问题,我最好的选择是什么?我知道两者都是不好的做法,如果有更好的解决方案,我会很感激。
我无法透露我的所作所为,但这足以描述该情景。但是,实际信息并不敏感和私密。
加密的目的是掩盖所有用户的密码,这样任何用户都无法使用解密的密码访问某些用户的网上银行。
答案 0 :(得分:1)
嵌入式密钥根本不是一个好主意,这是Snapchat开发人员所做的不可饶恕的错误。在您的情况下,使用TLS连接可以解决问题,然后您可以通过该安全连接共享密钥,而无需进一步的程序。我创建了另一个基于非对称密钥的安全协议,用于在公共网络上共享密钥而不使用Android的TLS协议。在这里你可以学习代码:
https://github.com/Spentas/securechat/tree/master/app/src/main/java/com/spentas/javad/securechat
如果你想使用的话,TLS实现也包含在websocket包下的源代码中。