我注意到的主要缺陷是:你
必须
验证解密时填充是否仍然存在。
(如果您提前知道消息长度,那么您可能可以使用自己的填充方案,但如您所提到的,使用现有填充方案仍然是一个好主意)。
我不知道您为什么要对消息本身进行加密——正如您所指出的,任何拥有公钥的人都可以对它进行解密,因此它不会添加除混淆之外的任何内容。您也可以发送消息和加密的填充哈希。
我建议使用提供“签名消息”功能的高级库,例如
cryptlib
或
KeyCzar
(如果可以的话)。这些好处来自于比您的代码可能看到的更多的眼球,并且要注意所有的填充问题和类似的问题。