Jenkins修改管理員密碼,我看了網上所有的教程,竟然全都是拿着一串已經加密好的 111111 的密文去替代 config.xml 文件里面的密碼,然后大家的密碼都是 111111!我覺得這種做法實在太敷衍了!於是我就研究了下,包括 Jenkins 密碼的加密方式,以及如何修改管理員的密碼,當然,通過配置Jenkins允許注冊用戶,去注冊一個用戶,也不失為一個好選擇。
1、Jenkins的加密方式
Jenkins 的密碼采用的是Java 加解密工具 jbcrypt,這種加密方式每次加密同一個明文竟然都是得到不一樣的結果,那他又是通過怎樣的方式來解密的呢?原來,他拿着用戶的明文,和存儲的密文去重新生成一串密文去判斷。總結如下,它有以下特點:
關於 Bcrypt:
1、Bcrypt 是不可逆的加密算法,無法通過解密密文得到明文。
2、Bcrypt 和其他對稱或非對稱加密方式不同的是,不是直接解密得到明文,也不是二次加密比較密文,而是把明文和存儲的密文一塊運算得到另一個密文,如果這兩個密文相同則驗證成功。
3、對於同一個明文的加密結果一般不同。
pom 依賴:
<!-- https://mvnrepository.com/artifact/org.mindrot/jbcrypt --> <dependency> <groupId>org.mindrot</groupId> <artifactId>jbcrypt</artifactId> <version>0.4</version> </dependency>
Java源碼
import org.mindrot.jbcrypt.BCrypt; /** * Created by Administrator on 2017/6/2. * <p> * Description: */ public class Test { public static void main(String[] args) { //這是加密方式 String hashed = BCrypt.hashpw("nimda", BCrypt.gensalt()); System.out.println(hashed); //這是解密方式 if (BCrypt.checkpw("nimda", hashed)) System.out.println("It matches"); else System.out.println("It does not match"); } }