我需要將加密數據從Java
客戶端發送到C#
服務器。現在我正在學習如何使用AES
(需求)來加密數據。在此之後接受的答案android encryption/decryption with AES我做了以下內容:創建AES密鑰比種子更好的方法SecureRandom
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);
由於該算法採用了SecureRandom
使用keyStart
我不知道這是否可以在C#
,甚至在其他Java
程序進行解碼,而SecureRandom
。
只要知道keyStart
的值或者我使用SecureRandom
這個加密/解密工作,我仍然需要傳遞別的東西來解密嗎?
此外,有沒有更好的方法來做到這一點,或者這是一個很好?