我需要将加密数据从
Java客户端发送到C#服务器.现在我正在学习如何使用AES(要求)加密数据.按照这个接受的答案
android encryption/decryption with AES,我正在做以下事情:
byte[] keyStart = "qweroiwejrwoejlsifeoisrn".getBytes(); // Random character string
byte[] toEncrypt = myMessageString.getBytes();
keyGen = KeyGenerator.getInstance("AES");
sr = SecureRandom.getInstance("SHA1PRNG");
sr.setSeed(keyStart);
keyGen.init(128, sr);
SecretKey secretKey = keyGen.generateKey();
byte[] secretKeyByte = secretKey.getEncoded();
SecretKeySpec skeySpec = new SecretKeySpec(secretKeyByte, "AES");
Cipher cipher = Cipher.getInstance("AES");
cipher.init(Cipher.ENCRYPT_MODE, skeySpec);
cipher.doFinal(toEncrypt);
由于该算法使用keyStart使用SecureRandom,我不确定这是否可以在C#中解码,甚至在没有SecureRandom的情况下在其他Java程序中解码.
这个加密/解密是否只需要知道keyStart的值,或者因为我使用的是SecureRandom,我还需要传递其他内容才能解密?
还有,有更好的方法来做这个还是这个好吗?