Can you give a specific example of it not working, or if the above
example doesn't work, exactly what you expect? When I run the above
commands in 3.2.3, I get the following. Note that there was a bug in
the Jordan Form code a few versions back, so you might be running into
problems if you are running an old version of Sage.
sage: M=MatrixSpace(GF(2),7)
sage: A=M.random_element()
sage: f=A.charpoly()
sage: d = lcm([p.degree() for p,e in f.factor()])
sage: J,P=A.jordan_form(GF(2^d,'b'),transformation=True)
sage: J
[ 1| 0| 0| 0 0| 0 0]
[-----+-----+-----+-----------+-----------]
[ 0| b| 0| 0 0| 0 0]
[-----+-----+-----+-----------+-----------]
[ 0| 0|b + 1| 0 0| 0 0]
[-----+-----+-----+-----------+-----------]
[ 0| 0| 0| 0 1| 0 0]
[ 0| 0| 0| 0 0| 0 0]
[-----+-----+-----+-----------+-----------]
[ 0| 0| 0| 0 0| 0 1]
[ 0| 0| 0| 0 0| 0 0]
sage: P
[ 0 1 1 1 0 1 1]
[ 1 1 1 0 0 1 0]
[ 0 b + 1 b 1 1 1 0]
[ 0 0 0 1 0 1 0]
[ 1 1 1 0 1 0 1]
[ 0 1 1 1 1 0 1]
[ 0 1 1 1 0 0 1]
Jason