Exemple #1
0
def eccDecrypt(data_cipher, privateKey):
    "Giải mã ECC với đầu vào là chuỗi bytes từ hình ảnh đã mã hoá"

    c = data_cipher[:64]
    C1 = (OS2IP(c[:32]), OS2IP(c[-32:]))
    C = EccMath.scalar_Point(privateKey, C1)
    C = EccMath.negatives_Point(C)

    data_cipher = data_cipher[64:]
    points = []
    for i in range(0, len(data_cipher), 64):
        data = data_cipher[i:i + 64]
        x = OS2IP(data[:32])
        y = OS2IP(data[-32:])
        points.append((x, y))

    plain_data = []
    for point in points:
        plain_data.append(elgamalDe(C, point))

    plain_bytes = []
    for j in plain_data:
        plain_bytes.append(I2OSP(j, 31))

    plain_data = b''.join(plain_bytes)

    plain_data = remove_padding(plain_data)

    return plain_data
Exemple #2
0
def eccDecrypt(data_cipher, privateKey):
    c = data_cipher[:64]
    C1 = (OS2IP(c[:32]), OS2IP(c[-32:]))
    C = EccMath.scalar_Point(privateKey, C1)
    C = EccMath.negatives_Point(C)

    data_cipher = data_cipher[64:]
    points = []
    for i in range(0, len(data_cipher), 64):
        data = data_cipher[i:i+64]
        x = OS2IP(data[:32])
        y = OS2IP(data[-32:])
        points.append((x, y))

    plain_data = []
    for point in points:
        plain_data.append(elgamalDecrypt(C, point))

    plain_bytes = []
    for j in plain_data:
        plain_bytes.append(I2OSP(j, 31))

    plain_data = b''.join(plain_bytes)

    return plain_data
Exemple #3
0
def RSAencrypt(publickey, data):
    cipher_rsa = []
    for i in range(0, len(data), 127):
        value = data[i:i + 127]
        m = OS2IP(value)
        c = cipher(publickey, m)
        cipher_rsa.append(I2OSP(c, 128))
    return b''.join(cipher_rsa)
Exemple #4
0
def RSAdecrypt(privatekey, data):
    plain_rsa = []
    for i in range(0, len(data), 128):
        value = data[i:i + 128]
        c = OS2IP(value)
        m = cipher(privatekey, c)
        plain_rsa.append(I2OSP(m, 127))

    return b''.join(plain_rsa)
Exemple #5
0
def eccEncrypt(data, publicKey):
    k = random.randint(1, n)
    C1 = EccMath.scalar_Point(k, G)
    P = EccMath.scalar_Point(k, publicKey)
    cipher_points = []
    for i in range(0, len(data), 31):
        plain = data[i:i+31]
        plain = OS2IP(plain)
        ecc_enc = elgamalEncrypt(plain, P)
        cipher_points.append(ecc_enc)

    cipher_bytes = []
    for point in cipher_points:
        point_to_bytes = I2OSP(point[0], 32) + I2OSP(point[1], 32)
        cipher_bytes.append(point_to_bytes)

    cipher_bytes = b''.join(cipher_bytes)
    c = I2OSP(C1[0], 32) + I2OSP(C1[1], 32)

    return c + cipher_bytes
Exemple #6
0
def eccEncrypt(rsa_value, publicKey):
    "Mã hoá ECC với đầu vào là chuỗi bytes đã được mã hoá bằng RSA"

    k = random.randint(1, n)
    C1 = EccMath.scalar_Point(k, G)
    P = EccMath.scalar_Point(k, publicKey)

    cipher_points = []
    for i in range(0, len(rsa_value), 31):
        plain = rsa_value[i:i + 31]
        plain = OS2IP(plain)
        ecc_enc = elgamalEn(plain, P)
        cipher_points.append(ecc_enc)

    cipher_bytes = []
    for point in cipher_points:
        point_to_bytes = I2OSP(point[0], 32) + I2OSP(point[1], 32)
        cipher_bytes.append(point_to_bytes)

    cipher_bytes = b''.join(cipher_bytes)
    c = I2OSP(C1[0], 32) + I2OSP(C1[1], 32)

    return c + cipher_bytes
Exemple #7
0
def rsaDecrypt(privatekey, data):
    "Giải mã bằng thuật toán RSA với đầu vào là chuỗi bytes được giải mã từ ECC"

    plain_rsa = []

    # Đọc 128 bytes một để giải mã
    for i in range(0, len(data), 128):
        value = data[i:i + 128]
        c = OS2IP(value)
        m = rsa_cipher(privatekey, c)
        plain_rsa.append(I2OSP(m, 127))

    # Trả về chuỗi bytes sau khi giải mã
    return b''.join(plain_rsa)
Exemple #8
0
def rsaEncrypt(publickey, data):
    "Mã hoá bằng thuật toán RSA với đầu vào là chuỗi bytes đọc từ file ảnh"

    cipher_rsa = []

    # Đọc 127 bytes một để mã hoá
    for i in range(0, len(data), 127):
        value = data[i:i + 127]
        m = OS2IP(value)
        c = rsa_cipher(publickey, m)
        cipher_rsa.append(I2OSP(c, 128))

    # Trả về chuỗi bytes sau khi mã hoá
    return b''.join(cipher_rsa)