有些時候我們想要做一些測試Demo,比如在org.springframework.security.crypto.argon2.Argon2PasswordEncoder.encode()
方法中,有一个临时变量salt
,因为他是临时变量,所以没办法通过反射什么来获取。
@Override
public String encode(CharSequence rawPassword) {
byte[] salt = this.saltGenerator.generateKey();
byte[] hash = new byte[this.hashLength];
// @formatter:off
Argon2Parameters params = new Argon2Parameters
.Builder(Argon2Parameters.ARGON2_id)
.withSalt(salt)
.withParallelism(this.parallelism)
.withMemoryAsKB(this.memory)
.withIterations(this.iterations)
.build();
// @formatter:on
Argon2BytesGenerator generator = new Argon2BytesGenerator();
generator.init(params);
generator.generateBytes(rawPassword.toString().toCharArray(), hash);
return Argon2EncodingUtils.encode(hash, params);
}
如何能把这个变量打印出来呢?直接复刻这个方法是其中一种方案(也可以通过继承重写实现)
写一个类,复刻这个方法,这是就出现了异常,说这个类不允许包外调用(非publlic)。
如何解决呢?直接把我这个类变成包内的类就行啦~
直接修改包路径,和那个工具类一样的路径即可: