В Java, как использовать AES шифрование так, чтобы статическая строка/текст приводит к аналогичному зашифрованному сообщJAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 В Java, как использовать AES шифрование так, чтобы статическая строка/текст приводит к аналогичному зашифрованному сообщ

Сообщение Anonymous »

У меня есть ситуация, когда я должен хранить зашифрованные из текста в листе Excel, и мой код Java должен прочитать этот зашифрованный текст с листа Excel и преобразовать его обратно в исходный текст и нажмите на сервер исходным простым текстом .
Я пытаюсь достичь этого с помощью логики шифрования /дешифрования AES, но я не могу достичь этого, так как каждый раз, когда я преобразую простой текст в зашифрованный формат, чтобы он был сохранен в листе Excel, он приводит к Каждый раз другая зашифрованная строка, так что я не могу расшифровать ее обратно к оригиналу, я хочу, чтобы та же статическая строка /текст мой зашифрованный текст AES также должен быть статичным.
Я знаю, даже если моя зашифрованная строка Является ли динамика, я могу преобразовать его обратно в расшифрованное формат, но для моего случая я хочу, чтобы мой зашифрованный текст также должен оставаться статичным.
Как я могу это достичь? < /p>
ex. Если мой простой текст: «Это вопрос». Моя зашифрованная строка отличается каждый раз, как ниже < /p>
enter
Это вопрос
зашифрованные данные: mfsue8jgwlcjqtibzm0hlvvddxpngsg /o7n60joh +Ozgg ==
Decrypted Data: Это вопрос < /p>
enter
Это вопрос
зашифрованные данные: fdbz3cgs4nphk14fw8me4dam4lvzdrk47wumsriuve+juq ==
Расшифрованные данные: это вопрос < /p>
См. Зашифрованные данные различаются каждый раз. Я хочу, чтобы это было статичным < /p>
Классы, которые я использую, как ниже (обратите внимание, это не мои точные классы, но они реализуют ту же логику, которую я использовал. Эти примеры классов Может иметь некоторые не используемые переменные и методы, я упоминал только для справки)

Код: Выделить всё

import java.security.NoSuchAlgorithmException;
import java.security.spec.InvalidKeySpecException;
import java.security.spec.KeySpec;
import java.util.Base64;

import javax.crypto.Cipher;
import javax.crypto.KeyGenerator;
import javax.crypto.SecretKey;
import javax.crypto.SecretKeyFactory;
import javax.crypto.spec.GCMParameterSpec;
import javax.crypto.spec.PBEKeySpec;
import javax.crypto.spec.SecretKeySpec;

public class Method {

private static SecretKey key;
private final int KEY_SIZE = 128;
private final int DATA_LENGTH = 128;
private Cipher encryptionCipher;

/*
* public void init() throws Exception { KeyGenerator keyGenerator =
* KeyGenerator.getInstance("AES"); keyGenerator.init(KEY_SIZE); key =
* keyGenerator.generateKey();
*
*
* }
*/

// String to Key

public static void getKeyFromPassword(String toEnc, String salt) throws
NoSuchAlgorithmException, InvalidKeySpecException { SecretKeyFactory factory
= SecretKeyFactory.getInstance("PBKDF2WithHmacSHA256"); KeySpec spec = new
PBEKeySpec(toEnc.toCharArray(), salt.getBytes(), 65536, 128); SecretKey
originalKey = new SecretKeySpec(factory.generateSecret(spec).getEncoded(),"AES");
key= originalKey; }

/*
* public static void convertStringToSecretKeyto(String string) {
*
*
* byte[] bytesEncoded = Base64.getEncoder().encode(string.getBytes()); byte[]
* decodedKey = Base64.getDecoder().decode(string); key = new
* SecretKeySpec(decodedKey, 0, decodedKey.length, "AES");
* System.out.println(bytesEncoded); System.out.println(decodedKey);
*
* }
*/

public String encrypt(String data) throws Exception {
byte[] dataInBytes = data.getBytes();
encryptionCipher = Cipher.getInstance("AES/GCM/NoPadding");

encryptionCipher.init(Cipher.ENCRYPT_MODE, key);
byte[] encryptedBytes = encryptionCipher.doFinal(dataInBytes);
return encode(encryptedBytes);
}

public String decrypt(String encryptedData) throws Exception {
byte[] dataInBytes = decode(encryptedData);
Cipher decryptionCipher = Cipher.getInstance("AES/GCM/NoPadding");

GCMParameterSpec spec = new GCMParameterSpec(DATA_LENGTH,
encryptionCipher.getIV());
decryptionCipher.init(Cipher.DECRYPT_MODE, key, spec);
byte[] decryptedBytes = decryptionCipher.doFinal(dataInBytes);
return new String(decryptedBytes);
}

private String encode(byte[] data) {
return Base64.getEncoder().encodeToString(data);
}

private byte[] decode(String data) {
return Base64.getDecoder().decode(data);
}
}
< /code>
main.class
import javax.crypto.Cipher;
import javax.crypto.KeyGenerator;
import javax.crypto.SecretKey;
import javax.crypto.spec.GCMParameterSpec;
import java.util.Base64;
import java.util.Scanner;
public class Cypher {

public static void main(String[] args) {
// TODO Auto-generated method stub

try {
Method aes_encryption = new Method();

//       aes_encryption.init();
Method.getKeyFromPassword("Texty text","Salty salt");

System.out.println("Enter");
Scanner sc= new Scanner(System.in);
String s= sc.nextLine();
String encryptedData = aes_encryption.encrypt(s);
String decryptedData = aes_encryption.decrypt(encryptedData);

System.out.println("Encrypted Data : " + encryptedData);
System.out.println("Decrypted Data : " + decryptedData);
} catch (Exception ignored) {
}
}

}

Подробнее здесь: https://stackoverflow.com/questions/735 ... sult-in-si
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Cryptojs.aes.encrypt () и Java AES шифрование, давая разные результаты
    Гость » » в форуме JAVA
    0 Ответы
    24 Просмотры
    Последнее сообщение Гость
  • Cryptojs.aes.encrypt () и Java AES шифрование, давая разные результаты
    Гость » » в форуме Javascript
    0 Ответы
    34 Просмотры
    Последнее сообщение Гость
  • Cryptojs.aes.encrypt () и Java AES шифрование, давая разные результаты
    Anonymous » » в форуме JAVA
    0 Ответы
    29 Просмотры
    Последнее сообщение Anonymous
  • Cryptojs.aes.encrypt () и Java AES шифрование, давая разные результаты
    Anonymous » » в форуме JAVA
    0 Ответы
    36 Просмотры
    Последнее сообщение Anonymous
  • Php openssl_encrypt (aes-256-cbc) к node.js cryptojs.aes.decrypt приводит к пустой строке
    Anonymous » » в форуме Php
    0 Ответы
    5 Просмотры
    Последнее сообщение Anonymous

Вернуться в «JAVA»