Encryption RC4使用明文作为加密自身的密钥是否安全?

Encryption RC4使用明文作为加密自身的密钥是否安全?,encryption,rc4-cipher,Encryption,Rc4 Cipher,基本上就是标题所说的。如果我有一个密码,比如说“APPLEPIE”,当我使用它时,使用“APPLEPIE”作为密钥安全吗?当您知道密钥和明文或短而相同时,是否有可能破坏RC4加密?这应该使用类似的密钥生成算法来处理,该算法将允许您以适合密码验证的方式安全地从密码生成哈希(我假设您正在这样做) 虽然可以通过这种方式生成RC4安全的系统(通过使用良好的KDF(如PBKDF2)将密码转换为RC4密钥,然后生成随机的nonce),但这是大量的开销。在相同的安全级别下,最终密码文本的长度会更长,生成密码文

基本上就是标题所说的。如果我有一个密码,比如说“APPLEPIE”,当我使用它时,使用“APPLEPIE”作为密钥安全吗?当您知道密钥和明文或短而相同时,是否有可能破坏RC4加密?

这应该使用类似的密钥生成算法来处理,该算法将允许您以适合密码验证的方式安全地从密码生成哈希(我假设您正在这样做)


虽然可以通过这种方式生成RC4安全的系统(通过使用良好的KDF(如PBKDF2)将密码转换为RC4密钥,然后生成随机的nonce),但这是大量的开销。在相同的安全级别下,最终密码文本的长度会更长,生成密码文本的时间也会更长。最后,您将创建一个极其复杂的安全散列函数(其第一步是“做您唯一需要做的事情”)。而且您可能在这一过程中犯了一个错误,使系统不安全。RC4可能很难正确执行,并且已经知道相关的密钥攻击;因此WEP被破坏。

您将如何解密它?我不理解第二句话;如果您知道密钥,那么就没有什么理由“破坏RC4加密”“@GregS我不明白,就像加密一样。这是为了访问PIC芯片。我有一个密码,如上面的例子,我然后RC4密码本身。例如:messtoEncrypt=toArray(“MyPassword”)key=toArray(“MyPassword”)rc4=new ARC4(key);rc4.加密(messtoEncrypt);base64String=messtoEncrypt@owlstead对某些人来说,是的,但总有一些原因。如果我忘记了密码,而我知道密钥和明文在哪里是一样的,那么是否有可能从只知道密码的情况下解密它;这就是你刚才说的伪代码。是的,如果它看起来像这样,暴力强迫它绝对是最简单的方法。这应该是微不足道的。您可能能够比键入它更快地破解它…感谢您的回答,这将在一个安全的位置内,因此加密不需要太完美。我只是想知道,使用我提到的RC4方法是否有一个缺点,即我可以找到明文,知道密钥和明文在哪里相同。请参阅上面的伪代码。这取决于您如何使用RC4。如果您正确使用RC4,则不会,它得到了合理的保护。然而,如果您正确使用RC4,这是一个非常复杂的解决方案。您需要执行的第一步是运行KDF(如PBKDF2)。到那时,你已经达到了目标。此时添加RC4只会降低系统的安全性。如果您跳过KDF而不正确地使用RC4,则是的,此系统提供的安全性较差。事实上,使用密码本身加密只会使情况变得更糟,但即使这样也会不安全。为了完全清楚:使用RC4这种方式比使用更简单的解决方案更不安全。不应该以这种方式使用加密算法,但在加密算法中,RC4是一个特别糟糕的选择,因为它具有众所周知的相关密钥攻击。你想散列你的密码。使用散列算法。我推荐PBKDF2用于此目的。正如您从伪代码中看到的,我认为我会错误地使用它。但是我并不担心,我更感兴趣的是因为它很弱,因为RC4基本上是一个XOR实现,对我来说也是一种可能的方法,如果我忘记了密码,我可以只知道我知道的就恢复它。密钥和明文是相同的,两者都很短,而且在Rc4之后它所做的唯一事情就是Base64。所以我只是解码Base64,得到了原始输出。明白我的意思吗?(你没有发布伪代码)如果你想让它可以破解,为什么不使用简单的模糊处理呢?ROT-13或Base64编码。如果您只想进行模糊处理,为什么要使用RC4?如果你想让它成为超级秘密混淆,只需ROT-10或Base60编码(即将值更改为某个“超级秘密”数字)。或者你是在试图打破一个实施不善的现有系统?如果密码相当短并且可以输入,只需强制输入即可。我可能会根据开膛手约翰的代码,就像这家伙那样: