如何在UNIX系统中生成AES秘钥并将其写入文件

6

我需要生成一个用于AES加密/解密的随机密钥,并将该密钥写入UNIX文件中。有人能帮助我学习如何做到这一点吗?


只是好奇...你需要这个做什么?如果你想加密通信,我建议使用已经实现SSL的标准库,而不是自己编写。 - Michael Aaron Safyan
@MichaelAaronSafyan:我需要通过Java类进行一些加密/解密操作。我希望密钥生成仅发生一次,并且应该使用UNIX命令手动完成。我将从Java类中的文件中读取此秘密密钥并执行加密/解密操作。 - user3244519
4
将命令dd bs=1 if=/dev/random of=/home/users/cryptonoob/aes_key count=32翻译为中文:从/dev/random读取32个字节的随机数据并写入到/home/users/cryptonoob/aes_key文件中。 - President James K. Polk
1个回答

5

AES密钥只是一些随机字节,长度为16、24或32个字节-取决于密钥大小,并且原则上可以存储在文件系统中作为二进制文件。然而,我建议您将其放入Java密钥库中并通过密码进行保护。您可以使用java keytool来完成所有这些操作,例如:

keytool -genseckey -alias myKey -keyalg AES -keysize 128 -storepass passw0rd -keypass passw0rd -storetype JCEKS -keystore keystore.jks

您可以使用Java读取它,例如:
KeyStore keyStore = KeyStore.getInstance("JCEKS");
keyStore.load(new FileInputStream("keystore.jks"), "passw0rd".toCharArray());
Key key = keyStore.getKey("myKey", "passw0rd".toCharArray());
byte[] raw = key.getEncoded();
SecretKeySpec skeySpec = new SecretKeySpec(raw, "AES");
etc...

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接