我正在做一个关于IT安全的项目,我的项目涉及数据加密和解密。我有一个想法,即生成一个真正的随机密钥,使用一次性密钥不能重复使用。但我不想从头开始编写代码,因为我不是python编程语言的专家。我需要用python编写的代码。以及代码应该可以在Windows操作系统上执行。因为我使用的是Windows 7和8。
答案 0 :(得分:2)
真正的一次性垫子对你的目的来说是不切实际的。密钥不能在接收端重新创建,但必须传输到接收器。由于密钥与消息一样长,并且必须保持安全,因此您必须已经有一种安全的方式来传输相同长度的内容。所以忽略密钥并安全地传输消息。
99%的人"改善" OTP结果是流密码。我怀疑你的设计没有什么不同。研究流程密码以获取创意。
答案 1 :(得分:1)
您无法从伪随机数生成器生成加密良好的随机性,这几乎是每个基于计算机的RNG。
在Python中,您可以使用random.SystemRandom ,如果 您的系统提供服务,并且需要的时间超过您的耐心,因为系统需要一段时间才能使用收集熵。
对于课堂练习,0x00000000…
或0x01020304…
的OTP可能非常适合演示目的。它甚至可能更好,因为副手验证更容易。
确实,所有零的OTP,Randall Munroe shows是完全随机的OTP
答案 2 :(得分:-1)
真正的随机密钥是不切实际的,不可能生成。你需要的是一个加密随机密钥。在python中,这可以由os.urandom(n)生成,random.SystemRandom使用它作为用户msw建议。
虽然创建自己的随机函数是最好的,但这应该足够了。