This is not a simple question. Both Tom and Huck employ deception in the novel, lying, acting, and maintaining stragetic and deceptive silence at times. How are we to decide who is more honest and who is more dishonest? Is it a matter of who lies/deceives more often or is it a matter of integrity and motivation?
If the question is one of simple quantification, then Huck is the more dishonest because he lies more in the novel. However, this is the case as the basic result of Huck's presence on nearly every page of the novel. Tom Sawyer appears as an active character only in the final section of the book.
If the question is one of integrity and motivation, we can argue that Huck shows more integrity than Tom and so can be considered more honest. Huck lies and deceives in order to protect himself and Jim from capture and from harm. He has qualms about stealing even when it is necessary for survival, as we see when he is forced to take the boat from the thieves on the sinking steamship.
If honesty is defined by a person's adherence to a set of values (and not by acts of deception or truth-telling) Huck is clearly the more "honest" character. He often reflects on the notions of right and wrong and articulates a quite specific code of moral conduct. Even as he condemns himself ("All right, then, I'll go to hell."), Huck is acting on his sense of honor and morality, choosing friendship over selfishness and over society's arbitrary rules.
Tom, on the other hand, seems to feel no compunction about lying for fun. He does not consider the welfare of others (a trait that is essential for moral behavior).
Many critics have noted the thoughtless, even cruel nature of Tom's games, as they make Jim's life miserable and terrorize Aunt Sally. (eNotes)
The torture he inflicts on Jim in the last section of the novel is not driven by need but by a desire to play; to enjoy an imaginary adventure. Tom is not beholden to any specific codes of behavior.