Я участвую в разработке двух системных коммуникационных проектов. С другой стороны, система на основе Java требует, чтобы передаваемый контент был зашифрован с использованием AES. Наша система в настоящее время основана на .NET Framework 7 (NET7). Я пытаюсь расшифровать содержимое другой стороны с помощью C#. Я попробовал реализовать алгоритм с помощью платформы BouncyCastle.Cryptography, пытаясь имитировать стиль кодирования Java, но, к сожалению, мне это не удалось. Я боролся с этой проблемой в течение нескольких дней и решил обратиться за помощью сюда.
Вот фрагмент реализации Java:
Я участвую в разработке двух системных коммуникационных проектов. С другой стороны, система на основе Java требует, чтобы передаваемый контент был зашифрован с использованием AES. Наша система в настоящее время основана на .NET Framework 7 (NET7). Я пытаюсь расшифровать содержимое другой стороны с помощью C#. Я попробовал реализовать алгоритм с помощью платформы BouncyCastle.Cryptography, пытаясь имитировать стиль кодирования Java, но, к сожалению, мне это не удалось. Я боролся с этой проблемой в течение нескольких дней и решил обратиться за помощью сюда. Вот фрагмент реализации Java: [code]import javax.crypto.Cipher; import javax.crypto.KeyGenerator; import javax.crypto.SecretKey; import javax.crypto.spec.GCMParameterSpec; import javax.crypto.spec.SecretKeySpec; import java.security.NoSuchAlgorithmException; import java.security.SecureRandom; import java.util.Base64; public class AESUtil { private static final String KEY_ALGORITHM_AES = "AES"; private static final String DEFAULT_CIPHER_ALGORITHM = "AES/GCM/NoPadding"; private static final String CHARSET = "UTF-8"; public static String aesEncrypt(String content, String encryptPass) { try { byte[] iv = new byte[12]; SecureRandom secureRandom = new SecureRandom(); secureRandom.nextBytes(iv); byte[] contentBytes = content.getBytes(CHARSET); Cipher cipher = Cipher.getInstance(DEFAULT_CIPHER_ALGORITHM); GCMParameterSpec params = new GCMParameterSpec(128, iv); cipher.init(Cipher.ENCRYPT_MODE, getSecretKey(encryptPass), params); byte[] encryptData = cipher.doFinal(contentBytes); assert encryptData.length == contentBytes.length + 16; byte[] message = new byte[12 + contentBytes.length + 16]; System.arraycopy(iv, 0, message, 0, 12); System.arraycopy(encryptData, 0, message, 12, encryptData.length); return Base64.getEncoder().encodeToString(message); } catch (Exception e) {
private static SecretKeySpec getSecretKey(String encryptPass) throws NoSuchAlgorithmException { KeyGenerator kg = KeyGenerator.getInstance(KEY_ALGORITHM_AES); SecureRandom secureRandom = SecureRandom.getInstance("SHA1PRNG"); secureRandom.setSeed(encryptPass.getBytes()); kg.init(128, secureRandom); SecretKey secretKey = kg.generateKey(); return new SecretKeySpec(secretKey.getEncoded(), KEY_ALGORITHM_AES); } } [/code] Мне бы хотелось, чтобы код C#, который я пишу, обеспечивал взаимное шифрование и дешифрование с помощью версии Java
Я участвую в разработке двух системных коммуникационных проектов. С другой стороны, система на основе Java требует, чтобы передаваемый контент был зашифрован с использованием AES. Наша система в настоящее время основана на .NET Framework 7 (NET7). Я...
Пожалуйста, помогите мне. Я хочу зашифровать с использованием алгоритма AES-GCM в коде c Sharp, ниже приведен мой код.
Однако он не может расшифровать. Я хочу сохранить код расшифровки.
Как решить эту проблему? Пожалуйста, помогите мне.
//...
Я пытался зашифровать данные с помощью SecretKey, как показано ниже:
KeyGenParameterSpec keyGenParameterSpec = new KeyGenParameterSpec.Builder(
alias , KeyProperties.PURPOSE_ENCRYPT | KeyProperties.PURPOSE_DECRYPT)
.setKeySize(256)...
Я реализую шифрование AES/GCM/NoPadding в Swift для iOS с минимальной целевой версией развертывания 12.1. Я пытаюсь добиться функциональности, аналогичной приведенному ниже коду Java:
Cipher cipherAes = initCipher(Cipher.ENCRYPT_MODE, key, iv);...
Я конвертирую существующий/рабочий код, который используется с AES/CTR/NoPadding, из SunJCE в AES/GCM/NoPadding — SunJCE.
Шифрование используется с используемым выходным потоком для создания ObjectOutputStream.
Для запуска ObjectOutputStreams...