В этой статье описывается анализ реализации Java Algorithm Ancryption и Decryption. Поделитесь этим для вашей ссылки, следующим образом:
Введение:
Алгоритм шифрования данных (DEA) представляет собой симметричный алгоритм шифрования, который, вероятно, будет наиболее широко используемой ключевой системой, особенно в защите безопасности финансовых данных. Первоначально разработанная DEA была встроена в аппаратное обеспечение. Обычно автоматические машины для кассира (банкоматы) используют DEA. Это происходит из -за исследовательской работы IBM, которая также имела патентные права в течение нескольких лет, но после истечения срока действия в 1983 году она находится в общественном объеме и позволяет использовать при определенных условиях без платы за использование патента. Он был официально принят правительством США в 1977 году.
Появление практических DESIFHERS после 1998 года полностью заявило, что алгоритм DES больше не безопасен. В 1999 году NIST выпустил новый стандарт, предусматривая, что алгоритм DES может использоваться только в системах устаревшего шифрования, но не ограничивает использование алгоритма DESEDE. Сегодняшний алгоритм DES запускает стадию истории, а алгоритм AES называется его заменой.
Принцип шифрования:
DES использует 56-битный ключ с дополнительным 8-битным битом паритета для получения максимального 64-битного размера пакета. Это итеративный пароль блока с использованием техники, называемой Feistel, где зашифрованные блоки текста разделены на два. Используйте подраздел, чтобы применить функцию цикла до половины, а затем выполните «эксклюзивную или» операцию с другой половиной; Затем поменяйте эти две половины, и процесс будет продолжаться, но последний цикл не будет заменен. DES использует 16 циклов, четыре основных операция: эксклюзивные операции или операции перестановки, замены и сдвига.
Поддержка JDK для алгоритма DES
Длина ключа: 56 битов
Рабочий режим: ECB/CBC/PCBC/CTR/CTS/CFB/CFB8 к CFB128/OFB/OBF8 TO OFB128
Метод заполнения: nopadding/pkcs5padding/iso10126padding/
Алгоритм симметричного шифрования шифрования и дешифрования
Deseede - это тройной алгоритм шифрования DES, также известный как 3DES или Triple DES. Используйте три (или два) разные ключи, чтобы зашифровать блок данных три раза (или два) DES (шифрование один раз быстрее, чем обычное шифрование три раза). Сила тройного DES примерно такая же, как и ключевая сила 112-битной. Безопасность улучшается благодаря количеству итераций, но также вызывает проблему низкой эффективности шифрования. Из -за эффективности алгоритма Деседа родился алгоритм AES.
До сих пор никто не дал эффективный способ атаковать тройной DES. Если вы ищете ключи в его ключевом пространстве, то, поскольку пространство слишком большое, это на самом деле невозможно. Если используется метод дифференциальной атаки, сложность увеличивается в геометрической прогрессии по сравнению с одним DES.
Есть четыре модели тройного DES
Код шифрования Java для алгоритма DES
пакет com.favccxx.codelib; import java.security.securerandom; import javax.crypto.cipher; import javax.crypto.secretkey; import javax.crypto.secretKeyFactory; Import javax.crypto.spec.deskeyspec; public class encryptcoder; Общественный статический байт [] Encrypt (byte [] src, byte [] key) выбрасывает исключение {// des Algorithm требует надежного источника случайного числа Securerandom sr = new Securerandom (); // Создать объект DeskeySpec из исходного ключа данных deskeyspec dks = new DeskeySpec (Key); // Создать ключевую фабрику и использовать ее для преобразования DeskeySpec в объект SecretKey SecretKeyFactory KeyFactory = secretKeyFactory.getInstance (des); SecretKey SecureKey = keyFactory.GenerateCret (DKS); // объект шифра фактически завершает операцию шифрования шифр Cipher = cipher.getInstance (des); // инициализировать объект Cipher cipher.init (cipher.encrypt_mode, secureKey, sr); // Официальное выполнение операции шифрования возврата Cipher.dofinal (src); } / ***** @param Пароль пароль* @param Клавиш Строка шифрования* @return* / public final Static String Encrypt (String Password, String Key) {try {return byte2string (encrypt (password.getbytes (), key.getbytes ())); } catch (Exception e) {} return null; } public Static String byte2string (byte [] b) {string hs = ""; String stmp = ""; for (int n = 0; n <b.length; n ++) {stmp = (java.lang.integer.tohexstring (b [n] & 0xff)); if (stmp.length () == 1) hs = hs + "0" + stmp; иначе hs = hs + stmp; } return hs.touppercase (); } public static void main (string [] args) {string encryptString = encrypt ("is Zhang Sanfeng", "Тест китайский и английский, смешанный @123654 {"); System.out.println (EncryptString); } // output: b00542e93695f4cfce34fc4393c2f4bf} Java реализация алгоритма DES DeCryption
пакет com.favccxx.codelib; import java.security.securerandom; import javax.crypto.cipher; import javax.crypto.secretkey; import javax.crypto.secretKeyFactory; Import javax.crypto.spec.deskeyspec; public classcodory; import javax.crypto.spec.deskeyspec; public classcodory; private static static static static static static static static static static krypto. / ** * * * @param SRC Источник данных * @param Ключ ключа, длина должна быть множеством 8 * @return * @throws Exception */ public Static Byte [] Decrypt (byte [] src, байт [] ключ), бросает исключение {// des algorithm требует надежного источника случайного числа Securerandom sr = nevureandomdom ();); // Создать объект DeskeySpec из исходного ключа данных deskeyspec dks = new DeskeySpec (Key); // Создать ключевую фабрику, а затем использовать ее для преобразования объекта DeskeySpec в объект SecretKey SecretKeyFactory KeyFactory = secretKeyFactory.getInstance (des); SecretKey SecureKey = keyFactory.GenerateCret (DKS); // объект шифра фактически завершает операцию дешифрования шифр Cipher = cipher.getInstance (des); // Инициализировать объект Cipher cipher.init (cipher.decrypt_mode, secureKey, sr); // Официальное выполнение операции дешифрования возврата cipher.dofinal (src); } public final Static String Decrypt (String Data, String Key) {try {return new String (decrypt (string2byte (data.getbytes ()), key.getbytes ())); } catch (Exception e) {e.printstackTrace (); } return null; } public static byte [] string2byte (byte [] b) {if ((b.length % 2)! = 0) бросить новое allodalargumentException («длина даже не»); байт [] b2 = новый байт [b.length / 2]; for (int n = 0; n <b.length; n += 2) {String item = new String (b, n, 2); b2 [n / 2] = (byte) integer.parseint (item, 16); } return B2; } public static void main (string [] args) {string desencryptString = decrypt ("b00542e93695f4cfce34fc4393c2f4bf", «Тест китайской и английский смешан @123654»); System.out.println (DesencryptString); } // output: is jang sanfeng}Я надеюсь, что эта статья будет вам полезна. Это все для вас, чтобы ввести анализ содержимого внедрения Java Algorithm Algorithm Ancryption и Decryption. Я надеюсь, что все будут продолжать следить за нашим сайтом! Если вы хотите выучить Java, вы можете продолжать следить за этим веб -сайтом.