0
我有一個Java庫來讀取和解密密碼。我遵循它如何讀取密碼來生成密碼文件,它工作正常。現在我想弄清楚如何使用openssl命令來生成密碼文件,因爲這是我們的支持標準。我無法弄清楚使用openssl來完成這項工作的正確命令。相當於openssl命令來加密密碼
這是我的測試代碼來生成密碼文件。它工作正常。
import org.apache.commons.io.IOUtils;
public class CryptoTest extends TestCase {
public void testEncryption() throws Exception {
String DEFAULT_ALG = "AES/ECB/PKCS5Padding";
String DEFAULT_SALT = "SALT";
int DEFAULT_ITERATIONS = 10000;
int DEFAULT_KEY_LEN = 128;
String alg = DEFAULT_ALG;
String salt = DEFAULT_SALT;
int iterations = DEFAULT_ITERATIONS;
int keyLen = DEFAULT_KEY_LEN;
SecretKeyFactory factory = null;
String passPhrase = "password";
String algOnly = alg.split("/")[0];
String password = "CDE#VFR$";
try {
factory = SecretKeyFactory.getInstance("PBKDF2WithHmacSHA1");
} catch (NoSuchAlgorithmException e) {
throw new IOException("Can't load SecretKeyFactory", e);
}
SecretKeySpec key = null;
try {
key = new SecretKeySpec(
factory.generateSecret(
new PBEKeySpec(passPhrase.toCharArray(), salt.getBytes(), iterations, keyLen)).getEncoded(),
algOnly);
} catch (Exception e) {
throw new IOException("Can't generate secret key", e);
}
Cipher crypto = null;
try {
crypto = Cipher.getInstance(alg);
} catch (Exception e) {
throw new IOException("Can't initialize the decryptor", e);
}
byte[] encryptedBytes;
try {
crypto.init(Cipher.ENCRYPT_MODE, key);
encryptedBytes = crypto.doFinal(password.getBytes());
OutputStream os = new FileOutputStream("encrypted.txt");
IOUtils.write(encryptedBytes, os);
} catch (Exception e) {
throw new IOException("Can't decrypt the password", e);
}
}
}
我想使用openssl生成encrypted.txt文件來實現相同的結果。
這並不能解決我的問題。我需要使用指定的密碼和鹽生成一個文件,其中包含原始純文本「password」的加密結果。 – codingguy
你的意思是說你不知道如何將命令的結果保存在文件中? –