0
我有一個存儲在字符串中的Xml。我需要使用會話密鑰(AES和256位)對其進行加密。使用會話密鑰加密Xml
我使用下面的代碼來生成密鑰:
public byte[] generateSessionKey() throws NoSuchAlgorithmException, NoSuchProviderException
{
KeyGenerator kgen = KeyGenerator.getInstance("AES","BC");
kgen.init(SYMMETRIC_KEY_SIZE);
SecretKey key = kgen.generateKey();
byte[] symmKey = key.getEncoded();
return symmKey;
}
使用下面的代碼與會話密鑰加密數據:
public byte[] encryptUsingSessionKey(byte[] skey, byte[] data) throws InvalidCipherTextException
{
PaddedBufferedBlockCipher cipher = new PaddedBufferedBlockCipher(new AESEngine(), new PKCS7Padding());
cipher.init(true, new KeyParameter(skey));
int outputSize = cipher.getOutputSize(data.length);
byte[] tempOP = new byte[outputSize];
int processLen = cipher.processBytes(data, 0, data.length, tempOP, 0);
int outputLen = cipher.doFinal(tempOP, processLen);
byte[] result = new byte[processLen + outputLen];
System.arraycopy(tempOP, 0, result, 0, result.length);
return result;
}
所以,我想知道,我在做正確或錯?
感謝您的所有建議,我會將它們應用。但我也想知道,通過上面的代碼完成的加密是正確的還是不正確? – Mudit
這取決於「正確與否」的含義?最佳實踐安全:No. – zaph
我想用AES和PKCS7Padding的會話密鑰來加密XML,所以我想知道上述代碼的加密結果是否可以解密?現在我不關心安全問題 – Mudit