.net NET中的确定性非对称加密?

.net NET中的确定性非对称加密?,.net,encryption,cryptography,public-key-encryption,encryption-asymmetric,.net,Encryption,Cryptography,Public Key Encryption,Encryption Asymmetric,我有一个与中央服务器通信的多代理应用程序,每个代理都有唯一的标识符(Guid),必须保密,但是服务器需要能够正确地区分不同的代理。我不能像服务器上那个样保存代理标识符,因为服务器可能被黑客攻击,标识符可能被丢弃,个人用户数据也可能以这种方式泄露。我不能保存标识符散列(如MD5或SHA*),因为在某个时刻我需要解密标识符(我从中央服务器获取所有数据并执行一些分析,这需要知道代理标识符) 我曾考虑过使用RSA(在代理上存储公钥,在服务器上存储加密的标识符),但每次加密代理标识符时,我都会得到唯一的值

我有一个与中央服务器通信的多代理应用程序,每个代理都有唯一的标识符(Guid),必须保密,但是服务器需要能够正确地区分不同的代理。我不能像服务器上那个样保存代理标识符,因为服务器可能被黑客攻击,标识符可能被丢弃,个人用户数据也可能以这种方式泄露。我不能保存标识符散列(如MD5或SHA*),因为在某个时刻我需要解密标识符(我从中央服务器获取所有数据并执行一些分析,这需要知道代理标识符)


我曾考虑过使用RSA(在代理上存储公钥,在服务器上存储加密的标识符),但每次加密代理标识符时,我都会得到唯一的值(因为RSA会向数据添加随机填充),所以RSA是不确定的。如何以确定性和加密安全的方式转换代理标识符?

如何:分析服务器为每个代理保留一对(真ID、假ID)。伪ID由代理公钥加密并保存在代理中。代理在将其发送到中央服务器时使用其私钥对其进行解密


只有分析服务器知道代理的真实ID。这三个人都知道伪ID,并在代理上保持加密。伪ID可以来自随机分布,看起来是加密数据。

因此,您不希望将数据存储在服务器上,因为可以忽略它,但RSA私钥在服务器上正常吗。。。顺便说一句,RSA本身是确定性的;填充是一个独立的步骤。您可以自己以非随机方式填充,但存在一些安全问题:@deviantfan我不打算在中央服务器上存储私钥,我打算在服务器上存储加密的标识符。我只将私钥存储在从中央服务器获取所有数据并执行分析的代理上。我知道如果我自己填充,私钥可以更容易地合成。我正在寻找一些合适的解决方案…你写的“异步”是指“不对称”,对吗?@CodesInChaos哦,是的。。。显然是这样。谢谢,我已经确定了标题。