[英]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_MODE
或Cipher.ENCRYPT_MODE
第二個是您使用Class SecretKey
生成的密鑰
第三次生成ivParameterSpec
最后一行是
outData = cipherInstance.doFinal(input);
如果mode為Decrypt ,則將返回解密的數據;如果mode為Encrypt ,則將返回加密的數據。
最后但重要的一點是正確捕獲所有異常 。
你完成了
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.