def METHOD_NAME(self, pk, ID, M): # M:GT
    v = waters_hash.hash(ID)
    t = group.random(ZR)
    c1 = (pk['eg1g2'] ** t) * M
    c2 = pk['g'] ** t
    c3 = pk['uPrime']
    for i in range(pk['n']):
        c3 *= pk['U'][i] ** v[i]
    c3 = c3 ** t
    if debug:
        print("Encrypting")
        print("C1    =>", c1)
        print("C2    =>", c2)
        print("C3    =>", c3)
    return {'c1':c1, 'c2': c2, 'c3':c3}