gpt4 book ai didi

java - 如何在 base64 解码后检索 IVParameterSpec?

转载 作者:行者123 更新时间:2023-11-29 04:14:04 26 4
gpt4 key购买 nike

编辑:对于那些要求查看整个方法/类的人

我有一个 Encrypter 类,它在构造函数中创建一个 IVParameterSpec,在 Encoder 方法中对 IVParameterSpec 进行编码,并在 GetIV 方法中返回 IVParameterSpec。

这是加密器类

public class Encrypter
{

public IVParameterSpec ctr_iv;

public Encrypter(int keylength)
{
//ctr_iv is created in this constructor
byte [] counter = new byte[16];
ctr_iv = new IvParameterSpec(counter);
System.out.println("The iv is " + ctr_iv);
}

public String Encoder()
{
String encoded_IV = Base64.getEncoder().encodeToString(ctr_iv.getIV());

return encoded_IV;
}

public IvParameterSpec getIV()
{
return ctr_iv;
}
}

我有一个 Decrypter 类,它在构造函数中解码 IVParameterSpec,并在 GetIV 方法中返回 IVParameterSpec。

public class Decrypter
{
IvParameterSpec retrieved_iv;

public Decrypter(String iv)
{
byte [] decodedIV = Base64.getDecoder().decode(iv);
retrieved_iv = new IvParameterSpec(decodedIV);
System.out.println("The iv in this class is " + retrieved_iv);
}

public IvParameterSpec getIV()
{
return retrieved_iv;
}
}

我的目标是确保 Decryptor 类中的 retrieved_iv 等于 Encrypter 类中的 ctr_iv。我最初认为上面的构造函数可以解决问题。但是当我测试他们的平等值(value)观时,我发现他们并不平等。这是我测试它们的方式:

public class Main
{
public static void main(String [] args)
{
Encrypter encrypter = new Encrypter(); //Initializes ctr_iv
Decrypter decrypter = new Decrypter(encrypter.Encoder()); //Encodes ctr_iv in first object and passes it as an argument to the constructor of the 2nd object

if(encrypter.GetIV().equals(decrypter.GetIV()))
{
System.out.println("IV's are equal");
}else{System.out.println("IV's are not equal");}
}
}

我觉得这与我在 Decrypter 构造函数中解码字符串的方式有关。

最佳答案

通过 Arrays.equals 进行比较。

if(Arrays.equals(ctr_iv.getIV(),retrieved_iv.getIV()))         {
System.out.println("IV's are equal");
} else {
System.out.println("IV's are not equal");
}

关于java - 如何在 base64 解码后检索 IVParameterSpec?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53448949/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com