Я новичок в криптографии. Я хочу узнать, как шифровать и расшифровывать текст в файле... когда я ссылаюсь на связанные статьи в сети. У меня возникло сомнение в том, будет ли зашифрованный текст одинаковым для одного текста, если шифрование выполняется несколько раз в одном тексте? Кто-нибудь может очистить мои сомнения?
Шифровать и расшифровывать строку в java
Ответ 1
public String encrypt(String str) {
try {
// Encode the string into bytes using utf-8
byte[] utf8 = str.getBytes("UTF8");
// Encrypt
byte[] enc = ecipher.doFinal(utf8);
// Encode bytes to base64 to get a string
return new sun.misc.BASE64Encoder().encode(enc);
} catch (javax.crypto.BadPaddingException e) {
} catch (IllegalBlockSizeException e) {
} catch (UnsupportedEncodingException e) {
} catch (java.io.IOException e) {
}
return null;
}
public String decrypt(String str) {
try {
// Decode base64 to get bytes
byte[] dec = new sun.misc.BASE64Decoder().decodeBuffer(str);
// Decrypt
byte[] utf8 = dcipher.doFinal(dec);
// Decode using utf-8
return new String(utf8, "UTF8");
} catch (javax.crypto.BadPaddingException e) {
} catch (IllegalBlockSizeException e) {
} catch (UnsupportedEncodingException e) {
} catch (java.io.IOException e) {
}
return null;
}
}
Вот пример, который использует класс:
try {
// Generate a temporary key. In practice, you would save this key.
// See also Encrypting with DES Using a Pass Phrase.
SecretKey key = KeyGenerator.getInstance("DES").generateKey();
// Create encrypter/decrypter class
DesEncrypter encrypter = new DesEncrypter(key);
// Encrypt
String encrypted = encrypter.encrypt("Don't tell anybody!");
// Decrypt
String decrypted = encrypter.decrypt(encrypted);
} catch (Exception e) {
}
Ответ 2
У меня возникло сомнение в том, что зашифрованный текст будет одинаковым для одного текст, когда шифрование выполняется несколькими раз на один и тот же текст
Это сильно зависит от используемого алгоритма криптографии:
- Одна из целей некоторых/самых (зрелых) алгоритмов заключается в том, что зашифрованный текст отличается при двойном шифровании. Одной из причин этого является то, что злоумышленник, как известно, простой и зашифрованный текст не может вычислить ключ.
- Другой алгоритм (в основном, односторонние крипто хэши), такие как MD5 или SHA, основанный на факте, что хэшированный текст одинаков для каждого шифрования/хэша.
Ответ 3
Зашифровано ли одно и то же, если простой текст зашифрован одним и тем же ключом зависит от алгоритма и протокола. В криптографии есть вектор инициализации IV: http://en.wikipedia.org/wiki/Initialization_vector, который используется с различными шифрами, делает тот же простой текст, зашифрованный одним и тем же ключом, дает различные шифровальные тексты.
Я советую вам прочитать больше о криптографии в Википедии, Брюс Шнайер http://www.schneier.com/books.html и "Начало криптографии с Java" Дэвида Хука. Последняя книга полна примеров использования библиотеки http://www.bouncycastle.org.
Если вы интересуетесь криптографией, есть CrypTool: http://www.cryptool.org/ CrypTool - бесплатное приложение для электронного обучения с открытым исходным кодом, используемое во всем мире в реализации и анализе криптографических алгоритмов.
Ответ 4
DES Простое рабочее шифрование
Требуется рабочий класс DES. this Блог.