Записать секретный ключ и спецификацию IV во внешний файл и прочитать их? - PullRequest
0 голосов
/ 22 октября 2018

У меня есть метод, который шифрует значения с использованием режима Cipher CBC перед вставкой их в мою таблицу MySQL следующим образом:

public void addFruit(String fruit, String color, int pos){
            CryptoHelperClass crypto = new CryptoHelperClass();

            //Crypto Cipher 
            SecretKeyIVGen sk = new SecretKeyIVGen();  
            List<KeyGenerator> kgList = sk.getKeyGenerator();
            List<SecretKey> skList = sk.getSecretKey(kgList);  //how do I save the skList value generated here and write it into an external (XML) file?
            List<IvParameterSpec> ivList = sk.getIvSpec(skList);  //how do I save the ivList value generated here and write it into an external (XML) file? 

            byte[] byteFruit = crypto.encrypt(fruit, skList, ivList);
            String bcryptColor = BCryptHelperClass.bCrypt(color);
            byte[] byteColor = crypto.encrypt(bcryptColor, skList, ivList);         

            fdao.insertFruit(byteFruit, byteColor, pos);
        }

В этом методе я хочу сохранить переменные skList и ivListи запишите их во внешний файл, такой как XML.Эти значения могут быть сгенерированы только в этом методе.

Моя идея состоит в том, что я буду читать из этого файла XML позже и использовать значения при расшифровке данных, хранящихся в моих таблицах.

Как мне записать их во внешний файл и затем иметь возможность читать и повторять этот файл позже?

Файл XML должен иметь такие элементы, как:

<entry 1>
     <secretkey> javax.crypto.spec.SecretKeySpec@fffe8ea9</secretkey>
     <ivspec>javax.crypto.spec.IvParameterSpec@ab4d9e2 </ivspec>
</entry 1>

<entry 2>
     <secretkey>javax.crypto.spec.SecretKeySpec@1794a</secretkey>
     <ivspec>javax.crypto.spec.IvParameterSpec@ab4d9e2 </ivspec>
</entry 2>
...