首页 文章 精选 留言 我的

精选列表

搜索[对称加密],共10000篇文章
优秀的个人博客,低调大师

harbor的加密机制与后台修改登录密码

参考:https://github.com/mitsuhiko/python-pbkdf2/blob/master/pbkdf2.py 很久没写博客,也是没时间写,因为平时工作忙,也没什么时间写博客,今天刚好抽点空,哈哈。 我们公司由于要做应用docker化,所以免不了要用harbor来存储docker镜像,比较方便。然而我们设想一下,如果哪天你的web登录密码忘了,而管理员的web登录密码也忘了,那该如何修改密码呢? 毫无疑问我们只能进harbor的后台mysql进行修改,但是查资料发现,这个harbor中的mysql的密码是采用pbkdf2算法,调用的Hash函数为Sha1,迭代4096次,密钥长度为int型16位得出的,所以你常规的用明文密码去update是不行的,必须要通过算法将密钥算出来,然后update可以成功。 下面是密钥计算算法,计算明文为123QWEqwe, 盐值为gktqer4zml32472wmht9xeuixvg5pvjd, 迭代次数为4096, 密钥长度int型16位 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 import hmac import hashlib from struct import Struct from operator import xor from itertools import izip,starmap _pack_int = Struct( '>I' ).pack def pbkdf2_hex(data,salt,iterations = 4096 ,keylen = 16 ,hashfunc = None ): return pbkdf2_bin(data,salt,iterations,keylen,hashfunc).encode( 'hex' ) def pbkdf2_bin(data,salt,iterations = 4096 ,keylen = 16 ,hashfunc = None ): hashfunc = hashfunc or hashlib.sha1 mac = hmac.new(data, None ,hashfunc) def _pseudorandom(x,mac = mac): h = mac.copy() h.update(x) return map ( ord ,h.digest()) buf = [] for block in xrange ( 1 , - ( - keylen / / mac.digest_size) + 1 ): rv = u = _pseudorandom(salt + _pack_int(block)) for i in xrange (iterations - 1 ): u = _pseudorandom(''.join( map ( chr ,u))) rv = starmap(xor,izip(rv,u)) buf.extend(rv) return ''.join( map ( chr ,buf))[:keylen] rv = pbkdf2_hex( '123QWEqwe' , 'gktqer4zml32472wmht9xeuixvg5pvjd' , 4096 , 16 ) print (rv) 计算出密钥值为65e900b5a2bdff474e29d0d2b21f4945 下面更新下数据库,修改用户名为testc的密码:update user set password='65e900b5a2bdff474e29d0d2b21f4945' where name='testc'; 前台web登录账号:testc 前台web登录密码:123QWEqwe 再带上一个随机出salt值的代码: #32位随机密码 from random import choice import string def Makepass(length=32, chars=string.letters+string.digits): return ''.join([choice(chars) for i in range(length)]) if __name__ == '__main__': for i in range(10): print Makepass() 本文转自飞奔的小GUI博客51CTO博客,原文链接http://blog.51cto.com/9237101/2057032如需转载请自行联系原作者 ziwenzhou

资源下载

更多资源
Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

WebStorm

WebStorm

WebStorm 是jetbrains公司旗下一款JavaScript 开发工具。目前已经被广大中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaScript IDE”等。与IntelliJ IDEA同源,继承了IntelliJ IDEA强大的JS部分的功能。

用户登录
用户注册