所以我一直在编写这个加密文件然后解密的程序,我希望伪随机密钥生成器将用户输入作为种子,以便可以从中创建密钥。请注意,我希望密钥依赖于字符串(即:如果我多次输入种子“hello”,它将每次使用相同的密钥加密文件),因为最终我会将加密和解密函数拆分为两个文件。
这是我的第一次尝试,基于 SecureRandom。还有更多代码,但只有 main 相关:
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 中它是随机的。是否有另一种方法可以生成取决于用户输入的字符串的用户种子密钥?提前致谢!