Isso é uma irregularidade sujeita a penalidades CRIMINAIS.
O DigestValue NUNCA pode ser diferente do digval do protocolo se for diferente algo MUITO errado está acontecendo na sua aplicação. E na verdade é uma impossibilidade caso esteja usando mesmo a API.
Veja que o DigestValue é calculado quando é feita a assinatura da NFe, essa NFe assinada é enviada a SEFAZ que é de onde a SEFAZ retira o digval do protocolo.
Uma vez que a NFe foi assinada não é possivel mudar nenhuma linha da mesma, nenhuma modificação DEVE ou PODE ser feita após a assinatura da mesma.
Alguma BOBAGEM muito grande está ocorrendo com você. É OBRIGATÓRIO que o DigestValue da NFe seja igual ao digval do protocolo se não for tem "GATO NA LINHA", e não você não pode mudar o DigestValue nem o DIGVAL !!!!
Acompanhe seu código tem algo muito ruim com ele.
Roberto