Пример #1
0
 def test_decode_encoded(self):
     random.seed(42)
     for i in range(142):
         binary = bytes([
             random.randint(0, 255) for _ in range(random.randint(0, 142))
         ])
         self.assertEqual(binary, b45decode(b45encode(binary)))
Пример #2
0
def generate_qr_svg(msg):
    ciphertext = cipher.encrypt(msg.encode())
    b45 = b45encode(ciphertext)
    qr = qrcode.QRCode(version=1,
                       error_correction=qrcode.constants.ERROR_CORRECT_Q,
                       box_size=10,
                       border=4,
                       image_factory=qrcode.image.svg.SvgPathFillImage)
    qr.add_data(b45)
    qr.make(fit=True)
    img = qr.make_image()
    # Do not print codes for empty / short input
    if len(msg) > 1:
        img._img.append(img.make_path())
    return etree.tostring(etree.ElementTree(img._img)).decode()
Пример #3
0
def compress_and_encode(data: bytes) -> bytes:
    compressed_data = zlib.compress(data, level=zlib.Z_BEST_COMPRESSION)
    encoded_compressed_data = base45.b45encode(compressed_data)
    logger.debug(
        "Uncompressed data: %d bytes, %s",
        len(data),
        binascii.hexlify(data).decode(),
    )
    logger.debug(
        "Compressed data: %d bytes, %s",
        len(compressed_data),
        binascii.hexlify(compressed_data).decode(),
    )
    logger.debug(
        "Encoded compressed data: %d bytes, %s",
        len(encoded_compressed_data),
        binascii.hexlify(encoded_compressed_data).decode(),
    )
    return encoded_compressed_data
Пример #4
0
from base45 import b45decode, b45encode
from Crypto.Cipher import PKCS1_OAEP
from Crypto.PublicKey import RSA
from Crypto import Hash

import sys

import qrcode

contact = sys.argv[1]

key = RSA.importKey(open('stuss2021_key.pub').read())
cipher = PKCS1_OAEP.new(key, hashAlgo=Hash.SHA256)

msg = b45encode(cipher.encrypt(bytes(contact.encode())))

print('Contact: {}\nBase45: {}'.format(contact, msg))

qr = qrcode.QRCode(
    version=1,
    error_correction=qrcode.constants.ERROR_CORRECT_Q,
    box_size=10,
    border=4,
)
qr.add_data(msg)
qr.make(fit=True)

img = qr.make_image(fill_color="black", back_color="white")
img.show()
Пример #5
0
 def test_encode_bad(self):
     with self.assertRaises(TypeError):
         b45encode(42)
Пример #6
0
 def test_encode_good(self):
     for binary_ref, encoded_ref in GOOD_DATA:
         encoded_res = b45encode(binary_ref)
         self.assertEqual(encoded_res, encoded_ref)
Пример #7
0
 def run(self, text):
     import base45
     return base45.b45encode(text.encode('utf-8',
                                         errors="surrogateescape")).decode(
                                             'utf-8',
                                             errors="surrogateescape")