【发布时间】:2014-07-30 05:14:32
【问题描述】:
我需要将加密数据从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);
由于算法使用SecureRandom 使用keyStart,我不确定这是否可以在C# 甚至另一个Java 程序中解码,而无需SecureRandom。
这种加密/解密是否只知道keyStart 的值,或者因为我使用SecureRandom 我仍然需要传递其他东西才能解密?
另外,有没有更好的方法,或者这个就可以了?
【问题讨论】:
标签: java c# encryption cryptography