class md5: def __init__(self, s=''): self.finished = False self.md5 = JS("new @{{!_md5}}()") self.md5.init() self.update(s) def update(self, s): for c in str(s): b = ord(c) self.md5.update(b) def hexdigest(self): if not self.finished: self.finished = True self.md5.finish() res = self.md5.getdigestBits() return hexstr(res) def digest(self): if not self.finished: self.finished = True self.md5.finish() return self.md5.getdigestBits()