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):
         =  mac.copy()
         h.update(x)
         return  map ( ord , h.digest())
     buf  =  []
     for  block  in  xrange ( 1 - ( - keylen  / /  mac.digest_size)  +  1 ):
         rv  =  =  _pseudorandom(salt  +  _pack_int(block))
         for  in  xrange (iterations  -  1 ):
             =  _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

相关文章
|
1月前
|
存储 NoSQL 数据库
认证服务---整合短信验证码,用户注册和登录 ,密码采用MD5加密存储 【二】
这篇文章讲述了在分布式微服务系统中添加用户注册和登录功能的过程,重点介绍了用户注册时通过远程服务调用第三方服务获取短信验证码、使用Redis进行验证码校验、对密码进行MD5加密后存储到数据库,以及用户登录时的远程服务调用和密码匹配校验的实现细节。
认证服务---整合短信验证码,用户注册和登录 ,密码采用MD5加密存储 【二】
|
10天前
|
存储 安全 算法
RSA在手,安全我有!Python加密解密技术,让你的数据密码坚不可摧
【9月更文挑战第11天】在数字化时代,信息安全至关重要。传统的加密方法已难以应对日益复杂的网络攻击。RSA加密算法凭借其强大的安全性和广泛的应用场景,成为保护敏感数据的首选。本文介绍RSA的基本原理及在Python中的实现方法,并探讨其优势与挑战。通过使用PyCryptodome库,我们展示了RSA加密解密的完整流程,帮助读者理解如何利用RSA为数据提供安全保障。
27 5
|
13天前
|
安全 数据安全/隐私保护 Python
情书也能加密?Python AES&RSA,让每一份数据都充满爱的密码
【9月更文挑战第8天】在这个数字化时代,情书不再局限于纸笔,也可能以电子形式在网络中传递。为了确保其安全,Python提供了AES和RSA等加密工具,为情书编织爱的密码。首先,通过安装pycryptodome库,我们可以利用AES对称加密算法高效保护数据;接着,使用RSA非对称加密算法加密AES密钥和IV,进一步增强安全性。即使情书被截获,没有正确密钥也无法解读内容。让我们用Python为爱情编织一张安全的网,守护每份珍贵情感。
27 2
|
1月前
|
数据采集 数据可视化 数据挖掘
基于python django的scrapy去哪儿网数据采集与分析,包括登录注册和可视化大屏,有md5加密
本文介绍了一个基于Python和Django框架,使用Scrapy进行去哪儿网数据采集与分析的项目,包括实现登录注册功能、MD5加密以及通过可视化大屏展示分析结果的综合系统。
基于python django的scrapy去哪儿网数据采集与分析,包括登录注册和可视化大屏,有md5加密
|
1月前
|
存储 算法 Java
在Java中使用MD5对用户输入密码进行加密存储、同时登录验证。
这篇文章详细介绍了在Java项目中如何使用MD5算法对用户密码进行加密存储和登录验证,包括加入依赖、编写MD5工具类、注册时的密码加密和登录时的密码验证等步骤,并通过示例代码和数据库存储信息展示了测试效果。
在Java中使用MD5对用户输入密码进行加密存储、同时登录验证。
|
1月前
|
安全 数据安全/隐私保护 Python
|
27天前
|
安全 网络安全 数据安全/隐私保护
|
1月前
|
安全 Nacos 数据安全/隐私保护
【技术干货】破解Nacos安全隐患:连接用户名与密码明文传输!掌握HTTPS、JWT与OAuth2.0加密秘籍,打造坚不可摧的微服务注册与配置中心!从原理到实践,全方位解析如何构建安全防护体系,让您从此告别数据泄露风险!
【8月更文挑战第15天】Nacos是一款广受好评的微服务注册与配置中心,但其连接用户名和密码的明文传输成为安全隐患。本文探讨加密策略提升安全性。首先介绍明文传输风险,随后对比三种加密方案:HTTPS简化数据保护;JWT令牌减少凭证传输,适配分布式环境;OAuth2.0增强安全,支持多授权模式。每种方案各有千秋,开发者需根据具体需求选择最佳实践,确保服务安全稳定运行。
79 0
|
3月前
|
算法 JavaScript 安全
一篇文章讲明白JavaScript_提交表单和MD5算法密码加密
一篇文章讲明白JavaScript_提交表单和MD5算法密码加密
28 0