在声明性管道中散列字符串

时间:2018-11-23 15:29:40

标签: jenkins-pipeline jenkins-groovy

在声明性管道(Groovy 2.4.11)中的脚本中,我想对字符串(最好是SHA-256)进行哈希处理。 没有人知道不需要签名批准的方法吗?

2 个答案:

答案 0 :(得分:1)

Pipeline Utility Steps插件附带一个sha1步骤。

不幸的是,社区插件似乎无法提供其他SHA变体。

答案 1 :(得分:0)

有同样的问题。 对我来说,使用 Java 方法是可行的(如果您不需要沙箱,或者愿意将使用的方法列入白名单):

import java.security.MessageDigest

@NonCPS
String getDigest(String input, String algorithm) {
    MessageDigest digest = MessageDigest.getInstance(algorithm)
    digest.update(input.bytes)
    digest.digest().encodeHex().toString()
}

echo getDigest('foo', 'SHA256')

我们将在 Jenkins 配置中全局定义的 Jenkins 共享库中使用此方法,因此它将能够在沙箱之外运行。实际上,我们使用 MD5 哈希 - 但也支持其他算法。

有关可能的摘要算法列表,您可以查看 MessageDigest 的官方文档,在撰写本文时可以在此处找到:

https://docs.oracle.com/javase/7/docs/api/java/security/MessageDigest.html