C++ RC4-128位比AES-128位安全吗?

C++ RC4-128位比AES-128位安全吗?,c++,windows,security,encryption,cryptography,C++,Windows,Security,Encryption,Cryptography,我有一个客户机-服务器系统。客户端和服务器应用程序在windows中编程。我使用Windows Crypto API加密客户端和服务器之间的通信。我选择的加密数据的详细信息如下: 提供程序:Microsoft增强加密提供程序v1.0 提供程序类型:PROV\u RSA\u FULL-交换密钥:RSA 算法:RC4流加密-128位 我问我选择的加密是否安全?它们的安全性是多少?您能将我的规范与AES 128位进行比较吗?在密码学中,密码的安全性在很大程度上取决于您使用的加密解密密钥的长度。使用AE

我有一个客户机-服务器系统。客户端和服务器应用程序在windows中编程。我使用
Windows Crypto API
加密客户端和服务器之间的通信。我选择的加密数据的详细信息如下:

提供程序:
Microsoft增强加密提供程序v1.0

提供程序类型:
PROV\u RSA\u FULL
-交换密钥:
RSA

算法:
RC4流加密-128位


我问我选择的加密是否安全?它们的安全性是多少?您能将我的规范与AES 128位进行比较吗?

在密码学中,密码的安全性在很大程度上取决于您使用的加密解密密钥的长度。使用AES-256(256位密钥)加密16位数据比使用AES-128(128位密钥)加密16位数据安全得多

首先,请注意AES和RC4是两种不同的密码。AES是一种分组密码,而RC4是一种流密码。您可以使用分组密码创建流密码。这两种密码是两种不同的东西,有着不同的用法。你必须分别比较它们,并决定哪一个更适合你

RC4的流行与它的简单性和速度有关。AES的速度根本没有RC4快,但AES的硬件实现以及AES_NI,执行一轮AES的新指令,使其速度非常快

AES安全性对每个人来说都很清楚,但RC4有一些弱点。2005年,安德烈亚斯·克莱因(Andreas Klein)提出了一份关于这一问题的分析报告。Erik Tews、[Ralf Philipp Weinmann][2]和Andrei Pychkine创建了一种工具,可在一分钟内破解104位RC4

我建议您在以下情况下使用AES加密:

  • 你需要强大的安全性

  • 您的处理器具有AES_NI指令

    [2] :埃里克·特维斯、拉尔夫·菲利普·温曼、安德烈·皮什金。在不到一分钟的时间内将104位WEP中断


  • 在密码学中,密码的安全性在很大程度上取决于您使用的加密解密密钥的长度。使用AES-256(256位密钥)加密16位数据要比使用AES-128(128位密钥)加密16位数据安全得多

    首先,请注意AES和RC4是两种不同的密码。AES是一种分组密码,而RC4是一种流密码。您可以使用分组密码创建流密码。这两种密码是两种不同的东西,有着不同的用法。你必须分别比较它们,并决定哪一个更适合你

    RC4的流行与它的简单性和速度有关。AES的速度根本没有RC4快,但AES的硬件实现以及AES_NI,执行一轮AES的新指令,使其速度非常快

    AES安全性对每个人来说都很清楚,但RC4有一些弱点。2005年,安德烈亚斯·克莱因(Andreas Klein)提出了一份关于这一问题的分析报告。Erik Tews、[Ralf Philipp Weinmann][2]和Andrei Pychkine创建了一种工具,可在一分钟内破解104位RC4

    我建议您在以下情况下使用AES加密:

  • 你需要强大的安全性

  • 您的处理器具有AES_NI指令

    [2] :埃里克·特维斯、拉尔夫·菲利普·温曼、安德烈·皮什金。在不到一分钟的时间内将104位WEP中断


  • AES-128被认为比RC4更安全。RC4是一种旧的流密码,被认为是已损坏的。也就是说:可以获得关于密钥流的信息,因此可以获得明文

    也就是说,RSA和AES加密本身都不足以创建安全的传输协议。您还需要安全地建立密钥,验证至少一个参与者(一个单独的主题),验证您的消息,避免重播和反转攻击,避免定时攻击,确保不会泄漏太多密文长度的信息


    这就是为什么您通常被告知应该使用(配置良好的)TLS,而不是发明自己的TLS。运输安全不是靠过山车后部就能实现的。AES-128被认为比RC4更安全。RC4是一种旧的流密码,被认为是已损坏的。也就是说:可以获得关于密钥流的信息,因此可以获得明文

    也就是说,RSA和AES加密本身都不足以创建安全的传输协议。您还需要安全地建立密钥,验证至少一个参与者(一个单独的主题),验证您的消息,避免重播和反转攻击,避免定时攻击,确保不会泄漏太多密文长度的信息


    这就是为什么您通常被告知应该使用(配置良好的)TLS,而不是发明自己的TLS。运输安全性不是你可以在过山车后面创建的。

    RC4是,而AES不是。RC4是,而AES不是。我不同意“使用AES-256(256位密钥)加密16位数据比使用AES-128(128位密钥)加密16位数据安全得多”,请参见@John29这基本上是正确的,例如,如果穷举键搜索是唯一的方法,那么哪种方法需要花很多时间来猜测键?我不想在这里争论。请阅读我提供的链接,了解我不同意的原因。我同意你的一般说法“在密码学中,密码的安全性在很大程度上取决于你使用的加密解密密钥的长度”,但我不同意AES-256比AES-128安全得多。我认为,一个密钥长度对现实世界产生影响的例子,使暴力攻击成为可能,更合适。我不同意“使用AES-256(256位密钥)加密16位数据比使用AES-128(128位密钥)加密16位数据更安全”,见@John29这基本上是正确的,例如,如果穷举键搜索是唯一的方法,那么哪种方法需要花很多时间来猜测键?我不想在这里争论。请阅读我提供的链接,了解我不同意的原因。我同意你的看法