簡體   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