我正在做一個學校的作業,其中我從一臺主機發送文件到另一臺。作爲它的一部分,我需要使用對稱加密技術來加密正在發送的文件。Java對稱密鑰文件的生成和使用
所以,我猜應該有一個關鍵文件,我需要在兩端存儲。因此,服務器使用該密鑰進行加密,並且發件人使用相同的密鑰進行解密。主機位於不同的地方。
所以,我在這裏需要一個密鑰,我如何生成這個密鑰並從磁盤讀取它?或者,如果我在錯誤的軌道上,我會很感激,如果有人在這裏說一些光。謝謝。
我正在做一個學校的作業,其中我從一臺主機發送文件到另一臺。作爲它的一部分,我需要使用對稱加密技術來加密正在發送的文件。Java對稱密鑰文件的生成和使用
所以,我猜應該有一個關鍵文件,我需要在兩端存儲。因此,服務器使用該密鑰進行加密,並且發件人使用相同的密鑰進行解密。主機位於不同的地方。
所以,我在這裏需要一個密鑰,我如何生成這個密鑰並從磁盤讀取它?或者,如果我在錯誤的軌道上,我會很感激,如果有人在這裏說一些光。謝謝。
您可以使用已經存在的庫,或者您可以自己編寫一個簡單的庫。
例如,一鍵就可以使用:
String key = "kA}#rP~McSOF~";
您可以使用密鑰的方式是例如:加密從鍵從您的文件要解密的字符添加字符。除了關鍵字符是一個thilde(~
)之外,請用字符的補碼。
String txtToEncrypt = "StackOverflow";
bytes[] encrypted = txtToEncrypt.getBytes();
for (int i = 0; i < encrypted.length; i++)
{
int keyIndex = i % key.length();
int cK = key.charAt(keyIndex);
int cE = encrypted[i];
if (cK == '~')
{
cE = ~cE;
} else
{
cE = (cE + cK) % 255;
}
encrypted[i] = (byte) cE;
}
現在由您來找解密算法。 :D
這太弱了,我會稱之爲混淆而不是加密。 – CodesInChaos 2011-05-21 11:54:30
這不是任何加密,應該用於任何重要的事情,即使一點點。 – 2012-04-23 20:35:13
對於加密,我會使用AES。要生成密鑰,我只需使用提供加密PRNG的API並使用它來生成與密鑰大小一樣多的隨機數據。並將密鑰存儲爲十六進制編碼的字符串。 – CodesInChaos 2011-05-21 11:56:09