Преобразование кода шифрования C# в java
Я пытался сделать расшифровку на java для точно такой же расшифровки, описанной в Библиотека шифрования C# AES 256 бит с солью[^] который является C# . Но я не могу получить тот же результат , может ли кто-нибудь помочь.
Что я уже пробовал:
byte[] salt = new byte[] { 1, 2, 3, 4, 5, 6, 7, 8 }; SecretKeyFactory factory = SecretKeyFactory.getInstance("PBKDF2WithHmacSHA1"); MessageDigest md = MessageDigest.getInstance("SHA-256" ); md.update(KEY_IV.getBytes( StandardCharsets.UTF_8 ) ); byte[] hashDigest = md.digest(); String encryptedHashDigest = Base64.encodeBase64String(hashDigest); PBEKeySpec pbeKeySpec = new PBEKeySpec(encryptedHashDigest.toCharArray(), salt, 1000, 384); Key generatedKey = factory.generateSecret(pbeKeySpec); byte[] extractedKey = new byte[32]; byte[] iv = new byte[16]; System.arraycopy(generatedKey.getEncoded(), 0, extractedKey, 0, 32); System.arraycopy(generatedKey.getEncoded(), 32, iv, 0, 16); byte[] base64Decoded = Base64.decodeBase64(toBeDecrypted); Cipher c = Cipher.getInstance("AES/CBC/PKCS5Padding"); c.init(2, new SecretKeySpec(extractedKey, "AES"), new IvParameterSpec(iv)); byte[] decryptedBytes = c.doFinal(base64Decoded); System.out.println("Decrypted " + new String(Base64.encodeBase64(decryptedBytes), StandardCharsets.UTF_8));
Richard MacCutchan
Как помочь?
David_Wimbley
Вместо того чтобы пытаться портировать что-то, что, я уверен, было сделано много раз в java, почему бы просто не использовать библиотеку java или не выполнить поиск в google для шифрования java aes256? Мне это кажется бессмысленным
AES256 шифрования в Java
Множество ссылок на первой странице результата google даст вам тот же результат и, вероятно, гораздо быстрее.
Shameer.Abdul
Привет Дэвид,
Техника шифрования для расшифровки текста такая же, как и выше. При расшифровке нам нужен IV и ключ для расшифровки AES/CBC, но предоставляется только один ключ длиной 48, который имеет как ключ, так и iv, и нас просят извлечь его из предоставленного ключа. поэтому приведенный выше способ расшифровки является обязательным. В любом случае спасибо за ваше предложение