繁体   English   中英

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

[英]Encrypting sensitive application data in Java

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

谢谢您的帮助

问候,

安德烈亚斯

以下方法对给定的字节数组进行加密,其中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字节的块后,您需要增加初始向量,也就是说,如果加密以计数器模式运行:)

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM