簡體   English   中英

用Java創建8字節IV

[英]Creating 8 byte IV in Java

我是Java密碼學的新手,我正在嘗試編寫一種程序,以基於CBC的操作模式使用DES對稱密碼對短語進行加密和解密。

誰能告訴我如何創建一個8字節的初始化向量以及如何將新的IV轉換為AlgorithmParameterSpec類?

另外, 我應該導入哪些軟件包?

編輯:現在我有這些行:

SecureRandom sr = new SecureRandom(); //create new secure random
byte [] iv = new byte[8]; //create an array of 8 bytes 
sr.nextBytes(iv); //create random bytes to be used for the IV (?) Not too sure.
IvParameterSpec IV = new IvParameterSpec(iv); //creating the IV 

我的上述方法正確嗎?

謝謝。

是。 直到現在你是對的。
Class IvParameterSpec用於將初始向量傳遞給Class Cipher
之后,創建如下Cipher

Cipher cipherInstance = Cipher.getInstance("DES/CBC/NoPadding");

這里使用DES/CBC/NoPadding ,因為您在CBC模式下使用DES加密。

接下來是對其進行初始化。

cipherInstance.init(Cipher.DECRYPT_MODE, Key, ivParameterSpec);

參數為:
第一個是加密模式Cipher.DECRYPT_MODECipher.ENCRYPT_MODE
第二個是您使用Class SecretKey生成的密鑰
第三次生成ivParameterSpec

最后一行是

outData = cipherInstance.doFinal(input);

如果mode為Decrypt ,則將返回解密的數據;如果mode為Encrypt ,則將返回加密的數據。

最后但重要的一點是正確捕獲所有異常
你完成了

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM