我需要开发一个Android应用程序,在客户端进行加密/解密。传输和存储在服务器中的数据必须加密。问题是我无法在任何地方存储加密/解密密钥。
密钥无法存储在客户端计算机上。因为管理员(或可以访问服务器的人)不应该访问未加密的数据。
如何生成密钥呢?你能提出一些方法吗?
答案 0 :(得分:3)
我假设当你说加密密钥不应存储在设备中时,你的意思是:-)因为如果没有那个限制,你可以使用KeyStore。但是,这意味着密钥存储在设备上,这似乎不是您想要的。
因此,假设加密密钥在设备外部,它有点简单,因为没有太多选择空间:您的客户端应用程序要求用户以某种方式输入加密密钥(由您决定),它使用加密数据,然后立即忘记加密密钥。
然后它将加密数据发送到存储它的服务器。服务器不知道加密密钥,所以对于服务器来说它只是一个不透明的数据块。
当用户想要检索数据时,他们必须在现场提供解密密钥,因为它没有存储在设备上。