В этой статье описываются функции шифрования и дешифрования, реализованные Java на основе алгоритма DES Symmetric Encryption. Поделитесь этим для вашей ссылки, следующим образом:
DES, связанные с шифрованием:
Securerandom унаследован от класса java.util.random
Существует три типа конструкторов этого класса, ниже приведены два примера:
Securerandom () Создает надежный генератор случайных чисел (RNG), который реализует алгоритм случайных чисел по умолчанию.
Securerandom (Byte [] Seed) Создает надежный генератор случайных чисел (RNG), который реализует алгоритм случайных чисел по умолчанию.
DeskeySpec используется для генерации содержания ключа клавиши с использованием исходного ключа.
DeskeySpec имеет два конструктора:
DeskeySpec (Byte [] Key) создает объект DeskeySpec, используя первые 8 байтов в клавише в качестве ключа клавиши DES.
DeskeySpec (Byte [] Key, Int Offset) создает объект DeskeySpec, используя первые 8 байтов в ключе, который начинается с и содержит смещение в качестве ключа клавиши Des-ede.
SecretKeyFactory, ключевая фабрика, используемая для преобразования клавиши (ключа OPIC шифрования клавиши типа) в спецификацию ключа (прозрачное представление основного материала ключа) и наоборот. Secret Key Factory работает только на секретных (симметричных) ключах.
Объект SecretKey, объект секретного ключа, генерирует секретный ключ, вызывая метод сгенерированного литературы (Deskeyspec Desktop Space) на фабрике секретного ключа
Класс шифров предоставляет функции пароля для шифрования и дешифрования и получает экземпляры, вызывая Cipher's GetInstance («DES»)
Объект Cipher вызывает метод init () для инициализации объекта.
Наконец, вызовите метод DoFinal () Cipher для шифрования и дешифрования.
Здесь я хотел бы задать вам вопрос.
1. Используйте sun.misc.base64decoder и base64encoder для декодирования и кодирования
Package com.soufun.com; импорт java.io.ioexception; импорт java.security.nosuchalgorithmexception; импорт java.security.securerandom; импорт java.util.date; импорт javax.crypto.cphertecem.cretecep. .Deskeyspec; // Импорт 64-битный кодирование Sun Import Sun.misc.base64decoder; импорт sun.misc.base64enceder;/** * try {keyfactory = secretKeyFactory.getInstance ("des"); // TODO Auto Genected Black E.printstacktrace (); Rypt (Data, Key)); = New Date (). getTime (); ИСПОЛЬЗОВАНИЕ КОСТИЦИИ, но спецификация также может быть байт [] bt = incrypt (data.getbytes (utf8), key.getbytes (utf8)); // Примечание. При шифровании и расшифровке используйте Sun Base64encoder () для кодирования и декодирования, в противном случае будет искаженное код .// Я просмотрел много случаев в Интернете, но нет кодирования и декодирования, и, как говорят, нет проблемы с искаженным кодом. ); Строка) Blows IOException, Exception {if (data == null) return null; , key.getbytes ()); Encrypt Key Byte Array * @return * @throws Exception */ Private Static Byte [] Encrypt (Byte [] Data, Byte [] ключ) бросает исключение {// Создание надежного источника случайных чисел Securerandom SR = New SecurerAndAndom (); Ключевая фабрика используется для преобразования клавиши (ключа OPIC шифрования клавиши типа) в спецификацию ключа (прозрачное представление основного материала клавиши) и наоборот. Secret Key Factory работает только на секретных (симметричных) ключах. // вместо этого здесь // SecretKeyFactory KeyFactory = cescretKeyFactory.getInstance (DES); SecretKey SecuteKey = KeyFactory.GenerateCret (DKS); Encrypt_Mode используется для инициализации шифра в постоянный режим шифрования. cipher.init (cipher.encrypt_mode, secutekey, sr); Генерировать доверенное количество случайных чисел Securerandom sr = new Securerandom (); Создайте объект DeskeySpec из исходных данных ключей, то есть содержание ключа ключа, которое создает ключ DeskeySpec dks = new DeskeySpec (ключ); Secret Key Factory работает только на секретных (симметричных) ключах. // вместо этого здесь // SecretKeyFactory KeyFactory = cescretKeyFactory.getInstance (DES); SecretKey SecuteKey = KeyFactory.GenerateCret (DKS); cipher.init (cipher.decrypt_mode, secutekey, sr);2. Использовать org.apache.commons.codec.binary.base64 для декодирования и кодирования
Package com.soufun.com; импорт java.io.ioexception; импорт java.security.nosuchalgorithmexception; импорт java.security.securerandom; импорт java.util.date; импорт javax.crypto.cphertecem.cretecep. .Deskeyspec; импорт org.apache.commons.codec.binary.base64;/** *@Автор WHD * */public Class Desutil {// определить метод шифрования }} public static void main (string [] args) бросает исключение { Long Begin = New Date (). getTime (); getTime (); Ключевой шифруемый массив * @return * @throws Exception */ public Static String Encrypt (строковые данные, ключ строки). .misc.base64encoder; Base64. Encodebase64String (BT); odec.binary.base64 для декодирования байта [] buf = base64.decodebase64 (data); Exception {// генерировать доверенный случайный чисел источник Securerandom sr = new Securerandom (); Создайте объект DeskeySpec из исходных данных ключей, то есть содержание ключа ключа, которое создает ключ DeskeySpec dks = new DeskeySpec (ключ); Secret Key Factory работает только на секретных (симметричных) ключах. // вместо этого здесь // SecretKeyFactory KeyFactory = cescretKeyFactory.getInstance (DES); SecretKey SecuteKey = KeyFactory.GenerateCret (DKS); Encrypt_Mode используется для инициализации шифра в постоянный режим шифрования. cipher.init (cipher.encrypt_mode, secutekey, sr); Генерировать доверенное количество случайных чисел Securerandom sr = new Securerandom (); Создайте объект DeskeySpec из исходных данных ключей, то есть содержание ключа ключа, которое создает ключ DeskeySpec dks = new DeskeySpec (ключ); Secret Key Factory работает только на секретных (симметричных) ключах. // вместо этого здесь // SecretKeyFactory KeyFactory = cescretKeyFactory.getInstance (DES); SecretKey SecuteKey = KeyFactory.GenerateCret (DKS); cipher.init (cipher.decrypt_mode, secutekey, sr);Загрузить адрес пакета, используемый в 1 и 2:
Скачать: sun.misc.base64decoder.
Скачать: Кодирование Apache's Base64, декодер.
3. Кодировка не используется, декодирует пакет
пакет com.soufun.com; импорт java.io.ioexception; импорт java.security.nosuchalgorithmexception; импорт java.util.date; импорт java.util.hashmap; import java.util.map; ax.crypto.spec.deskeyspec; import javax.crypto.spec.ivparameterspec;/***@Автор WHD */public class destrypt {static secretkeyfactory secretKeyFactory = null; Stacktrace (); = "GBK"; innercache.put (value); }} return Value; } / * hex-> str-> hex * / public static byte [] stringtohex (string ss) {// преобразование строки We Byte Digest [] = новый байт [ss.length () / 2]; Bytestring, 16); HextoString (Byte B []) {StringBuffer HexString = New StringBuffer (); ing.tostring (); 8) {return Text.getBytes (UTF8); [i / 4] = (byte) integer.parseint (text.substring (i, i + 2), 16); Выбросить новое ioexception ("txt '" + text + "' Is Invalid!"); = null; secretkeyobj = ceverskectory.generatesecret (new deskeyspec (_convertkeyiv (((String))); Obj = новый Ivparameterspec (_convertkeyiv ((String)); (Ivparameterspec) ivparamspecs.get (authiv); (Exception e) {e.printstacktrace (); } вернуть HextoString (Authtoken); SecretKey, IVParameterspec IV) Образцы {Cipher Cipher = cipher.getinstance (Cipher); Obj = null; = SecretKey) SecretKeySpecs.get (authkey); byte [] data = stringtohex (сообщение); Decrypt (Data, SecretKey, IV); } public static void main (string [] args) бросает исключение { Long Begin = New Date () .println ("EncryptedText:" + EncryptedText); Decrypt (EncryptedTex, Authkey, Authiv);PS: друзья, которые заинтересованы в шифровании и дешифровании, также могут относиться к онлайн -инструментам этого сайта:
Безопасность пароля онлайн -обнаружение:
http://tools.vevb.com/password/my_password_safe
Высокопрочный генератор паролей:
http://tools.vevb.com/password/createstrongpassword
Инструменты гром, экспресс и торнадо URL
http://tools.vevb.com/password/urlrethunder
Инструмент по шифрованию хэша/хэш -хэш -хэша:
http://tools.vevb.com/password/hash_encrypt
Онлайн MD5/HASH/SHA-1/SHA-2/SHA-256/SHA-512/SHA-3/RIPEMD-160 Инструмент шифрования:
http://tools.vevb.com/password/hash_md5_sha
Онлайн SHA1/SHA224/SHA256/SHA384/SHA512 Инструмент шифрования:
http://tools.vevb.com/password/sha_encode
Я надеюсь, что эта статья будет полезна для всех Java Programming.