我有一个基于XML的Web服务,其方法只能由另一台专用内部服务器上的进程使用,签名为:
public void MyMethod(字符串登录,字符串firstModifier)
login参数包含一个Login对象的序列化,该对象具有两个名为Username和Password的字符串字段,序列化为:
[?xml version =“ 1.0” encoding =“ utf-8”?] [登录xmlns:xsi =“ http://www.w3.org/2001/XMLSchema-instance” xmlns:xsd =“ http: //www.w3.org/2001/XMLSchema“] [UserName] MyUserName [/ UserName] [Password] MyPassword [/ Password] [/ Login]
firstBlockModifier由一个字符串组成,该字符串是为每个方法调用唯一地随机生成的。
我先用firstBlockModifier对消息的第一块进行XOR,然后在发送加密的消息和密码字符串之前,以CBC模式使用128位AES对整个消息进行加密(加密密钥与消息中的密码完全分开)。第一个区块已与XOR。
接收者搜索数据库以验证他之前从未收到过带有firstBlockModifier的消息。如果还没有,则将其记录在数据库中并使用它。接收者使用共享私钥解密消息,该私钥存储在两个应用程序服务器的每一个中。然后,他将解密后的第一个块与firstBlockModifier进行异或。然后将生成的字符串反序列化为Login对象。这有多安全?