我正在尝试加密NSString内容并将其发送到服务器。
AES密钥,不应该是简单的纯文本。 例如:"密码$ 5"。
应该添加一个盐,所以就像randomData + Password $ 5。
此密钥将用于加密。
所以,对于服务器,我将发送像这样的JSON
{
password:"Encrypted Password with AES256"
}
现在,我的问题是密钥是随机的,因为盐是随机的,那么我如何解密AES256收到的加密字符串呢?
虽然我知道钥匙(密码5美元),但我不知道盐?
我是否必须将盐发送到服务器(对于它来说最好的地方,如果它在标题中或在响应本身中),是否安全?
{
password: "Encrypted Password with AES256",
salt: "Random Hex bytes used"
}
另外,有什么方法可以使用Spring Restful服务处理这个问题吗?
答案 0 :(得分:2)
只需使用https,所有数据和查询字符串都是加密的。添加证书固定甚至MITM攻击都可以减轻。您的加密将不会更好。
如果您决定使用RNCryptor进行自己的加密。没有沉浸在密码学中的人几乎没有机会获得安全权。
在服务器上不保存密码,用盐通过PBKDF2运行,并保存盐,迭代次数和散列密码。
答案 1 :(得分:1)
如果您的目标是加密通过网络发送的数据,则应使用安全连接来处理此问题。这是在服务器之间,而不是由应用程序代码处理。
如果数据本身应该加密,那么你想要在服务器端处理盐的生成,加密。
对于密码,您需要哈希它们而不加密它们。永远不应该有解密密码的理由。您始终可以对提供的密码进行哈希处理并比较哈希值。