add of compression encryptino decryption process

This commit is contained in:
Bartoszkk 2024-07-01 15:04:24 +02:00
parent 6d9f3f4b9f
commit c3dbdefc3f
3 changed files with 98 additions and 0 deletions

1
encryption/example.bin Normal file
View File

@ -0,0 +1 @@
Ϩ -‡Ş™oŹÂh`hŃ´´dď*ă_6j>/Ä7zCqóŢąS´WK#ĐŇ\بŠ‰G>o,>çU§ t'Qΰńp2GXpć_ü#v2üŻŽ _}4zŘ)_Ý<5F>úŘ·Y>erĂ^®S”!µÇb˛˘‰[ßó

96
encryption/main.py Executable file
View File

@ -0,0 +1,96 @@
#!/usr/bin/env python3
import sys
from ffmpy import FFmpeg
from cryptography.hazmat.primitives.asymmetric import ec
from cryptography.hazmat.primitives import hashes
from cryptography.hazmat.primitives.kdf.hkdf import HKDF
from cryptography.hazmat.primitives.ciphers import Cipher, algorithms, modes
from cryptography.hazmat.primitives import serialization
from cryptography.hazmat.primitives import padding
from cryptography.hazmat.backends import default_backend
import os
import subprocess
private_key = ec.generate_private_key(ec.SECP256R1(), default_backend())
public_key = private_key.public_key()
public_key_bytes = public_key.public_bytes(
encoding=serialization.Encoding.PEM,
format=serialization.PublicFormat.SubjectPublicKeyInfo
)
def encrypt_bitstream(bitstream, peer_public_key_bytes):
peer_public_key = serialization.load_pem_public_key(peer_public_key_bytes, backend=default_backend())
shared_key = private_key.exchange(ec.ECDH(), peer_public_key)
derived_key = HKDF(
algorithm=hashes.SHA256(),
length=32,
salt=None,
info=b'handshake data',
backend=default_backend()
).derive(shared_key)
iv = os.urandom(16)
cipher = Cipher(algorithms.AES(derived_key), modes.CBC(iv), backend=default_backend())
encryptor = cipher.encryptor()
padder = padding.PKCS7(algorithms.AES.block_size).padder()
padded_data = padder.update(bitstream) + padder.finalize()
ciphertext = encryptor.update(padded_data) + encryptor.finalize()
return iv + ciphertext
def decrypt_bitstream(ciphertext, peer_public_key_bytes):
peer_public_key = serialization.load_pem_public_key(peer_public_key_bytes, backend=default_backend())
shared_key = private_key.exchange(ec.ECDH(), peer_public_key)
derived_key = HKDF(
algorithm=hashes.SHA256(),
length=32,
salt=None,
info=b'handshake data',
backend=default_backend()
).derive(shared_key)
iv = ciphertext[:16]
actual_ciphertext = ciphertext[16:]
cipher = Cipher(algorithms.AES(derived_key), modes.CBC(iv), backend=default_backend())
decryptor = cipher.decryptor()
padded_data = decryptor.update(actual_ciphertext) + decryptor.finalize()
unpadder = padding.PKCS7(algorithms.AES.block_size).unpadder()
data = unpadder.update(padded_data) + unpadder.finalize()
return data
def process_audio(input_wav):
process = subprocess.Popen(
['ffmpeg', '-i', input_wav, '-ar', '8000', '-b:a', '128k', '-f', 'mp3', 'pipe:1'],
stdout=subprocess.PIPE,
stderr=subprocess.PIPE
)
return process.stdout.read()
def main():
input_wav = 'CantinaBand60.wav'
with open(input_wav, 'rb') as f:
original_bitstream = f.read()
processed_bitstream = process_audio(input_wav)
print("Original WAV bitstream length:", len(original_bitstream))
print("Processed MP3 bitstream length:", len(processed_bitstream))
chunk_size = 1024
for i in range(0, len(processed_bitstream), chunk_size):
chunk = processed_bitstream[i:i + chunk_size]
ciphertext = encrypt_bitstream(chunk, public_key_bytes)
decrypted_chunk = decrypt_bitstream(ciphertext, public_key_bytes)
with open('output.mp3', 'ab') as f:
f.write(decrypted_chunk)
if __name__ == "__main__":
main()

View File

@ -0,0 +1 @@
cryptography