예제 #1
0
파일: test_des.py 프로젝트: yyolk/pyspnego
def test_encrypt_large_bytes_padding():
    des = DES(b"PASSWORD")
    expected = b"\x15\x14\x4f\x75\x8c\x83\xd0\x34" \
               b"\xe6\x19\x4b\xe6\x51\x22\xe3\x91" \
               b"\x68\x02\xa9\xd8\x6c\x04\x1f\x2d" \
               b"\x95\x1d\xc7\x12\xe4\x7c\x79\x04"
    actual = des.encrypt(b"abcdefghijklmnopqrstuvwxyz")
    assert actual == expected
예제 #2
0
파일: test_des.py 프로젝트: yyolk/pyspnego
def test_encrypt_decrypt_multiple_keys():
    # run random tests with random keys and data
    for i in range(512):
        des = DES(os.urandom(8))
        data = os.urandom(16)
        enc_data = des.encrypt(data)
        dec_data = des.decrypt(enc_data)
        assert enc_data != data
        assert dec_data == data
예제 #3
0
파일: test_des.py 프로젝트: yyolk/pyspnego
def test_expand_56bit_key():
    expected = b"\x01\x80\x80\x61\x40\x29\x19\x0E"
    actual = DES.key56_to_key64(b"\x01\x02\x03\x04\x05\x06\x07")
    assert actual == expected

    expected = b"\x51\x20\x54\x6b\x34\xba\x3d\xa4"
    actual = DES.key56_to_key64(b"PASSWOR")
    assert actual == expected

    expected = b"\x45\x01\x01\x01\x01\x01\x01\x01"
    actual = DES.key56_to_key64(b"D\x00\x00\x00\x00\x00\x00")
    assert actual == expected
예제 #4
0
파일: crypto.py 프로젝트: yyolk/pyspnego
def des(k, d):  # type: (bytes, bytes) -> bytes
    """DES encryption.

    Indicates the encryption of an 8-byte data item `d` with the 7-byte key `k` using the Data Encryption Standard
    (DES) algorithm in Electronic Codebook (ECB) mode. The result is 8 bytes in length ([FIPS46-2]).

    Args:
        k: The 7-byte key to use in the DES cipher.
        d: The 8-byte data block to encrypt.

    Returns:
        bytes: The encrypted data block.
    """
    return DES(DES.key56_to_key64(k)).encrypt(d)
예제 #5
0
파일: test_des.py 프로젝트: yyolk/pyspnego
def test_decrypt_fail_invalid_size():
    with pytest.raises(
            ValueError,
            match="DES decryption block must be a multiple of 8 bytes") as exc:
        des = DES(b"PASSWORD")
        des.decrypt(b"\x01\x02\x03\x04")
예제 #6
0
파일: test_des.py 프로젝트: yyolk/pyspnego
def test_decrypt():
    des = DES(b"PASSWORD")
    expected = b"abcdefgh"
    actual = des.decrypt(b"\x15\x14\x4f\x75\x8c\x83\xd0\x34")
    assert actual == expected
예제 #7
0
파일: test_des.py 프로젝트: yyolk/pyspnego
def test_encrypt_block():
    with pytest.raises(
            ValueError,
            match="DES 7-byte key is not 7 bytes in length, actual: 1") as exc:
        DES.key56_to_key64(b"\x00")
예제 #8
0
파일: test_des.py 프로젝트: yyolk/pyspnego
def test_des_invalid_key_size():
    with pytest.raises(
            ValueError,
            match="DES encryption key should be 8 bytes in length") as exc:
        DES(b"\x01\x02")