JAVA APP——密码加密后端存储

该博客主要介绍了JAVA应用中密码加密的后端存储实现,包括加密解密模块的设计与实现,如JCE块加密、padding、加密模式与IV向量,以及bouncycastle和maven打包的问题。此外,还涉及后端存储模块的easymock单元测试、网络代理和百度云盘API,以及前端展示部分的命令行终端密码保护、maven打包、Linux下修改jar配置、编码和日志记录等问题。
摘要由CSDN通过智能技术生成

一个简单的应用,从python回到JAVA,重新熟悉下JAVA,另外方面前段时间看完设计模式不用上的感觉很快就忘记了,想从设计及开发上多应用下。

一、需求

 平常注册的网站多了,或者小号或者账号等多了,主要怕一些网站明文传输的,很多密码都是临时的那种,但是后面要用又想不起来,
故想做这么个简单应用本地将密码做RSA加密,然后根据网站域名和账号保存到远端存储上。
本来是考虑用有道云笔记的,后来申请权限花了很多时间,API也相对较复杂,就先采用File,FTP,百度云储存三种方式做后端存储。

二、设计

虽然这个需求非常简单,但是从最初考虑好需求,做了一些包括结构层次和类层次的设计,到最后实现,还是发现有很多问题考虑不到,
到后面又得回头修改设计。还有就是当遇到问题的时候没有第一时间记下来,导致现在有些可能都不太记得了,这个以后得注意了。

这个功能想起来会非常清晰,分成三个模块即可,一个是加密解密模块,一个是后端存储服务模块,一个是前端展现模块。
加密解密模块和存储服务互不相干,都由前端调用接口即可,那么考虑好接口将是很重要的一环。


这里考虑到加密解密模块今后变动性不大,基本固定的,风险最小,就先完成这部分的设计和实现。

1.加密解密模块

这里考虑到的问题主要是两个,一个是前端如果要用,可能会用到哪些功能,会需要什么样的方法,什么样的参数,
另外一个是底层实现如何做到可以很融洽地被spring所接收。

加密解密自然设计到密钥,如果用户希望采用对称加密,需要提供IV和Key的方法签名,而非对称则需要公私钥的签名,
最开始的类图如下所示,由于考虑丢了IV的因素,导致后面参数结构上做了一次调整。

a)密钥对

密钥对方面首先是提供给前端的接口,从当前应用来看,主要是会从外面导入一个某格式的公钥或者私钥,需要返回的
是一个密钥对象。密钥格式最好由前端提供,实在不行可采用责任链形式把所有后端实现串起来也可行,这个问题相对
不重要,不放在参数考虑。然后这个密钥从最后实现来看肯定需要一个字节数组的,所以首先考虑一个文件,其次文件
路径,然后如果是一个字节流或者字节数组会更方便。所以这里就提供三种不同的导入接口,通过适配的方式传递给后
端实现。

有个问题是后面才发现,就是取名问题,这也是一直困扰我的问题,因为英语不好?。。貌似是的。总之这里方法名取
的有些问题,后面发现时再去改会很蛋疼。

这里后端实现,最先考虑到的是抽象工厂,基本每一个导入密钥对都是生成同一系列的;第二点想到的是策略,多种实
现可相互替换,这里虽谈不上相互替换,需要指定特定格式才可以,但是后来发现桥接模式非常适用该场景,将复杂的
后端实现全部丢到一边,将接口提供给类适配,可以使得spring IOC的使用上
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值