Python String/bytes as big number and back (last update: 2017-10-22, created: 2017-10-22) back to the list ↑
Example code I've written as part of an answer of a question about RSA on one of the Polish programming forums. Please note it was meant as a general example, and not as RSA OpenSSL compatible method that is safe/well written in any way.

The *_hack methods are actually what I use on CTFs/etc when I need to implement this fast (i.e. implementation time has to be short, runtime doesn't matter). The methods without this suffix are more what you would expect.

Please also note that I'm using Python's built-in bignum implementation. In (almost) any other language this would require either a library or a custom bignum implementation.

def str2num(s):
  s = bytearray(s)  # So I don't have to call ord() all the time.
  n = 0
  for v in s:
    n *= 0x100
    n += v
  return n

def num2str(n):
  o = []
  while n != 0:
    o.append(chr(n % 0x100))  # n & 0xff would work too
    n /= 0x100 # n >>= 8 would work too
  return ''.join(o)[::-1]

def str2num_hack(s):
  return int(s.encode("hex"), 16)

def num2str_hack(n):
  return hex(n).replace("L", "")[2:].decode("hex")

text = "Hello World"

enc_test1 = str2num(text)
dec_test1 = num2str(enc_test1)

enc_test2 = str2num_hack(text)
dec_test2 = num2str_hack(enc_test2)

print "Text:", text

print "Method 1 (encode):", enc_test1
print "Method 1 (decode):", dec_test1

print "Method 2 (encode):", enc_test2
print "Method 2 (decode):", dec_test2


Text: Hello World
Method 1 (encode): 87521618088882533792115812
Method 1 (decode): Hello World
Method 2 (encode): 87521618088882533792115812
Method 2 (decode): Hello World

【 design & art by Xa / Gynvael Coldwind 】 【 logo font (birdman regular) by utopiafonts / Dale Harris 】