Security and Cryptography in Python - One Time Pad
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Security and Cryptography in Python - One Time Pad,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1734字,纯文字阅读大概需要3分钟。
内容图文
![Security and Cryptography in Python - One Time Pad](/upload/InfoBanner/zyjiaocheng/606/e6e3d84fdd4047f49b09a63473e663d2.jpg)
Security and Cryptography in Python - One Time Pad
XOR Example
def xor(x, s):
print(x, 'xor', s, '=', x^s)
def xorb(x, s):
print(bin(x), 'xor', bin(s), '=', bin(x^s))
xor(4, 8)
xorb(4, 8)
xor(4, 4)
xorb(4, 4)
xor(255, 1)
xorb(255, 1)
xor(255, 128)
xorb(255, 128)
Running Result:
What is One Time Pad?
Encryption: message^key(random) = cipher
Decryption: cipher^key(random) = message
import random
def generate_key_stream(n):
return bytes(random.randrange(0, 256) for i in range(n))
def xor_bytes(key_stream, message):
length = min(len(key_stream), len(message))
return bytes([key_stream[i]^ message[i] for i in range(length)])
message = "YOU ARE AWESOME"
message = message.encode()
key_stream = generate_key_stream(len(message))
cipher = xor_bytes(key_stream, message)
print(key_stream)
print(cipher)
print(xor_bytes(key_stream, cipher))
Running Result:
One Time Pad - Security
The One Time Pad is unbreakable
Requirements:
- Key stream only used once
- Key stream only know by sender and receiver
- Key stream is generated by true randomness
Why can't One Time Pad be Broken?
You can decrypted to any plaintext available in the universe with that length.
import random
def generate_key_stream(n):
return bytes(random.randrange(0, 256) for i in range(n))
def xor_bytes(key_stream, message):
length = min(len(key_stream), len(message))
return bytes([key_stream[i]^ message[i] for i in range(length)])
# this is done by your enemy
message = "DO ATTACK"
message = message.encode()
key_stream = generate_key_stream(len(message))
cipher = xor_bytes(key_stream, message)
# this is us trying to break it
print(cipher)
message = "NO ATTACK"
message = message.encode()
guess_key_stream = xor_bytes(message, cipher)
print(xor_bytes(guess_key_stream, cipher))
Running Result:
内容总结
以上是互联网集市为您收集整理的Security and Cryptography in Python - One Time Pad全部内容,希望文章能够帮你解决Security and Cryptography in Python - One Time Pad所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。