zoukankan      html  css  js  c++  java
  • Security and Cryptography in Python

    Security and Cryptography in Python - Block Cipher(2)

    Double DES
    from pyDes import *
    import random
    
    message = "01234567"
    key_11 = random.randrange(0, 256)
    key_1 = bytes([key_11, 0, 0, 0, 0, 0, 0, 0])
    key_21 = random.randrange(0, 256)
    key_2 = bytes([key_21, 0, 0, 0, 0, 0, 0, 0])
    iv = bytes([0]*8)
    
    k1 = des(key_1, ECB, iv, pad=None, padmode=PAD_PKCS5)
    k2 = des(key_2, ECB, iv, pad=None, padmode=PAD_PKCS5)
    
    # Alice sending the encrypted message
    cipher = k1.encrypt(k2.encrypt(message))
    print("Key 11:", key_11)
    print("Key 21:", key_21)
    print("Encrypted:", cipher)
    
    # This is Bob
    message = k2.decrypt(k1.decrypt(cipher))
    print("Decrypted:", message)
    
    # Eve's attack on Double DES
    lookup = {}
    for i in range(256):
        key = bytes([i, 0, 0, 0, 0, 0, 0, 0])
        k = des(key, ECB, iv, pad=None, padmode=PAD_PKCS5)
        lookup[k.encrypt(message)] = i
    
    for i in range(256):
        key = bytes([i, 0, 0, 0, 0, 0, 0, 0])
        k = des(key, ECB, iv, pad=None, padmode=PAD_PKCS5)
        if k.decrypt(cipher) in lookup:
            print("Key 11:", i)
            print("Key 21:", lookup[k.decrypt(cipher)])
            key_1 = bytes([i, 0, 0, 0, 0, 0, 0, 0])
            key_2 = bytes([lookup[k.decrypt(cipher)], 0, 0, 0, 0, 0, 0, 0])
            k1 = des(key_1, ECB, iv, pad=None, padmode=PAD_PKCS5)
            k2 = des(key_2, ECB, iv, pad=None, padmode=PAD_PKCS5)
            print("Eve break double DES", k2.decrypt(k1.decrypt(cipher)))
            break
    

    Running result:

    image-20210210101022590

    相信未来 - 该面对的绝不逃避,该执著的永不怨悔,该舍弃的不再留念,该珍惜的好好把握。
  • 相关阅读:
    8-21模拟赛解题报告
    8-20模拟赛解题报告
    8-19模拟赛解题报告
    8-18模拟赛解题报告
    8-27复习(写题)报告
    [省赛训练(DP)]Course Selection System
    Trie(字典树)的基本操作与应用(一般与字符串前缀相关)
    [算法学习]欧拉筛
    构造函数运行的机制
    js基本数据类型之间的转换
  • 原文地址:https://www.cnblogs.com/keepmoving1113/p/14395078.html
Copyright © 2011-2022 走看看