第九部分 安全性设计

《编写高质量C#的建议》学习笔记 第九部分 安全性设计

声明变量前考虑最大值。

例如:

    ushort salary = 65534;
    (ushort)(salary + 1); // 65535
    (ushort)(salary + 2); // 0

如果要避免类似错误,有一个补救措施:为运算加上checked关键字。在运算溢出的时候会抛出异常,而不是让程序继续下去。

    ushort salary = 65534;
    checked
    {
        salary = (ushort)(salary + 1); // 65535
        salary = (ushort)(salary + 1); // 算数运算导致溢出
    }

MD5不再安全,MD5算法本身不可逆,但可以通过穷举法,对一些简单常用的密码进行穷举破解。可以先设计一个足够复杂的密码hashKey,然后将它的MD5值和用户输入密码的MD5值相加,再求一次MD5值作为返回值。改进后的方法,密码长度够了,复杂的也够了,想要通过穷举法来得到真正的密码值其成本也就大大增加了。

许文忠 wechat
欢迎您扫一扫上面的微信公众号,订阅我的博客!