【签名之坑】Decmail.GetBits()
decimal类型有GetBits()方法
可以获取到值的int[4]值,进而获取到byte[16]值
在c#里,0m和0.00m获取到的byte[]是不一样的(具体为何不一样,自己百度)
在sql里,EF生成的decimal的列,默认强制2位小数
c#里赋值0m,存到数据库变成0.00m
那么问题来了
如果有用到decimal.GetBits()的值作为要签名的内容
那么存到数据库后再取出来,验证签名就会失败
为了应对这种问题,需要在存进数据库前,强制把decimal转为2位小数
在赋值语句里连着“+0.01m-0.01m”,例如item.Credit = value + 0.01m - 0.01m;
这样就能解决这个问题了……