Главный недостаток, который я заметил: вы должны проверить, что отступ еще существует, когда вы расшифровываете.
(Если вы заранее знаете длину сообщения, вам, возможно, удастся обойтись без использования собственной схемы заполнения, но, вероятно, было бы неплохо использовать уже существующую схему, как вы упомянули).
Я не уверен, почему вы пытаетесь зашифровать само сообщение - как вы заметили, оно может быть дешифровано любым лицом с открытым ключом, так что оно не добавляет ничего, кроме запутывания. С тем же успехом вы можете просто отправить сообщение и зашифрованный заполненный хеш.
Я бы порекомендовал использовать высокоуровневую библиотеку, которая предоставляет функцию "подписать сообщение", например cryptlib или KeyCzar (если вы можете). Они выигрывают от гораздо большего количества глаз, чем ваш код, и могут позаботиться обо всех проблемах с заполнением и т. П.