在写签名/签名验证功能模块时,出现一种情况。在这个项目中,签名验证测试是正常的,但是在消费者处理的时候有时成功有时错误。.消费端也使用了通用的密码库,所以排除了底层库出错的可能。测试多个实例并打印出详细参数。发现规律了,只要一个参数为0就成功,为1就失败。增加consumer端的参数log,调试处理流程,查看consumer端的代码,发现可疑的类型转换,从byte到byte32,再从byte32到uint8。专门测试了这部分代码,发现byte转为byte32时,0x01变成0x0100...,转为uint8时,变成0,即自动取后8位。
