package com.app.common; import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import sun.misc.BASE64Decoder; import sun.misc.BASE64Encoder; /** *@DEMO:napp *@Author:jilongliang *@Date:2013-7-25 */ @SuppressWarnings("all") public class EDncrypt { private static BASE64Encoder encoder = new BASE64Encoder();// 加密 private static BASE64Decoder decoder = new BASE64Decoder();// 解密 /** * 加密文件 * * @param f * @param path */ private static String encryptFile(File f, String path) { InputStream in = null; OutputStream out = null; String key = ""; try { f = new File(path); in = new FileInputStream(f); out = new ByteArrayOutputStream(); // System.out.println(f.getAbsolutePath()); // System.out.println(f.length()); encoder.encodeBuffer(in, out); key = out.toString(); in.close(); out.close(); } catch (IOException e) { e.printStackTrace(); } return key; } /** *解密 * * @param f * @param path */ private static String decryptFile(File f, String path) { InputStream in = null; OutputStream out = null; String key = ""; try { f = new File(path); in = new FileInputStream(f); out = new ByteArrayOutputStream(); decoder.decodeBuffer(in, out); key = out.toString(); in.close(); out.close(); } catch (IOException e) { e.printStackTrace(); } return key; } /** * 加密 * * @param key * @return * @throws Exception */ public static String encryptBASE64(String inputStr) { String value = ""; try { byte[] key = inputStr.getBytes(); value = encoder.encodeBuffer(key); } catch (Exception e) { e.printStackTrace(); } return value; } /** * 解密 * * @param key * @return * @throws Exception */ public static String decryptBASE64(String outputStr) { String value = ""; try { byte[] key = decoder.decodeBuffer(outputStr); value = new String(key); } catch (Exception e) { } return value; } }
可逆的加密:Apache的 public static String encodePassword(String rawPass,String type) { String pass=""; if(type.toLowerCase().equals("md5")){ Md5PasswordEncoder md5PasswordEncoder=new Md5PasswordEncoder(); pass=md5PasswordEncoder.encodePassword(rawPass, null); } return pass; } public static String encodePassword(String rawPass) { return encodePassword(rawPass,"MD5"); }
java 加密 Digest EnCrypt 加密与解密 package digest; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; import javax.crypto.Cipher; import javax.crypto.KeyGenerator; import javax.crypto.SecretKey; import org.apache.commons.codec.binary.Base64; public class DigestExample { public static void main(String[] args) throws Exception { //加密内容 final String content = "hello hello hello"; /* * 单向加密 md5 & sha */ //md5 加密 MessageDigest md5 = MessageDigest.getInstance("md5"); byte[] md5SecretStr = md5.digest(content.getBytes()); System.out.print("md5 加密 : { " + new String(Base64.encodeBase64(md5SecretStr)) + " } "); //sha 加密 MessageDigest sha = MessageDigest.getInstance("sha"); byte[] shaSecretBytes = sha.digest(content.getBytes()); System.out.print("sha 加密 : { " + new String(Base64.encodeBase64(shaSecretBytes)) + " } "); /* * 对称加密 aes & des */ //aes 加密 KeyGenerator aesKeyGenerator = KeyGenerator.getInstance("aes"); SecretKey aesSecretKey = aesKeyGenerator.generateKey(); Cipher aesCipher = Cipher.getInstance("aes"); aesCipher.init(Cipher.ENCRYPT_MODE, aesSecretKey); byte[] aseResultBytes = aesCipher.doFinal(content.getBytes()); System.out.print("aes 加密 : { " + new String(Base64.encodeBase64(aseResultBytes)) + " } "); //aes 解密 aesCipher.init(Cipher.DECRYPT_MODE, aesSecretKey); aseResultBytes = aesCipher.doFinal(aseResultBytes); System.out.print("aes 解密: { " + new String(aseResultBytes) + " } "); //des 加密 KeyGenerator desKeyGenerator = KeyGenerator.getInstance("aes"); SecretKey desSecretKey = desKeyGenerator.generateKey(); Cipher desCipher = Cipher.getInstance("aes"); desCipher.init(Cipher.ENCRYPT_MODE, desSecretKey); byte[] dseResultBytes = desCipher.doFinal(content.getBytes()); System.out.print("des 加密 : { " + new String(Base64.encodeBase64(dseResultBytes)) + " } "); desCipher.init(Cipher.DECRYPT_MODE, desSecretKey); dseResultBytes = desCipher.doFinal(dseResultBytes); System.out.print("aes 解密: { " + new String(dseResultBytes) + " } "); } } console run result md5 : { ZnptFLLcFU/qw2LdrU1MqA== } sha : { g52cyhSXeHXr8kcWODkq738OAVk= } aes 加密 : { pudmyrvBANStqfcDIb7+DFPK+5gPZP/ais6sibTKyIk= } aes 解密: { hello hello hello } des : { Nx2RwaJBl5+P2eVb0v+JRVTd8tfwAQQ7KA28n97Ln8E= } aes 解密: { hello hello hello } rsa 非对称加密 package digest; import java.security.KeyPair; import java.security.KeyPairGenerator; import java.security.PrivateKey; import java.security.PublicKey; import javax.crypto.Cipher; import org.apache.commons.codec.binary.Base64; public class RsaExample { public static void main(String[] args) throws Exception { final String context = "rsa加密"; KeyPairGenerator kpg = KeyPairGenerator.getInstance("rsa"); KeyPair gkp = kpg.generateKeyPair(); PrivateKey privateKey = gkp.getPrivate(); PublicKey publicKey = gkp.getPublic(); byte[] encode1 = privateKey.getEncoded(); byte[] encode2 = publicKey.getEncoded(); byte[] key1 = Base64.encodeBase64(encode1); byte[] key2 = Base64.encodeBase64(encode2); System.out.println(new String(key1)); System.out.println(new String(key2)); /*System.out.println("privateKey:{"+privateKey+"}"); System.out.println("publicKey:{" +publicKey+"}");*/ Cipher cipher = Cipher.getInstance("rsa"); cipher.init(1, privateKey); byte[] result = cipher.doFinal(context.getBytes()); byte[] signatrue = Base64.encodeBase64(result); System.out.println("result:{" + new String(signatrue)+"}"); byte[] i = Base64.decodeBase64(signatrue); cipher.init(2, publicKey); System.out.println(new String(cipher.doFinal(i))); } } console run result MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBAI+Ktf/bAPnTER4wL+jYwSgjvwg3VU4KRrdvoOipy862ROcJdw9nCGRIyfFpIYFYALY5km0GTbR1cvfB5N47GbEad8OMsMi1JOvNgikp8ofUgFd4arsiD6p6sWd7RswvVfgdFKQmP6Obu9jM5zCZxetaH/b0xK6tBNJJW/wn+zG9AgMBAAECgYAdpaixj6pD7zQ55/n9PcenYrqyF7umwriYapXxeCCAMWVJ0sqkg8NX8zDCi9Q/ws1i1cFIg2TJQPjd804yGELV4MQ886e723O6nfTzlgCcFHNub6s4IIvQczQCRx3BJzro2KAbPFeqV/hDIgaNxlJx0W1UEbQqkBYHH1BkAjXwAQJBAOmcslHLYJe5RWp6wyDjcj9GiQMDgt18vIdsW/MOEBnQeYWE2bwsiE092youoZ7aNPKDoZzoJTEpVUPVLQH0deECQQCdTEh06COqviUlAQPJIYDpDi1qoSvw+07NDsaho7Lpao/F/iq1XgZvH6wKod4EmY3IdX8e0RvcrajMMWm6aj9dAkASAh5M59yeVY3gU25PTrkz34AYV2DzKfZuig/cgK0FEGkNvdv7AYPQUIBglA+pazDBsRv4OH0FeSY1gG1jxTCBAkABfPNCh9+ugdYAH55VjMeXbNbpJ1UvFnGMZxNh/BZ5NtTdXqYwyQ7uhjIud5GOIZXBy7rEI95LnCj4pY8GgHLRAkEA1mP3Z6x42aZaHKQcEuT38/BPBg9OtTZGaWipeGp7dlDuD8XW/NBianft2VqI73GXo7gSn7HDHp5ZhLVhCNsSOA== MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCPirX/2wD50xEeMC/o2MEoI78IN1VOCka3b6DoqcvOtkTnCXcPZwhkSMnxaSGBWAC2OZJtBk20dXL3weTeOxmxGnfDjLDItSTrzYIpKfKH1IBXeGq7Ig+qerFne0bML1X4HRSkJj+jm7vYzOcwmcXrWh/29MSurQTSSVv8J/sxvQIDAQAB privateKey:{Sun RSA private CRT key, 1024 bits modulus: 100798507655562672634382563625239291964945102222464707977557265818850161373345900576705678605564617099559134111187263533690577667029773051561093784895113396514352229224857085774815551784918475310931537765905461572526427050491602207190137661866307492752828388294013838106222346293330945028978188314252819509693 public exponent: 65537 private exponent: 20818905345464338263561078188370524376115734679391523676460856464652879813687079210313076057874523659301347930619814748798932805909867830781557982091646774464612734768033397966651666313646610127404321982687308504412645000261745579169493965806942893895422786998315749053429010938321263854313553436041981325313 prime p: 12235258251843427800322533580271468214768411862644285725616323425147295210732054481178485319627614069545483443675930314214646122186102225213965689240712673 prime q: 8238363717445509899921811355733496220359326926172197592231787257563498251698094349890806400362388734966369330560689902140965710482536375658188849975803741 prime exponent p: 943169884009231384519118050071432281322154153075040534138176388053223910228090074902935865766799003301093769282249720728937733025377854368996973649145985 prime exponent q: 77937432363645210155355341876417407824935268538791255431034501116764101439687787004780505183708149834126508460070307449645219349362536474176069807665873 crt coefficient: 11228541263870362801929539584646038800421516291723873773379889902535223043030350582050117672514417336396982286570742313855229425370741626261320117750796856} publicKey:{Sun RSA public key, 1024 bits modulus: 100798507655562672634382563625239291964945102222464707977557265818850161373345900576705678605564617099559134111187263533690577667029773051561093784895113396514352229224857085774815551784918475310931537765905461572526427050491602207190137661866307492752828388294013838106222346293330945028978188314252819509693 public exponent: 65537} result:{XxdVrhgArX5/AnDGGqU2/VGTcrmjcY37SnKxnTR7+5VFaACbj6aSi+S3xyfgu1UHwlDUrpYczCU+ikXrbSQWs9+WGT1CixYrCC04VuxxZ32G4gKLY8Q9Ag904PuTQbA/s/YWuHxfvKykr9r2Epx2wHrZiRKA6eFvVQIQCKzWjvk=} rsa加密