What cipher algorithm is this routine using? I transfered a code routine from Java to Python: 

import base64
import hashlib

class Cipher(object):

    def __init__(self, key):
        self.key = key

    def decrypt(self, message):
        message = base64.b64decode(message)
        message = bytearray(message)
        a1 = self.make_table()
        results = range(len(message))
        j = k = 0
        for i in range(len(message)):
            k = 0xFF &amp; k + 1
            j = 0xFF &amp; j + (0xFF &amp; a1[k])
            a1[j], a1[k] = a1[k], a1[j]
            n = 0xFF &amp; (0xFF &amp; a1[k]) + (0xFF &amp; a1[j])
            results[i] = message[i] ^ a1[n]
        return bytearray(results)

    def make_table(self):
        key = hashlib.md5(self.key).hexdigest()
        key = bytearray(key)
        results = range(256)
        m = 0
        k = 0
        for i in range(256):
            k = 0xFF &amp; k + ((0xFF &amp; key[m])) + (0xFF &amp; results[i])
            results[i], results[k] = results[k], results[i]
            m = (m + 1) % len(key)
        return results


I'd like to know what algorithm is this code using? so I can refactor it to better Python code. thanks!
Normally, questions like this are considered off-topic; however, in this case, I can give a quick answer -- it's RC4