McCullum, the leading scorer in the shortest format of the game, pummelled 123 off 58 balls and hammered 11 fours and seven sixes against a much hyped spin-dominated Bangladesh attack.
Bangladesh bowlers had no answer to McCullum's brilliance as he ruthlessly hammered both seamers and spinners after New Zealand was asked to bat.
He raised his century with two successive boundaries off left-arm spinner Elias Sunny in 51 balls a delivery after he was dropped by Mashrafe bin Mortaza at extra cover.
McCullum became the first man to score two T20 centuries - and the highest ever - before he holed out in the deep off the last ball of the innings.
His previous best T20 knock came against Australia at Christchurch in 2010 when he remained unbeaten on 116.
After Martin Guptill (11) went early in left arm spinner Abdur Razzak's first over, McCullum dominated the 94-run stand with James Franklin (35) off 65 balls. Franklin departed in the 15th over when he gave a skier to Sunny and Bangladesh looked to be in the game at 113-2.
However, McCullum tormented the attack in the last four overs as he cut loose and gathered 63 runs with his captain Ross Taylor (14 not out).
Razzak was the most successful bowler with 2-28, but even he conceded 16 runs in the last over of the innings before getting McCullum's wicket.