  We present a new algorithm that, given two matrices in $GL(n,Q)$, decides if
they are conjugate in $GL(n,Z)$ and, if so, determines a conjugating matrix. We
also give an algorithm to construct a generating set for the centraliser in
$GL(n,Z)$ of a matrix in $GL(n,Q)$. We do this by reducing these problems
respectively to the isomorphism and automorphism group problems for certain
modules over rings of the form $\mathcal O_K[y]/(y^l)$, where $\mathcal O_K$ is
the maximal order of an algebraic number field and $l \in N$, and then provide
algorithms to solve the latter. The algorithms are practical and our
implementations are publicly available in Magma.
