‘xxx‘ is not public in ‘xxx‘,Cannot be accessed from outside package

在测试或演示中,有时需要获取到`Argon2PasswordEncoder`中的盐值。由于盐是临时变量,无法直接通过反射获取。文章提到的解决方案是复制并重写该方法,但由于原始类的访问权限限制,这导致了包外调用异常。为解决此问题,可以将自定义的类放入与原工具类相同的包内,从而改变访问权限限制。
摘要由CSDN通过智能技术生成

有些時候我們想要做一些測試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)。
在这里插入图片描述
如何解决呢?直接把我这个类变成包内的类就行啦~
直接修改包路径,和那个工具类一样的路径即可:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值