尝试理解问题时,我遇到了一个有趣的问题。 <Link />
无法固定IV。每个IvParameterSpec class
都会改变。
我正在Ubuntu Linux上使用javac 10.0.2版本
println
每个import javax.crypto.spec.IvParameterSpec;
import java.util.Base64;
public class Encryptor {
public static void main(String[] args) {
IvParameterSpec ctr_iv;
String IV = "0102030405060708";
byte [] counter = IV.getBytes();
ctr_iv = new IvParameterSpec(counter);
System.out.println("ctr_iv = "+ ctr_iv.getIV());
System.out.println("ctr_iv = "+ ctr_iv.getIV());
System.out.println("ctr_iv = "+ ctr_iv.getIV());
System.out.println("ctr_iv = "+ ctr_iv.getIV());
System.out.println("ctr_iv = "+ ctr_iv.getIV());
System.out.println("ctr_iv = "+ ctr_iv.getIV());
}
}
都会打印不同的值。
println
这是什么问题?值应该不一样吗?
答案 0 :(得分:1)
根据方法IvParameterSpec.getIV()
的{{3}}:
每次调用此方法时都会返回一个新数组。
因此,您认为值应该相同的假设可能是正确的,但这始终是一个 new 数组。