Jenkins 使用的密码加密是什么?

2022-09-01 13:39:32

我正在修改 Jenkins 作业的 xml。有一个字段是密码。当我得到xml时,它是原始密码,现在有一个哈希值。

我需要的是知道如何从原始密码值创建此哈希。

  <scm class="com.deluan.jenkins.plugins.rtc.JazzSCM">
    <username>user</username>
    <password>zlvnUMF1/hXwe3PLoitMpQ6BuQHBJ1FnpH7vmMmQ2qk=</password>
  </scm>

我一直在阅读Jenkins的源代码,我认为HudsonPrivateSecurityRealm.java类参与其中,但我不确定盐参数。

PS:这不是针对Jenkins密码,而是针对在作业配置中具有密码字段的插件。


答案 1

实际上,它不是哈希,而是加密的密码。我猜加密密钥存储在主节点中。实际上,您可以通过在master的脚本控制台上执行以下时髦的脚本来解密密码

import hudson.util.Secret

def secret = Secret.fromString("zlvnUMF1/hXwe3PLoitMpQ6BuQHBJ1FnpH7vmMmQ2qk=")
println(secret.getPlainText())

如果要加密密码,则

import hudson.util.Secret

def secret = Secret.fromString("your password")
println(secret.getEncryptedValue())

在计算机上加密的密码只能在该特定计算机上解密,因为密钥是随机生成的,显然在不同的计算机上,密钥是不同的。

查看 core/src/main/java/hudson/util/Secret.java 了解更多详情


答案 2

另一种可能性是通过Jenkins Groovy控制台执行Groovy脚本(您可以通过JENKINS_URL/script访问它):

println(hudson.util.Secret.decrypt("zlvnUMF1/hXwe3PLoitMpQ6BuQHBJ1FnpH7vmMmQ2qk=")) 

Python还可以通过其他一些方法实现:


https://github.com/tweksteen/jenkins-decrypt https://gist.github.com/menski/8f9980999ed43246b9b2


推荐