Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#ASP.NET Core 2中的安全Web聊天_Asp.net_Algorithm_Encryption_Web_Chat - Fatal编程技术网

C#ASP.NET Core 2中的安全Web聊天

C#ASP.NET Core 2中的安全Web聊天,asp.net,algorithm,encryption,web,chat,Asp.net,Algorithm,Encryption,Web,Chat,首先,我正在做一个硕士生的项目,这个项目是一个网上银行系统,并在这个系统上应用加密算法 第一种算法是一种新的加密算法,由请求我帮助的学生设计,用于加密数据库中的敏感数据(信用卡信息) 第二种算法(改进的AES算法)是使用web聊天室对银行客户和银行系统管理员之间的消息进行加密 当然,第一个算法没有问题,因为我可以应用它来加密用户提交的信用卡信息,并将其保存在数据库中 但是,问题是,指导这个学生项目的教授坚持要保护管理员和客户通过网络发送的消息,即他们正在使用网络聊天室,这些消息必须使用第二种算法

首先,我正在做一个硕士生的项目,这个项目是一个网上银行系统,并在这个系统上应用加密算法

第一种算法是一种新的加密算法,由请求我帮助的学生设计,用于加密数据库中的敏感数据(信用卡信息)

第二种算法(改进的AES算法)是使用web聊天室对银行客户和银行系统管理员之间的消息进行加密

当然,第一个算法没有问题,因为我可以应用它来加密用户提交的信用卡信息,并将其保存在数据库中

但是,问题是,指导这个学生项目的教授坚持要保护管理员和客户通过网络发送的消息,即他们正在使用网络聊天室,这些消息必须使用第二种算法(改进的AES)进行保护

大家都知道,如果我用Javascript编写第二个算法来加密浏览器客户端机器上的消息,然后将这些加密消息发送到服务器,这意味着任何打开此网页的人都可以使用此算法,因为我们都知道Javascript是一个开放的客户端源代码

所以,不要再说了,我只想问:


如何使用web应用程序(例如web聊天应用程序)应用任何加密算法来保护客户端计算机和服务器计算机之间的数据传输,而不使该算法成为任何客户端计算机的开源算法?

据我所知,这是不可能的,因为客户端必须能够对消息进行加密和解密;它从逻辑上要求客户机理解加密算法

加密机制的优势在于,即使知道算法,也很难在没有密钥的情况下将加密消息转换为明文


如果知道一种加密算法允许某人在没有密钥的情况下破译消息,那么该算法就很弱。

ADyson的评论包含了实际解决该问题的最佳解决方案,但听起来教授增加了一些限制,使你无法采用实际的解决方案


不可能在客户端计算机上执行加密算法,同时对运行该算法的人员和计算机保密。他们可以随时检查代码。

使用HTTPS保护浏览器和服务器之间的整个连接。就像世界上所有其他安全网站一样。正如你正确地说的那样,没有必要尝试对单个数据项进行加密,或者用JavaScript编写任何类型的加密代码。我同意你的观点ADyson,但教授坚持使用这种算法来保护连接,以及,对其他人保密这个算法。我怀疑它是为了掩盖浏览器和服务器之间的连接。当然,除非你的教授不懂网络技术。也许你应该向他们澄清这一点。我向他澄清了整个情况,但他坚持要找到解决办法。我告诉他我们是否可以为这个问题设计一个windows窗体应用程序,但他拒绝了。他仍然坚持要给他带来一个解决方案,用我们自己的方式用网络聊天技术加密信息。我完全同意你的观点,相信我,我已经知道了所有这些。唯一要问这个问题的就是确保我的想法是正确的。我会向我的教授解释整个讨论,我会尽力澄清这几乎是不可能实现的。多亏了你们所有人,使用的算法是AES,但它已经被修改为更强。问题是,该算法使用一个符号密钥,加密中使用的密钥也用于解密。还有希望吗?密钥应该在每个会话中生成,甚至可能在每个会话中生成多次。将采用其他形式的加密来加密新密钥的初始传输。如果制作一个生产系统,HTTPS将是一个不错的选择,但实际上你需要两种形式的加密来实现这一点。我有一个想法,我愿意接受你的建议。如果我用Java编写算法,并将此聊天室作为Java小程序应用程序供浏览器使用,这可能是解决方案吗?不幸的是,这留下了同样的问题-您必须使用HTTPS或其他方式加密连接才能传输Java小程序。如果中间收听的人可以拦截包含密钥的applet,那么他们可以使用密钥来解密未来的连接。我们称之为混淆;这可能有点棘手,但您只需将其隐藏起来,而不是对其进行加密。诀窍是利用非对称加密握手建立加密隧道,该隧道将临时用于传输您修改的AES算法将使用的密钥。我有一个想法,我想接受您的建议。如果我用Java编写算法,并将聊天室作为Java小程序应用程序供浏览器使用,这是解决方案吗?如果我正确理解情况,那么Java应用程序将在用户的浏览器中运行。不,与在浏览器中运行javascript相比,此解决方案没有任何安全优势。