Token以及签名signature的设计与实现肖冬

LZ第一次给app写开放接口,把自己处理Token的实现记录下来,目的是如果以后遇到好的实现,能在此基础上改进。这一版写法非常粗糙,写出来就是让大家批评的,多多指教,感谢大家。

当初设计这块想达到的效果或者说考虑到的问题有这么几点:

首先是token的模型:

再来就是TokenModel的管理类:

/***对Token进行操作的接口*@authorxiaodong*/publicinterfaceTokenManager{/***创建一个token关联上指定用户*@paramuserId指定用户的id*@return生成的token*/TokenModelcreateToken(StringuserId);/***检查token是否有效*@parammodeltoken*@return是否有效*/booleancheckToken(TokenModelmodel);/***清除token*/voiddeleteToken(StringaccessToken);}该接口实现:

这样做好处是:

缺点:

我把剩余的ResultModel类补上。

=================2019.04.17追加=================

重新审视这个问题。

第一种是传统的办法,使用自签名证书,借用jdk和web容器的ssl层实现,这种方法比较常用,也比较省事。

第二种是手动编程的方法,类似于自己写了一层ssl的实现。原理也很简单,对方把数据加密后传给LZ的服务端,LZ这边解密后该怎么处理就怎么处理,完事以后把响应的数据加密传给客户端,客户端解密之后该怎么处理就怎么处理。

经过一番实验和思考,LZ还是决定采用第二种方法。主要原因是,这种方式更加灵活,加密方案是LZ可以随意更改的(比如把其中的某个算法用别的算法替换)。还有一点原因是,自己写的东西更加容易掌控,如果加密层出现问题,LZ作为PM可以更快的定位问题。最后一点原因是,基于算法而不是基于Java类库,更容易制作各种语言的客户端。

方案基本确定,接下来就是代码设计。代码设计分为客户端和服务端,作为客户端,LZ可以提供公用的加密解密组件给合作伙伴调用(比如java客户端,php客户端,.NET客户端等等)。作为服务端,LZ只需要过滤器和定制视图就可以轻易完成加密和解密的工作。

最终写出来的客户端API如下:

HttpsHelper.sendJsonAndGetJson(JSONObjectjson);

HttpsHelper.sendJsonAndGetJson(JSONObjectjson,inttimeout);

服务端需要一个过滤器和一个定制的json视图。

SecurityFilter

JsonView

由于LZ发布的是restful风格的服务,因此使用的mvc框架是springmvc。这两个类的具体代码这里就不贴了,总之过滤器完成请求参数的解密,视图完成响应结果的加密。

以上基本上已经完成了整个加密解密功能的设计,接下来的工作就是将工作落实到实处,到底加密算法如何选择?

之前LZ对加密解密算法可谓是大大的小白,就知道一个md5算法,一般是用于密码加密的。这下可难倒LZ了,不过没关系,有百度和google,还有什么不能在几天之内学到的东西吗。

经过一番百度和google,LZ发现算法主要分为以下三种:

1,不可逆加密算法,比如md5就是这样一种,这种算法一般用于校验,比如校验用户的密码对不对。

2,对称加密算法,这种算法是可逆的,两边拥有同一个密钥,使用这个密钥可以对数据加密和解密,一般用于数据加密传输。特点是速度快,但安全性相对于非对称加密较低。

3,非对称加密算法,这种算法依然是可逆的,两边拥有不同的密钥,一个叫公钥,一个叫私钥,两边也都可以对数据加密和解密,一般用于数字签名。特点是速度较慢,但安全性相对于对称加密更高。

之前LZ听说过ssl的实现是几种算法混合使用的,这给了LZ很大的启示。既然每种算法都有它的优势,我们为何不混合使用呢。

于是,LZ想来想去(主要是在公车上以及厕所思考),决定使用md5(不可逆加密)+des(对称加密)+rsa(非对称加密)的加密方式,编码格式可以使用Base64。来看看LZ的需求,主要有两点。

2,数据在传输过程中是加密的,并且安全性要等同于非对称加密算法的安全性,但性能要等同于对称加密的速度。

我们来看看以上的算法实现能否满足需要,过程是这样的。

2,客户端需要先对123456进行md5加密,然后放入到传输数据中。也就是传输的数据会变成{"name":"xiaolongzuo","verifyCode":"md5(123456)"}

3,客户端生成des的随机密钥(注意,对称密钥每次都是随机生成的),假设是abcdef,客户端使用该密钥对传输数据进行des加密,并且对随机密钥进行rsa加密,最终拼成一个json。也就是最终传输的数据会变成{"privateKey":"rsa(abcdef)","data":"des({"name":"xiaolongzuo","verifyCode":"md5(123456)"})"}

安全性分析:假设以上的数据被黑客拦截,那么黑客最主要做的就是破解rsa算法的私钥(私钥只有LZ有,客户端组件中会附带公钥),这个问题听说是比较难的,具体为什么,这就不是LZ需要考虑的了,LZ还没这个能力。基于这个前提,LZ可以认为传输的数据还是比较安全的。

性能分析:由于我们的rsa只对长度比较短的des私钥进行加密,因此非对称加密速度慢的特点并不会影响我们太多。几乎上所有的传输数据,我们都是使用的des进行加密,因此在速度上,几乎等同于对称加密的速度。

THE END
1.在线艺术字设计在线艺术签名设计器艺术字体在线生成器艺术字01、一笔签名设计免费版在线 TRUE LOVE签名图 教程链接:http://www.yishuzi.com/b/m24.htm 02、一笔签名设计免费版在线生成-顶尖手写艺术签名设计图 教程链接:http://www.yishuzi.com/b/m25.htm 03、连笔签名设计免费版在线生成-顶尖手写艺术签名设计网 http://www.yishuzi.com/b/index.html
2.在线签名设计免费版在线艺术签名设计这款在线艺术签名设计软件融入了多种字体风格,通过我们对字体的重新优化设计与组合,让它达到对签名设计需求的更高要求,比如笔画连接更自然,笔锋更精细,字体文件大小优化让生成更快,用户体验更好等,如果你觉得设计出来的签名效果很满意就赶紧收藏哦。 更多款式:签名设计http://www.uustv.com/
3.艺术签名设计免费版艺术签名在线生成艺术签名设计免费版提供整整四十五款的艺术签名风格供您在线生成,每一款都是精品,让您可以随心所欲的进行在线签名设计。适合签名使用的各种场合,适合每一个年龄层次,从大人到小孩子,从商务合同上的签字需求到校园作业本上的名字写作都能完全满足您的设计要求,楷书、行书等非常适合正式签字场合以及小朋友们的签名需求,它http://www.akuziti.com/cs/lbqm.php
4.设计师签名免费签名设计生成器在线签名生成转换设计师签名网是中国领先的艺术签名制作平台,免费签名生成转换器支持硬笔签、时尚签、立体签、行楷签等效果,集成草体签、瘦金签、板书签、童体签等功能智能实现在线签名设计,可生成png,svg,pdf格式,请牢记设计师签名 www.ssjjss.comhttp://www.ssjjss.com/
5.手写签名我们来看看这个手写签名,基本上是用潇洒简笔的手写去下,比较适合商务合同类别,签名设计也是很不错的选择。 如果大家希望写出好看的手写签名,需要教程学习的话,可以去小编介绍的-曦之签名网-看看,都是专业的艺术个性签名。签名没有二话,曦之签都是品牌书法家定制出来的。学习签名还可以关注抖音,在网站左上角,点击https://www.xizhiqm.cn/article/Py1n1iMEZ6QUowEjHEFZ
6.在线签名生成器免费,rpa,机器人,自动化艺术字网一笔签名设计免费版在线 艺术字2024年5月18日?·?一笔签名设计免费版在线,艺术字网出品,极品连笔艺术字签名转换器。 一笔签名设计转换器:一笔签,即签署姓名时飘逸潇洒,一气呵成,给人以酣畅淋漓的视觉冲击。更多内容请查看http://www.yishuzi.com/b/13.htm https://www.wdlinux.cn/html/email/20241211/23845.html
7.签名设计,个性艺术签名!其中这件短袖的设计也是非常经典了,配上文字,有那feel了~ 睡醒了8 今天有点?上衣:m5is 黑色人像印花短袖T恤?裤子:guuka 撞色拼接抽绳束脚休闲裤?球鞋:椰子350黑天使 keshiw 得物er-U8P9H9L2 放学别走c 关注 签名设计,个性艺术签名! 让你名字呈现出不一样的美是我们的https://m.dewu.com/note/trend/details?id=254005218
8.有趣的签名最新,新鲜有趣签名盘点透视盘点随着社交媒体的普及,个性签名已经成为人们展示自我、表达个性的一种方式。2024年,签名界的潮流又有哪些新变化呢?让我们一起来看看吧! 二、趣味签名大盘点,笑点十足 “我的梦想是成为一名作家,可惜我现在连自己的名字都写不好。”这句签名幽默地揭示了很多人心中的痛点,同时也表达了对于梦想的追求。 https://blog.dreamassets.cn/post/12551.html
9.免费设计签名免费个性艺术签名免费设计名字在线设计个性您可以将此代码发给您的亲朋好友,或者发到贴吧、论坛、博客、主页、邮箱等地方,每访问一次这个网址,系统自动将为您加一分(必须是不同ip地址访问)。您的积分累计达到300分,我们将免费为您设计个性手机签名。 活动说明: 1、积分达到300分,我们免费为您设计2款个性手机签名。查看手机签名>>>http://www.yzqm.com/tg/help.html
10.网上免费设计艺术个性签名的网站急切网急切网列表[免费]在线艺术签名设计[非主流]爱情正在下载中推广内容网上免费设计艺术个性签名的网站 字体背景 颜色 选择急切字体,我们提供艺术、行草、连笔、公务4种签名方案。这是网上第一家免费设计艺术个性签名的网站,请大家帮忙宣传! 签名的魅力,在于方寸之间把个性大大的发挥,不仅营造风格迥异的中国文字艺术,http://www.t.zhenbi.com/e/5.htm
11.个性签名设计个人签名设计在线签名设计网上签名设计个性签名设计_个人签名设计_在线签名设计_网上签名设计成功案例欣赏 -分类浏览-K68威客网https://www.k68.cn/cate/%B8%F6%D0%D4%C7%A9%C3%FB%C9%E8%BC%C6.html
12.网上免费签名设计专题模板网上免费签名设计图片素材下载我图网网上免费签名设计专题为您整理了167个原创高质量网上免费签名设计图片素材供您在线下载,PSD/JPG/PNG格式网上免费签名设计模板下载、高清网上免费签名设计图片大全等,下载图片素材就上我图网。https://so.ooopic.com/sousuo/47738/
13.安卓签名工具网上签名设计免费版连笔签名设计免费版在线生成网上签名设计免费版-连笔签名设计免费版在线生成 地址:www.mgs2s.com(复制到浏览器打开)工具集成签名设计免费版下载,签名设计免费版在线立即生成,简单签名设计免费版。方便设计公文签名设计免费版。 1.公司有限技术企业推出一款提供拥有比较丰富明星款式的艺术签名在线生成器大全,电脑设计师可根据商家艺术签名设计品牌策划以https://blog.csdn.net/weixin_39576294/article/details/111133123
14.网上免费的艺术签名设计工具推荐软件技巧下面给大家推荐几款好用的免费的艺术签名设计软件,有需要的小伙伴们来了解一下。1. 龙飞签名设计软件 2.0签名设计软https://xiazai.zol.com.cn/jiqiao/58444.html
15.7款免费又好用的艺术签名设计软件推荐名字签名是我们在日常工作与生活中经常需要使用到的,因此很多网友都会通过下载一些艺术签名设计软件来练习自己的名字签名。不过,目前网上的一些艺术签名设计软件有的是收费的,有的又生成不了图片供我们进行练习。所以,今天小编就为大家推荐几款好用又免费的艺术签名设计软件,希望大家喜欢! https://tech.wmzhe.com/article/3031.html
16.艺术签名设计(艺术签名软件)V3.0绿色版下载艺术签名设计(艺术签名软件)绿色版是收费的签名设计软件,签名设计收费版,想要一手漂亮的签名么?想要你的签名和明星一样漂亮么?只要输入姓名,点一下鼠标,多描写几遍,就可以设计出和专业设计相媲美的签名了。本软件搜集了网上漂亮的签名字库,一定能给你一个惊喜。https://www.xiazaiba.com/html/27347.html
17.艺术签名设计,你来留名,我来写王璐婷 王璐婷 曹玉吟 叶耀棠 池朝辉 王管明 以上签名均为本人原创设计,一个名字可以有很多不同的设计,根据名字的自然结构可以设计成不同的款式,一般辨识度较高的也是较为实用的签名,整体结构比较收敛朴实,稍…https://zhuanlan.zhihu.com/p/237564780?utm_id=0
18.名字签名免费设计英文个性签名设计A smile, a beautiful memories下面是unjs整理的关于免费设计的英文个性签名,欢迎阅读!个微笑,一个最美的回忆No woman can "take" a man from you, unless he's willing to leave!没有人能带走你的 免费取名字大全男孩 根据男孩儿取名的习俗,将男孩儿取名的一般思路和起名方法概括如下,供https://www.unjs.com/h/b/180954.html
19.签名设计,一个暴利偏门项目,另辟蹊径,月入6万+!当我们通过引流,获取单子之后,就将客户的需求发送给上线商家,最后将签名交到客户手上,从中赚取差价,可以说是零成本,空手套白狼了。 3、网上有很多可以自动生成签名的软件以及网站,设计一个签名,贵一点的也就几块钱。 其次,我们来解决推广问题。 因为某宝已经被很多人占领了,所以就直接打消这个念头。 https://www.jianshu.com/p/36e5bac4ccbb
20.个性签名设计网上生成生成字体分类发现字体标签: 生成 最后更新: 2024-11-23 共 7个字体 简介: 个性签名设计网上生成 Fruge-Regular语言:英文 Anglez Script语言:英文 Default Lingo语言:英文 ProjectSans-Thin语言:英文 Chattsworth Regular语言:英文 Lemon Tree Regular语言:英文 SANZOMBIE语言:英文http://www.qiuziti.com/fontlist2?id=1043779
21.网上能否免费设计自己的艺术签名,谁帮我设计一下我来回答 最佳答案 本回答由达人推荐 焚尽指间的想 2009.08.04 回答 抢首赞 评论 其他回答(3)你想知道的这里都有 已解决问题:264,038,814 新手帮助 如何提问 如何回答 权威合作 企业合作 在线咨询 投诉建议 举报不良信息 未成年举报入口 搜狗问问小程序 企业推广 –输入法 –浏览器 –隐私政策 –免责声明 https://wenwen.soso.com/z/q147580709.htm