Значение IvParameterSpec разное для каждого отпечатка - PullRequest
0 голосов
/ 24 ноября 2018

При попытке понять проблему я столкнулся с интересной проблемой.IvParameterSpec class не может удерживать IV неподвижным.Он меняется для каждого println.

Я использую версию javac 10.0.2 в Ubuntu Linux

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 печатает разные значения.

ctr_iv       = [B@42f30e0a
ctr_iv       = [B@24273305
ctr_iv       = [B@5b1d2887
ctr_iv       = [B@46f5f779
ctr_iv       = [B@1c2c22f3
ctr_iv       = [B@18e8568

В чем проблемаВот?Разве значения не должны быть одинаковыми?

1 Ответ

0 голосов
/ 24 ноября 2018

Согласно документации метода IvParameterSpec.getIV():

Возвращает новый массив каждый раз, когда вызывается этот метод.

ТакВаше предположение, что значения должны быть одинаковыми, может быть верным, но это всегда новый массив.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...