1
所以我一直在編碼這個程序,它對文件進行加密然後對其進行解密,並且我希望僞隨機密鑰生成器將用戶輸入作爲種子,以便密鑰可以從中創建。請注意,我希望密鑰依賴於字符串(即:如果我多次輸入種子「hello」,則每次都會使用相同密鑰加密文件),因爲最終我會將加密解密函數分解爲兩個文件。Java中用於AES加密的用戶輸入種子
這是我第一次嘗試,基於SecureRandom。還有更多的代碼,但只有主要是相關的:
protected static final String ALGORITHM = "AES";
public static void main(String args[]) {
String stringKey = args[1];
byte[] seedArray = stringKey.getBytes();
SecureRandom sRandom = new SecureRandom(seedArray);
byte[] keyArray = new byte[16];
SecretKey sKey = new SecretKeySpec(keyArray, ALGORITHM);
try
{
Encrypter2 encrypter = new Encrypter2(sKey);
FileInputStream efis = new FileInputStream(args[0]);
FileOutputStream efos = new FileOutputStream("Encrypted");
encrypter.encrypt(efis, efos);
FileInputStream dfis = new FileInputStream("Encrypted");
FileOutputStream dfos = new FileOutputStream("Decrypted.txt");
encrypter.decrypt(dfis, dfos);
} catch (FileNotFoundException e1) {
System.out.println("File not found.");
e1.printStackTrace();
} catch (Exception e) {
System.out.println(e);
}
}
現在,這將創建在Java 1.7字符串輸入一個唯一的關鍵,但它在Java 1.6的隨機化。是否有另一種方法來生成依賴於用戶輸入的字符串的用戶種子密鑰?提前致謝!