问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

从零开始用C#做产品:私人日记(21)程序参数设计

发布网友 发布时间:2022-10-30 20:16

我来回答

1个回答

热心网友 时间:2023-10-12 14:37

到上一节为止,我们基本实现了内容的分类与管理,至此,我们可以用这个小软件来记录一些内容了。

就目前的内容管理功能来说,对我而言基本够用了,再往下无非就是Rtf编辑器、Tag标签、内容查询等细化的功能,这些都属于锦上添花的功能,可以在后续的开发中不断完善。

我更关心的还是安全性的问题,包括两方面:一是访问安全,二是存储安全。

访问安全有两点:

1进入程序需要口令,只有口令验证通过才能进入。这种方式可以阻挡小白用户误点程序而看到内容。

2数据库内容加密。比如任何人用SqliteStudio,就能够打开sqlite数据库,如果数据库文件被窃取,窃取者就可以通过查询数据库的方式获取文件内容。所以,在保存时需要对数据库进行编码,这样窃取者即便获得了数据库文件,也只能看到一堆的乱码,无法查阅到真实的数据。

存储安全则主要就是数据库文件的备份。最好的方式是可以将数据库文件自动同步到云盘,如百度云盘,异地备份,受众群也较广。不过考虑到这个系列是入门教程,对第三方接口这类的内容不打算过多深入了,以后有机会可以专门单独开一个系列讲。这里我们就选择相对简单的局域网网络备份的方式来实现。

当然天下没有绝对的安全。理论上,只要是软件,任何加密手段都有可能被破解。登录口令可以爆破撞库,数据库内容可以对程序进行反编译,得到解码算法,然后再来还原。但是无论什么事我们讲的都是一个概率,这种情况发生的概率是:你的电脑被黑+黑客在你的电脑中注意到了这个程序+黑客有兴趣研究这个程序+黑客懂得破解的方法,这4种情况的概率组合比起内容直接暴露给第三方,我宁愿相信自己。

好,那我们整理下接下来要实现的内容:

其中数据库内容其实我们已经在上一节实现了。教程中我用了最简单的Url编码形式,只是为了能够保存到数据库中。正常来说,比较常规的方式是用base64编码,有人说这破解起来太不是容易了,别人只要base64解码不就好了。其实这部分是可以自由发挥的,比如编码后对字符进行变换,a->b,b->c...z->a,解码时再做逆变换,或者你只针对特定字符做特定替换,然后再做一遍base64编码,当然你也可以使用RSA等等,只要你能想到的并且能够做逆向还原就好。对方想破解,只能反编译你的程序代码。一旦你的程序代码被反编译,任何算法也都是徒劳的,除非你不做内容还原。关于程序破解与反破解,这部分内容超出本系列教程的范围了,以后有机会单独开系列讲,这里就不详细展开了。

剩下两个功能,无论是口令验证功能,还是数据库文件备份功能,都涉及到一个程序参数保存的问题,我们需要把正确的口令值、数据库文件保存的路径保存到文件或数据库中,这些程序参数我们需要统一管理。

不仅是私人日记这个产品,基本上所有软件产品都需要提供类似的程序参数设定,这些都是为了用户的个性化设置,这也是软件产品和软件项目的核心差别所在:软件项目很多都是程序中指定的值,开发者一是为了开发便利,二是防止复制给其他用户使用,而软件产品则需要尽可能的提供程序参数给用户进行设置,以便可以满足更多的用户需求。

由于我们已经使用了sqlite数据库,那么我们就采用数据库保存的方案。

具体操作如下:

简单说下BAL.Setting,类中我们定义了一个静态变量htValues,这个哈希表保存了所有的程序参数。之所以增加了这个内存变量,就是为了提高效率,不需要每次使用都从数据库读取。更新时,会把新的值同时写入内存和数据库中。

经过以上的代码,我们就完成了程序参数的架构搭建,我们在MainForm中加入测试代码:

运行到断点出后,我们发现pwd值为刚刚写入的123,符合我们的预期。

下一节,我们将实现口令登录。

----------------------------------------------------

私人日记可以获取Gitee的链接;

sqlitestudio 可以获取sqlitestudio的链接;

菜鸟 可以获取菜鸟教程链接;

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
我看曹刿是一个什么样的人 作文 急急急 三赞曹刿300字作文 作文 我心中的英雄曹刿300 关于翻译机离线使用的效果怎么样? 古汉语中有“不可以”这一用法吗? 文言文中"可以"的古今异意 独特嗓音的特征,一般别人模仿起来比较难 我现在还有一个月机会到13岁,想改变一下声音,还有我是个男生 根据《建筑安装工程费用项目组成》(建标[-2013144号),应列入规费的是... 我女儿的电瓶车发票,用我的身份证好上牌照吗,因她本人在异地,请帮... 新公司法的利润怎么分配 公司法中利润分配有什么规定? 生活中的积极情绪和消极情绪 帮忙区分一下矛盾双方、主次矛盾、矛盾主次方面以及三者关系 问下,种植白蜡树挣钱吗。一年的树苗多久能卖。价格!! 请教一下这个绿化树叫什么名字? 为什么古代的皇上有那么多规矩 清朝妃子侍寝时,为什么制定那么多规矩? 酒桌上为什么有那么多的规矩? 男友总给我立很多的规矩,我很反感怎么办? 为什么给孩子立很多规矩,最终失败无数次呢? 为什么大户人家规矩多 为什么中国的家庭特别多规矩 白毛草的药用价值 白羊草的主要价值 白湎草的药用价值 买房砍价七大技巧 买房优惠自己做主 我的优点:勇于认错 我的缺点:坚决不改 我的优点勇于承认错误,缺点坚决不改。 我的优点:勇于认错;缺点:坚决不改。你们呢? 有什么软件可以识别字体!做的平面设计,有时候看到图片的字体却不知道是什么,求字体网站那个不好用! 怎么用混乱之治测试地图上的数据 B-BOX,R(机械音)是什么?怎么发? 菜鸟求TOTO LINK N150R 无线中继设置方法 喜欢踢毽子喜欢提前的原因是什么 股权转让后分配利润如何纳税 为什么女孩都喜欢踢毽子 为什么广东人喜欢踢毽子? 一年级喜欢踢毽子的原因 建湖有培训氩电联焊工的地方吗 我是做房地产的!问一下从哪找别人找不到的客源啊!我是在销售公司!置业顾问! 谁有一些好看的小说网址呢? 哪位前辈能告诉我像五菱长面包车汽车服务顾问有前景吗?做这行的职业规划是什么??急~! 汽车4S店里面,做服务顾问或者机修工,到了40岁后会被下岗吗?或者是会让你重新干什么吗??50岁后呢 汽车服务顾问做了几个月感觉不是很适应 眉山人事考试网 有没有公务员面试培训机构呢 2016年眉山市属医疗卫生事业单位招聘考试报名入口 2015年四川省眉山市公务员考试报名入口报名时间? 都说B550主板好用,品牌型号太多了,求推荐一款适合打游戏的。 魅族蓝牙POP怎么样,可以用单个吗?