Loading [MathJax]/jax/input/TeX/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >简析Jenkins专有用户数据库加密算法 顶

简析Jenkins专有用户数据库加密算法 顶

作者头像
donghui
发布于 2019-04-19 07:24:01
发布于 2019-04-19 07:24:01
7740
举报
文章被收录于专栏:donghui的博客donghui的博客

Jenkins访问控制分为:安全域(即认证)与授权策略。

其中,安全域可以采用三种形式,分别为:Jenkins专有用户数据库、LDAP、Servlet容器代理。

Jenkins专有用户的数据信息存放位置: <JENKINS_HOME> /users/

每个用户的相关信息存放在config.xml文件中: <JENKINS_HOME>/users/ <user>/config.xml

在config.xml文件中 passwordHash节点可以看到用户名加密后的密文哈希值

那么,它是用何种加密方式加密的呢?可否解密密文得到明文呢?

github上查看其源码,通过关键字 #jbcrypt搜索定位到 HudsonPrivateSecurityRealm.java这个文件

HudsonPrivateSecurityRealm.java详细路径是:jenkins/core/src/main/java/hudson/security/HudsonPrivateSecurityRealm.java

通过分析该源码得知:

1、密文的格式为:salt: encPass,其中以#jbcrypt表示salt作为数据头

2、明文通过jbcrypt算法得到密文 encPass

关于jbcrypt:

jbcrypt是bcrypt加密工具的java实现。

它的API非常简单,DEMO如下,在HudsonPrivateSecurityRealm.java中可以看到加密和校验时使用了如下API:

// Hash a password for the first time String hashed = BCrypt.hashpw(password, BCrypt.gensalt()); // gensalt's log_rounds parameter determines the complexity the work factor is 2**log_rounds, and the default is 10 String hashed = BCrypt.hashpw(password, BCrypt.gensalt(12)); // Check that an unencrypted password matches one that has previously been hashed if (BCrypt.checkpw(candidate, hashed))   System.out.println("It matches"); else   System.out.println("It does not match");

经验证,用jbcrypt对同一个明文加密后因为salt一般不同,加密后的密文一般不同

关于bcrypt:

1、bcrypt是不可逆的加密算法,无法通过解密密文得到明文。

2、bcrypt和其他对称或非对称加密方式不同的是,不是直接解密得到明文,也不是二次加密比较密文,而是把明文和存储的密文一块运算得到另一个密文,如果这两个密文相同则验证成功。

综上,Jenkins专有用户数据库使用了jbcrypt加密,jbcrypt加密是不可逆的,而且对于同一个明文的加密结果一般不同。

(adsbygoogle = window.adsbygoogle || []).push({});

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2015/02/25 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
简析 Jenkins 专有用户数据库加密算法
其中,安全域可以采用三种形式,分别为:Jenkins 专有用户数据库、LDAP、Servlet 容器代理。
LinuxSuRen
2019/04/19
1.6K0
简析 Jenkins 专有用户数据库加密算法
加密算法-----BCrypt
用户11288958
2025/08/11
850
加密算法-----BCrypt
Jenkins修改管理员密码.
前言:Jenkins修改管理员密码,我看了网上所有的教程,竟然全都是拿着一串已经加密好的111111的密文去替代config.xml文件里面的密码,然后大家的密码都是111111!我觉得这种做法实在太敷衍了!于是我就研究了下,包括Jenkins密码的加密方式,以及如何修改管理员的密码,当然,通过配置Jenkins允许注册用户,去注册一个用户,也不失为一个好选择。 1、Jenkies的加密方式 Jenkins的密码采用的是Java加解密工具 jBCrypt,我也是第一次接触到这种加密方式,实在被他惊叹到
JMCui
2018/03/15
2.2K0
Jenkins修改管理员密码.
BCrypt加密算法
注意:有些人可能会将每个用户都不同的字段(uid、手机号之类的)来作为盐。很明显这是不规范的,几乎违背了上面三条盐的生成规则。 在实际项目中,盐不一定要加在最前面或最后面,也可以插在中间,或者分开插入,还可以使用倒序,等等,进行灵活调整 ​
十玖八柒
2022/08/01
2.3K0
BCrypt加密算法
Spring security中的BCryptPasswordEncoder方法对密码进行加密与密码匹配
浅谈使用springsecurity中的BCryptPasswordEncoder方法对密码进行加密(encode)与密码匹配(matches)
用户1212940
2022/04/13
4.1K0
Bcrypt
Bcrypt 是一种用于安全存储密码的哈希算法。它使用了盐(salt)和多轮处理来增加破解的难度。下面是关于 Bcrypt 加密算法的介绍以及 Java 实现的示例代码。
收心
2024/10/30
3650
面试官:你们是如何在数据库中存储密码?
张总:“你好,小王。我看到你在简历中提到对密码安全有一些了解。你能简单说说,当我们要存储用户密码时,应该采取哪些措施吗?”
不惑
2024/09/12
8970
面试官:你们是如何在数据库中存储密码?
BCryptPasswordEncoder的使用及原理
在 Spring Security 中有一个加密的类 BCryptPasswordEncoder ,它的使用非常的简单而且也比较有趣。让我们来看看它的使用。
码农UP2U
2021/01/25
11.5K0
BCryptPasswordEncoder的使用及原理
最安全的加密算法 Bcrypt,再也不用担心数据泄密了~
哈希(Hash)是将目标文本转换成具有相同长度的、不可逆的杂凑字符串(或叫做消息摘要),而加密(Encrypt)是将目标文本转换成具有不同长度的、可逆的密文。
码猿技术专栏
2023/05/01
5K0
最安全的加密算法 Bcrypt,再也不用担心数据泄密了~
微服务网关鉴权:gateway使用、网关限流使用、用户密码加密、JWT鉴权
不同的微服务一般会有不同的网络地址,而外部客户端可能需要调用多个服务的接口才能完成一个业务需求,如果让客户端直接与各个微服务通信,会有以下的问题:
botkenni
2022/09/07
2.3K0
微服务网关鉴权:gateway使用、网关限流使用、用户密码加密、JWT鉴权
漫话:将密码明文保存在数据库是真的low!
挂断电话后,我赶紧登录12306改掉了我的密码,还好我各个网站的密码不一样,这样就能很好的避免被撞库了。
Java3y
2019/08/27
1.7K0
漫话:将密码明文保存在数据库是真的low!
Linux系统:第十四章:安装Docker,安装配置gitlab私有仓库以及jenkins自动化部署(图文)
#出现[Errno -1] 软件包与预期下载的不符。 建议:运行 yum --enablerepo=updates clean metadata正在尝试其它镜像。使用以下命令
Java廖志伟
2022/03/07
1.5K0
Linux系统:第十四章:安装Docker,安装配置gitlab私有仓库以及jenkins自动化部署(图文)
PHP的几种加密算法
前言 PHP加密方式分为单项散列加密,对称加密,非对称加密这几类。像常用的MD5、hash、crypt、sha1这种就是单项散列加密,单项散列加密是不可逆的。像URL编码、base64编码这种就是对称加密,是可逆的,就是说加密解密都是用的同一秘钥。除此外就是非对称加密,加密和解密的秘钥不是同一个,如果从安全性而言,加密的信息如果还想着再解密回来,非对称加密无疑是最为安全的方式。
九霄道长
2021/03/02
2.8K0
微服务网关限流&鉴权
​ 不同的微服务一般会有不同的网络地址,而外部客户端可能需要调用多个服务的接口才能完成一个业务需求,如果让客户端直接与各个微服务通信,会有以下的问题:
杨不易呀
2022/01/19
2.1K0
来玩Play框架06 用户验证
用户验证(User Authentification)复合的使用Play框架的数个功能,包括前面已经了解的表单和数据库,以及这篇文章里要提到的加密和会话。根据应用或站点的复杂程度,用户验证也可以随之变化。这里将介绍用户验证的一个基本实现方式。 加密 为了信息安全,用户密码需要加密,而不是保存为明文。Bcrypt算法可以对明文密码进行哈希(Hash)转换。我保存在数据库中的密码,是经过转换后的文本。 JBcrypt是一个外部的包,提供了Bcrypt功能。要在build.sbt中说明这个包的来源和版本: nam
Vamei
2018/01/18
1.3K0
来玩Play框架06 用户验证
【从0做项目】Java音缘心动(3)———加密算法 & MD5 & BCrypt
这个网页主要的功能包括:用户登录,上传音乐,播放音乐,收藏音乐到喜欢列表,从喜欢列表中移除音乐,删除指定音乐,批量删除音乐,
三三是该溜子
2025/02/22
1230
【从0做项目】Java音缘心动(3)———加密算法 & MD5 & BCrypt
tornado 用户密码 bcrypt加密
该项目的github地址: tornado_learning.git (opens new window)
编程黑洞
2023/03/06
1.2K0
java语言后台管理ruoyi后台管理框架-登录提示“无效的会话,或者会话已过期,请重新登录。”-扩展知识数据库中密码加密的方法-问题如何解决-以及如何重置若依
若依框架中出现“无效的会话,或者会话已过期,请重新登录”的提示,通常是由于会话管理或验证机制的问题。以下是一些可能的解决方法:
卓伊凡
2025/02/11
1.1K0
PHP 加密与解密
在现代 Web 应用中,数据安全是至关重要的,尤其是处理用户的敏感信息时,如密码、个人身份信息、信用卡号等。为了保护这些敏感数据不被黑客窃取或篡改,我们常常需要使用加密技术对数据进行保护。PHP 作为一种广泛使用的服务器端脚本语言,也提供了多种加密和解密的方法,帮助开发者实现数据的安全保护。
繁依Fanyi
2025/02/06
7690
如何安全传输与存储用户密码?
我们开发网站或者APP的时候,首先要解决的问题,就是「如何安全传输和存储用户的密码」。一些大公司的用户数据库泄露事件也时有发生,带来非常大的负面影响。因此,如何安全传输存储用户密码,是每位程序员必备的基础。本文将跟大家一起学习,如何安全传输存储用户的密码。
macrozheng
2021/01/08
1.4K0
如何安全传输与存储用户密码?
相关推荐
简析 Jenkins 专有用户数据库加密算法
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档