Contoh ini berbagi alat enkripsi dan dekripsi Java yang cocok untuk Javase/Javaee/Android untuk dipelajari semua orang. Konten spesifiknya adalah sebagai berikut
paket longshu.utils.security; Impor java.lang.reflect.method; impor java.security.invalidkeyException; impor java.security.key; impor java.security.messagedigest; impor java.security.nosuchalgorityxception; impor java.security.secururity.sekurity; impor javax.crypto.badpaddingException; impor javax.crypto.cipher; impor javax.crypto.illegalblocksizeException; impor javax.crypto.keygenerator; impor javax.crypto.nosuchpaddingception; impor javax.crypto.nosuchpaddingception; impor javax.crypto.nosuchpadddingception; javax.crypto.spec.secretkeyspec; /*** Alat enkripsi dan dekripsi Java. * Both JavaSE/JavaEE/Android are applicable* * @author longshu April 13, 2016*/public class EncryptDecrypt { // No need to create an object private EncryptDecrypt() { } /** * SHA1 encrypted Bit data* @param source byte array* @return Encrypted byte array*/ public static byte[] SHA1Bit(byte[] source) {try {MessageSpetest sha1digest = MessageSageSt.getInstance ("sha-1"); sha1digest.update (sumber); byte targetDigest [] = sha1digest.digest (); return targetDigest; } catch (nosuchalgorithMexception e) {lempar runimeException baru (e); }} / *** SHA1 Data String Dienkripsi* @param Sumber String Untuk dienkripsi* @return dienkripsi string* / public static string sha1 (sumber string) {return byte2Hexstr (sha1bit (source.getbytes ())); } / *** MD5 Data bit terenkripsi* @param Sumber byte array* @return array byte terenkripsi* / public static byte [] md5bit (byte [] sumber) {coba {// dapatkan objek messageDigest dari md5 algorithmest "md5digest {" md5digest. // perbarui pencernaan md5digest.update (sumber); // Dapatkan ciphertext return md5digest.digest (); } catch (nosuchalgorithMexception e) {lempar runimeException baru (e); }} / *** md5 string terenkripsi, konten sumber panjang 32-bit* @param yang akan dienkripsi* @Return konten terenkripsi* / public static string md5 (sumber string) {return byte2Hexstr (md5bit (sumber.getbytes ())); } / *** encoding base64* @param Source String yang akan dikodekan* @return encoded string* / public static String encodeBase64 (Sumber string) {class <?> Clazz = null; Metode encodemethod = null; Coba {// Prioritas Penggunaan pustaka pihak ketiga clazz = class.forname ("org.apache.commons.codec.binary.base64"); encodemethod = clazz.getMethod ("encodeBase64", byte []. class); System.out.println ("EncodeBase64->" + Clazz); System.out.println ("EncodeMethod->" + Encodemethod); // Metode statis dari metode refleksi tidak memerlukan objek untuk mengeksekusi pengembalian string baru ((byte []) encodemethod.invoke (null, source.getbytes ())); } catch (classNotFoundException e) {string vm = system.getProperty ("java.vm.name"); System.out.println (VM); coba {if ("dalvik" .equals (vm)) {// android clazz = class.forname ("android.util.base64"); // byte [] base64.encode (byte [] input, int flags) encodemethod = clazz.getMethod ("encode", byte []. class, int.class); System.out.println ("EncodeBase64->" + Clazz); System.out.println ("EncodeMethod->" + Encodemethod); return new string ((byte []) encodemethod.invoke (null, source.getbytes (), 0)); } else {// javase/javaee clazz = class.forname ("sun.misc.base64encoder"); encodemethod = clazz.getMethod ("encode", byte []. class); System.out.println ("EncodeBase64->" + Clazz); System.out.println ("EncodeMethod->" + Encodemethod); return (string) encodemethod.invoke (clazz.newinstance (), source.getbytes ()); }} catch (ClassNotFoundException E1) {return null; } catch (Exception e1) {return null; }} catch (Exception e) {return null; } / * * Android * android.util.base64 * / // return base64.encodetoString (sumber, base64.default); // kembalikan string baru (base64.encode (source.getbytes (), base64.default)); / * * Javase/javaee */// sun.misc.base64encoder // base64encoder encoder = base64encoder baru (); // return encoder.encode (source.getbytes ()); // org.apache.commons.codec.binary.base64 // mengembalikan string baru (base64.encodeBase64 (source.getbytes ())); } / *** base64 decoding* @param encodesource encodesource encodesource* @return string sebelum pengkodean* / public static string decodebase64 (string encodeSource) {class <?> Clazz = null; Metode decodemethod = null; Coba {// Prioritas Penggunaan pustaka pihak ketiga clazz = class.forname ("org.apache.commons.codec.binary.base64"); decodemethod = clazz.getMethod ("decodebase64", byte []. class); System.out.println ("DecodeBase64->" + Clazz); System.out.println ("decodemethod->" + decodemethod); // Jalankan metode statis metode refleksi tanpa objek mengembalikan string baru ((byte []) decodemethod.invoke (null, encodeSource.getbytes ())); } catch (classNotFoundException e) {string vm = system.getProperty ("java.vm.name"); System.out.println (VM); coba {if ("dalvik" .equals (vm)) {// android clazz = class.forname ("android.util.base64"); // byte [] base64.decode (byte [] input, int flags) decodemethod = clazz.getMethod ("decode", byte []. class, int.class); System.out.println ("DecodeBase64->" + Clazz); System.out.println ("decodemethod->" + decodemethod); return new string ((byte []) decodemethod.invoke (null, encodesource.getbytes (), 0)); } else {// javase/javaee clazz = class.forname ("sun.misc.base64decoder"); decodemethod = clazz.getMethod ("decodebuffer", string.class); System.out.println ("DecodeBase64->" + Clazz); System.out.println ("decodemethod->" + decodemethod); return new string ((byte []) decodemethod.invoke (clazz.newinstance (), encodesource)); }} catch (ClassNotFoundException E1) {return null; } catch (Exception e1) {return null; }} catch (Exception e) {return null; } / * * Android * android.util.base64 * / // return new // string (base64.decode (encodeSource.getbytes (), base64.default)); / * * Javase/javaee */// sun.misc.base64decoder // coba {// base64decoder decoder = base64decoder baru (); // kembalikan string baru (decoder.decodeBuffer (encodeSource)); //} catch (ioException e) {// lempar runtimeException baru (e); //} // org.apache.commons.codec.binary.base64 // mengembalikan string baru (base64.decodebase64 (encodeSource.getbytes ())); }/*** enkripsi AES* @param konten konten yang akan dienkripsi* @param kata sandi kata sandi kata sandi* @return*/public static byte [] encryptbitaes (byte [] konten, kata sandi string) {coba {cipher encryptcipher = cipher.getInstance ("AES/ECB/PKCS); encryptcipher.init (cipher.encrypt_mode, getKey (kata sandi)); // inisialisasi byte [] result = encryptcipher.dofinal (konten); hasil pengembalian; // enkripsi} catch (nosuchalgorithmException e) {e.printstacktrace (); } catch (nosuchpaddingException e) {e.printstacktrace (); } catch (InvalidKeyException e) {E.PrintStackTrace (); } catch (ilegalblocksizeException e) {e.printstacktrace (); } catch (badpaddingException e) {e.printstacktrace (); } return null; }/*** AES DECRYPT* @param konten konten untuk didekripsi* @param kata sandi decrypt kunci* @return*/public static byte [] decryptbitaes (byte [] konten, kata sandi string) {coba {cipher decryptcipher = cipher.getInstance ("aes/pkcs/pkcs); decryptcipher.init (cipher.decrypt_mode, getkey (kata sandi)); // inisialisasi byte [] hasil = decryptcipher.dofinal (konten); hasil pengembalian; // Hasil Enkripsi} catch (InvalidKeyException E) {E.PrintStackTrace (); } catch (nosuchalgorithMexception e) {e.printstacktrace (); } catch (nosuchpaddingException e) {e.printstacktrace (); } catch (ilegalblocksizeException e) {e.printstacktrace (); } catch (badpaddingException e) {e.printstacktrace (); } return null; } / *** enkripsi string aes* @param konten konten yang akan dienkripsi* @param kata sandi kata sandi kata sandi* @return* / public static string encryptaes (konten string, kata sandi string) {return byte2HexStr (encryptbitaes (content.getbytes (), kata sandi))); } / *** Dekripsi string AES* @param konten konten untuk didekripsi* @param kata sandi decrypt kunci* @return* / public static string decryPtaes (konten string, kata sandi string) {return new string (decryptbitaes (hexstr2bytes (konten), kata sandi))); } / *** Hasilkan tombol dari string yang ditentukan* @param Kata Sandi String yang merupakan kunci* @return tombol yang dihasilkan* @Throws nosuchalgorithMexception* / kunci private static getKey (kata sandi string) melempar nosuchalgorithmException {secureDom Securerandom = new SecurerAldom.)) {Securerandom Securerandom = new SecurerAldom. // menghasilkan kunci keygenerator kgen = keygenerator.getInstance ("aes"); Kgen.init (128, Securerandom); Secretkey Secretkey = kgen.generateKey (); byte [] encodeformat = Secretkey.getEncoded (); // Konversi kunci SecretKeySpec Key = SecretKeyspec baru (EncodeFormat, "AES"); Key Return; } /*** Konversi array byte ke string yang mewakili nilai heksadesimal. * Sebagai contoh: byte [] {8,18} ke: 0812 * dan byte [] hexstr2bytes (string strin) adalah proses konversi yang dapat dibalikkan. * @param byte array byte yang perlu dikonversi* @return string yang dikonversi*/ string statis publik byte2Hexstr (byte [] bytes) {int byteslen = bytes.length; // Setiap byte diwakili oleh dua karakter, sehingga panjang string dua kali lipat panjang array stringBuffer hexString = stringBuffer baru (byteslen * 2); untuk (int i = 0; i <byteslen; i ++) {// Lakukan setiap byte dengan 0xff, lalu ubah menjadi desimal, dan kemudian konversinya menjadi hex oleh integer. String hex = integer.tohexString (bytes [i] & 0xff); if (hex.length () <2) {hexString.append (0); // Jika Anda menambahkan 0 hingga 1 bit sebelum} hexString.append (hex); } return hexString.toString (); } /** * Konversi string yang mewakili hexValues ke array byte, * dan string byte2Hexstr (byte [] byte) adalah proses konversi yang dapat dibalikkan. * @param bytes * @return Converted byte array */ public static byte [] hexstr2bytes (string strin) {byte [] arrb = strin.getbytes (); int ilen = arrb.length; // Dua karakter mewakili byte, sehingga panjang array byte adalah panjang string dibagi dengan 2 byte [] arrout = byte baru [ilen / 2]; untuk (int i = 0; i <ilen; i = i + 2) {string strtmp = string baru (arrb, i, 2); Arrout [i / 2] = (byte) integer.parseint (strtmp, 16); } return arrout; }}Di atas adalah semua tentang artikel ini, saya harap akan sangat membantu bagi semua orang untuk belajar pemrograman Java.