Security 如果加密的明文是随机的,一次键盘可以重复使用吗?

Security 如果加密的明文是随机的,一次键盘可以重复使用吗?,security,encryption,cryptography,encryption-symmetric,Security,Encryption,Cryptography,Encryption Symmetric,我想用一个比明文短的密钥加密纯随机数据 我应该使用AES或其他健壮的加密算法,还是可以使用OTP,即仅使用具有唯一密钥的xoring(纯随机)明文,逐块 例如,数据长度为1024位,是随机的。密钥长度为128位(也是随机的)。使用相同密钥对8个连续的128位块进行异或加密是否安全 例如,数据长度为1024位,是随机的。密钥长度为128位(随机) 也是)。通过对8个连续的128位块进行异或运算来加密数据安全吗 用同一把钥匙 如果你的数据是随机的,那么答案是肯定的 你可以把你的实际数据视为OTP密钥

我想用一个比明文短的密钥加密纯随机数据

我应该使用AES或其他健壮的加密算法,还是可以使用OTP,即仅使用具有唯一密钥的xoring(纯随机)明文,逐块

例如,数据长度为1024位,是随机的。密钥长度为128位(也是随机的)。使用相同密钥对8个连续的128位块进行异或加密是否安全

例如,数据长度为1024位,是随机的。密钥长度为128位(随机) 也是)。通过对8个连续的128位块进行异或运算来加密数据安全吗 用同一把钥匙

如果你的数据是随机的,那么答案是肯定的


<>你可以把你的实际数据视为OTP密钥。它完全是随机的,只使用一次,因此无法恢复密钥或数据。

如果数据本身是随机的,那么它对文本空间的影响同样大,因此任何转换都会带来安全性。XOR或流密码保持块在密文中的关系,如下所示

from Crypto.Cipher import ARC4
key = '1234567812345678'
obj1 = ARC4.new(key)
obj2 = ARC4.new(key)
d1= obj1.encrypt('\x01\x82\x83\x04\x05\x06\x10\x81\x23\x32\x33\x34')
d2= obj2.encrypt('\x81\x02\x83\x84\x85\x86\x90\x01\xa3\xb2\x33\xb4')
print repr(d1)
print repr(d2)


p1='';p2=''
for i in d1:
    if ord(i)>=128: p1+=chr(ord(i)-128)    
    else: p1+=chr(ord(i))

print; print
for i in d2:
    if ord(i)>=128: p2+= chr(ord(i)-128)    
    else: p2+=chr(ord(i))
print p1==p2`    
输出:

'\xbaq\xba\xd0\x0c\xb7\xce&\xd3\x019\xfb'
':\xf1\xbaP\x8c7N\xa6S\x819{'


True
您的问题是“使用相同密钥对8个连续128位块进行xoring加密是否安全?”

这不是一次性的便笺簿。一次性焊盘使用一次,且仅使用一次。对部分未加密数据的任何妥协都将允许恢复全部或部分密钥,从而恢复更多未加密数据


安全加密方案可以防止攻击者知道部分或全部明文:即“已知明文攻击”。你的计划不安全;它容易受到已知的明文攻击。

您说“安全”到底是什么意思?我想答案取决于这一点。