Search code examples
python-3.xrsa

Generate an integer for encryption from a string and vice versa


I am trying to write an RSA code in python3. I need to turn user input strings (containing any characters, not only numbers) into integers to then encrypt them. What is the best way to turn a sting into an integer in Python 3.6 without 3-rd party modules?


Solution

  • how to encode a string to an integer is far from unique... there are many ways! this is one of them:

    strg = 'user input'
    i = int.from_bytes(strg.encode('utf-8'), byteorder='big')
    

    the conversion in the other direction then is:

    s = int.to_bytes(i, length=len(strg), byteorder='big').decode('utf-8')
    

    and yes, you need to know the length of the resulting string before converting back. if length is too large, the string will be padded with chr(0) from the left (with byteorder='big'); if length is too small, int.to_bytes will raise an OverflowError: int too big to convert.