From 6fcefc04535357776124806f0fac40c005b35d1a Mon Sep 17 00:00:00 2001 From: Rohan R Bharadwaj Date: Tue, 26 Oct 2021 18:53:38 +0530 Subject: [PATCH] Add decode function to base16.py (#5575) * Add decode function * Update base16.py * Update base16.py * Update base16.py * Made the line shorter * Made another line shorter --- ciphers/base16.py | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/ciphers/base16.py b/ciphers/base16.py index f27ea4628..1ef60868d 100644 --- a/ciphers/base16.py +++ b/ciphers/base16.py @@ -4,6 +4,7 @@ import base64 def encode_to_b16(inp: str) -> bytes: """ Encodes a given utf-8 string into base-16. + >>> encode_to_b16('Hello World!') b'48656C6C6F20576F726C6421' >>> encode_to_b16('HELLO WORLD!') @@ -11,9 +12,23 @@ def encode_to_b16(inp: str) -> bytes: >>> encode_to_b16('') b'' """ - encoded = inp.encode("utf-8") # encoded the input (we need a bytes like object) - b16encoded = base64.b16encode(encoded) # b16encoded the encoded string - return b16encoded + # encode the input into a bytes-like object and then encode b16encode that + return base64.b16encode(inp.encode("utf-8")) + + +def decode_from_b16(b16encoded: bytes) -> str: + """ + Decodes from base-16 to a utf-8 string. + + >>> decode_from_b16(b'48656C6C6F20576F726C6421') + 'Hello World!' + >>> decode_from_b16(b'48454C4C4F20574F524C4421') + 'HELLO WORLD!' + >>> decode_from_b16(b'') + '' + """ + # b16decode the input into bytes and decode that into a human readable string + return base64.b16decode(b16encoded).decode("utf-8") if __name__ == "__main__":