用Java加密敏感的应用程序数据

时间:2010-12-09 22:29:33

标签: java encryption file

我目前正在评估一个处理高度敏感的个人信息的项目,因此需要对其进行加密。我们正在谈论几个100兆字节的多媒体文件,如MP3或其他东西。该应用程序肯定会用Java实现,而JavaFX则是GUI / Frontend。现在我正在寻找一种可行的解决方案来保护数据免受无意/故意滥用。数据需要以某种方式加密。用户需要在使用软件之前提供登录凭据,因此使用密码来解锁用于对称加密的密钥是可能的。该应用程序的用户将是非专业的,因此像TrueCrypt或类似解决方案的东西将无法做到这一点。虽然某种透明的解决方案是最好的。那么这个问题有没有(半)标准解决方案?

感谢您的帮助

问候,

安德烈亚斯

2 个答案:

答案 0 :(得分:2)

以下方法加密给定的字节数组,其中keyC是加密密钥。 initalVector是用于加密的初始向量。 此向量通常用于计数器(CTR)模式下的AES加密,但对于其他模式不是必需的。它是一个16字节的数组,用于加密和解密。

private byte[] encryptAES128(byte[] input, byte[] initialVector) {
    SecretKey aeskey = new SecretKeySpec(keyC, 0, 16, "AES");
    AlgorithmParameterSpec paramSpec = new IvParameterSpec(initialVector);
    cipher = Cipher.getInstance("AES/CTR/NOPADDING");
    getAesCTRCipher().init(Cipher.ENCRYPT_MODE, aeskey, paramSpec);
    return getAesCTRCipher().doFinal(input);
}

此方法返回一个新的字节数组,即加密的输入数组。 它始终以16字节为单位工作。 对于较大的文件,您需要在字节上运行for循环并连接结果:)

祝你好运!

编辑: 在加密16字节的块之后,您需要递增初始向量,即加密在计数器模式下运行:)

答案 1 :(得分:-3)

使用公钥加密算法,例如RSA。强大,几乎无法破解,易于使用和理解。在Java中甚至可能有RSA或类似加密的方法甚至是类。