當前位置:編程學習大全網 - 源碼下載 - java密碼加密與解密

java密碼加密與解密

 以下兩個類可以很方便的完成字符串的加密和解密

 加密 CryptHelper encrypt(password)

 解密 CrypHelper decrypt(password)

 代碼如下

 CryptUtils java

 [java]

 package gdie lab crypt;

 import java io IOException;

 import javax crypto Cipher;

 import javax crypto KeyGenerator;

 import javax crypto SecretKey;

 import apache xerces internal impl dv util Base ;

 public class CryptUtils {

 private static String Algorithm = DES ;

 private static byte[] DEFAULT_KEY=new byte[] { };

 private static String VALUE_ENCODING= UTF ;

 /**

 * 生成密鑰

 *

 * @return byte[] 返回生成的密鑰

 * @throws exception

 * 扔出異常

 */

 public static byte[] getSecretKey() throws Exception {

 KeyGenerator keygen = KeyGenerator getInstance(Algorithm)

 SecretKey deskey = keygen generateKey()

 // if (debug ) System out println ( 生成密鑰 +byte hex (deskey getEncoded

 // ()))

 return deskey getEncoded()

 }

 /**

 * 將指定的數據根據提供的密鑰進行加密

 *

 * @param input

 * 需要加密的數據

 * @param key

 * 密鑰

 * @return byte[] 加密後的數據

 * @throws Exception

 */

 public static byte[] encryptData(byte[] input byte[] key) throws Exception {

 SecretKey deskey = new javax crypto spec SecretKeySpec(key Algorithm)

 // if (debug )

 // {

 // System out println ( 加密前的二進串 +byte hex (input ))

 // System out println ( 加密前的字符串 +new String (input ))

 //

 // }

 Cipher c = Cipher getInstance(Algorithm)

 c init(Cipher ENCRYPT_MODE deskey)

 byte[] cipherByte = c doFinal(input)

 // if (debug ) System out println ( 加密後的二進串 +byte hex (cipherByte ))

 return cipherByte;

 }

 public static byte[] encryptData(byte[] input) throws Exception {

 return encryptData(input DEFAULT_KEY)

 }

 /**

 * 將給定的已加密的數據通過指定的密鑰進行解密

 *

 * @param input

 * 待解密的數據

 * @param key

 * 密鑰

 * @return byte[] 解密後的數據

 * @throws Exception

 */

 public static byte[] decryptData(byte[] input byte[] key) throws Exception {

 SecretKey deskey = new javax crypto spec SecretKeySpec(key Algorithm)

 // if (debug ) System out println ( 解密前的信息 +byte hex (input ))

 Cipher c = Cipher getInstance(Algorithm)

 c init(Cipher DECRYPT_MODE deskey)

 byte[] clearByte = c doFinal(input)

 // if (debug )

 // {

 // System out println ( 解密後的二進串 +byte hex (clearByte ))

 // System out println ( 解密後的字符串 +(new String (clearByte )))

 //

 // }

 return clearByte;

 }

 public static byte[] decryptData(byte[] input) throws Exception {

 return decryptData(input DEFAULT_KEY)

 }

 /**

 * 字節碼轉換成 進制字符串

 *

 * @param byte[] b 輸入要轉換的字節碼

 * @return String 返回轉換後的 進制字符串

 */

 public static String byte hex(byte[] bytes) {

 StringBuilder hs = new StringBuilder()

 for(byte b : bytes)

 hs append(String format( % $ X b))

 return hs toString()

 }

 public static byte[] hex byte(String content) {

 int l=content length()》 ;

 byte[] result=new byte[l];

 for(int i= ;i<l;i++) {

 int j=i《 ;

 String s=content substring(j j+ )

 result[i]=Integer valueOf(s ) byteValue()

 }

 return result;

 }

 /**

 * 將字節數組轉換為base 編碼字符串

 * @param buffer

 * @return

 */

 public static String bytesToBase (byte[] buffer) {

 //BASE Encoder en=new BASE Encoder()

 return Base encode(buffer)

 //? return encoder encode(buffer)

 }

 /**

 * 將base 編碼的字符串解碼為字節數組

 * @param value

 * @return

 * @throws IOException

 */

 public static byte[] base ToBytes(String value) throws IOException {

 //return Base decodeToByteArray(value)

 //? System out println(decoder decodeBuffer(value))

 //? return decoder decodeBuffer(value)

 return Base decode(value)

 }

 /**

 * 加密給定的字符串

 * @param value

 * @return 加密後的base 字符串

 */

 public static String encryptString(String value) {

 return encryptString(value DEFAULT_KEY)

 }

 /**

 * 根據給定的密鑰加密字符串

 * @param value 待加密的字符串

 * @param key 以BASE 形式存在的密鑰

 * @return 加密後的base 字符串

 * @throws IOException

 */

 public static String encryptString(String value String key) throws IOException {

 return encryptString(value base ToBytes(key))

 }

 /**

 * 根據給定的密鑰加密字符串

 * @param value 待加密的字符串

 * @param key 字節數組形式的密鑰

 * @return 加密後的base 字符串

 */

 public static String encryptString(String value byte[] key) {

 try {

 byte[] data=value getBytes(VALUE_ENCODING)

 data=CryptUtils encryptData(data key)

 return bytesToBase (data)

 } catch (Exception e) {

 // TODO Auto generated catch block

 e printStackTrace()

 return null;

 }

 }

 /**

 * 解密字符串

 * @param value base 形式存在的密文

 * @return 明文

 */

 public static String decryptString(String value) {

 return decryptString(value DEFAULT_KEY)

 }

 /**

 * 解密字符串

 * @param value base 形式存在的密文

 * @param key base 形式存在的密鑰

 * @return 明文

 * @throws IOException

 */

 public static String decryptString(String value String key) throws IOException {

 String s=decryptString(value base ToBytes(key))

 return s;

 }

 /**

 * 解密字符串

 * @param value base 形式存在的密文

 * @param key 字節數據形式存在的密鑰

 * @return 明文

 */

 public static String decryptString(String value byte[] key) {

 try {

 byte[] data=base ToBytes(value)

 data=CryptUtils decryptData(data key)

 return new String(data VALUE_ENCODING)

 }catch(Exception e) {

 e printStackTrace()

 return null;

 }

 }

 }

 package gdie lab crypt;

 import java io IOException;

 import javax crypto Cipher;

 import javax crypto KeyGenerator;

 import javax crypto SecretKey;

 import apache xerces internal impl dv util Base ;

 public class CryptUtils {

 private static String Algorithm = DES ;

 private static byte[] DEFAULT_KEY=new byte[] { };

 private static String VALUE_ENCODING= UTF ;

 /**

 * 生成密鑰

 *

 * @return byte[] 返回生成的密鑰

 * @throws exception

 * 扔出異常

 */

 public static byte[] getSecretKey() throws Exception {

 KeyGenerator keygen = KeyGenerator getInstance(Algorithm)

 SecretKey deskey = keygen generateKey()

 // if (debug ) System out println ( 生成密鑰 +byte hex (deskey getEncoded

 // ()))

 return deskey getEncoded()

 }

 /**

 * 將指定的數據根據提供的密鑰進行加密

 *

 * @param input

 * 需要加密的數據

 * @param key

 * 密鑰

 * @return byte[] 加密後的數據

 * @throws Exception

 */

 public static byte[] encryptData(byte[] input byte[] key) throws Exception {

 SecretKey deskey = new javax crypto spec SecretKeySpec(key Algorithm)

 // if (debug )

 // {

 // System out println ( 加密前的二進串 +byte hex (input ))

 // System out println ( 加密前的字符串 +new String (input ))

 //

 // }

 Cipher c = Cipher getInstance(Algorithm)

 c init(Cipher ENCRYPT_MODE deskey)

 byte[] cipherByte = c doFinal(input)

 // if (debug ) System out println ( 加密後的二進串 +byte hex (cipherByte ))

 return cipherByte;

 }

 public static byte[] encryptData(byte[] input) throws Exception {

 return encryptData(input DEFAULT_KEY)

 }

 /**

 * 將給定的已加密的數據通過指定的密鑰進行解密

 *

 * @param input

 * 待解密的數據

 * @param key

 * 密鑰

 * @return byte[] 解密後的數據

 * @throws Exception

 */

 public static byte[] decryptData(byte[] input byte[] key) throws Exception {

 SecretKey deskey = new javax crypto spec SecretKeySpec(key Algorithm)

 // if (debug ) System out println ( 解密前的信息 +byte hex (input ))

 Cipher c = Cipher getInstance(Algorithm)

 c init(Cipher DECRYPT_MODE deskey)

 byte[] clearByte = c doFinal(input)

 // if (debug )

 // {

 // System out println ( 解密後的二進串 +byte hex (clearByte ))

 // System out println ( 解密後的字符串 +(new String (clearByte )))

 //

 // }

 return clearByte;

 }

 public static byte[] decryptData(byte[] input) throws Exception {

 return decryptData(input DEFAULT_KEY)

 }

 /**

 * 字節碼轉換成 進制字符串

 *

 * @param byte[] b 輸入要轉換的字節碼

 * @return String 返回轉換後的 進制字符串

 */

 public static String byte hex(byte[] bytes) {

 StringBuilder hs = new StringBuilder()

 for(byte b : bytes)

 hs append(String format( % $ X b))

 return hs toString()

 }

 public static byte[] hex byte(String content) {

 int l=content length()》 ;

 byte[] result=new byte[l];

 for(int i= ;i<l;i++) {

 int j=i《 ;

 String s=content substring(j j+ )

 result[i]=Integer valueOf(s ) byteValue()

 }

 return result;

 }

 /**

 * 將字節數組轉換為base 編碼字符串

 * @param buffer

 * @return

 */

 public static String bytesToBase (byte[] buffer) {

 //BASE Encoder en=new BASE Encoder()

 return Base encode(buffer)

 //? return encoder encode(buffer)

 }

 /**

 * 將base 編碼的字符串解碼為字節數組

 * @param value

 * @return

 * @throws IOException

 */

 public static byte[] base ToBytes(String value) throws IOException {

 //return Base decodeToByteArray(value)

 //? System out println(decoder decodeBuffer(value))

 //? return decoder decodeBuffer(value)

 return Base decode(value)

 }

 /**

 * 加密給定的字符串

 * @param value

 * @return 加密後的base 字符串

 */

 public static String encryptString(String value) {

 return encryptString(value DEFAULT_KEY)

 }

 /**

 * 根據給定的密鑰加密字符串

 * @param value 待加密的字符串

 * @param key 以BASE 形式存在的密鑰

 * @return 加密後的base 字符串

 * @throws IOException

 */

 public static String encryptString(String value String key) throws IOException {

 return encryptString(value base ToBytes(key))

 }

 /**

 * 根據給定的密鑰加密字符串

 * @param value 待加密的字符串

 * @param key 字節數組形式的密鑰

 * @return 加密後的base 字符串

 */

 public static String encryptString(String value byte[] key) {

 try {

 byte[] data=value getBytes(VALUE_ENCODING)

 data=CryptUtils encryptData(data key)

 return bytesToBase (data)

 } catch (Exception e) {

 // TODO Auto generated catch block

 e printStackTrace()

 return null;

 }

 }

 /**

 * 解密字符串

 * @param value base 形式存在的密文

 * @return 明文

 */

 public static String decryptString(String value) {

 return decryptString(value DEFAULT_KEY)

 }

 /**

 * 解密字符串

 * @param value base 形式存在的密文

 * @param key base 形式存在的密鑰

 * @return 明文

 * @throws IOException

 */

 public static String decryptString(String value String key) throws IOException {

 String s=decryptString(value base ToBytes(key))

 return s;

 }

 /**

 * 解密字符串

 * @param value base 形式存在的密文

 * @param key 字節數據形式存在的密鑰

 * @return 明文

 */

 public static String decryptString(String value byte[] key) {

 try {

 byte[] data=base ToBytes(value)

 data=CryptUtils decryptData(data key)

 return new String(data VALUE_ENCODING)

 }catch(Exception e) {

 e printStackTrace()

 return null;

 }

 }

 }

 CryptHelper java

 [java]

 package gdie lab crypt;

 import javax crypto Cipher;

 import javax crypto SecretKey;

 import javax crypto SecretKeyFactory;

 import javax crypto spec DESKeySpec;

 import javax crypto spec IvParameterSpec;

 import springframework util DigestUtils;

 public class CryptHelper{

 private static String CRYPT_KEY = zhongqian ;

 //加密

 private static Cipher ecip;

 //解密

 private static Cipher dcip;

 static {

 try {

 String KEY = DigestUtils md DigestAsHex(CRYPT_KEY getBytes()) toUpperCase()

 KEY = KEY substring( )

 byte[] bytes = KEY getBytes()

 DESKeySpec ks = new DESKeySpec(bytes)

 SecretKeyFactory skf = SecretKeyFactory getInstance( DES )

 SecretKey sk = skf generateSecret(ks)

 IvParameterSpec iv = new IvParameterSpec(bytes)

 ecip = Cipher getInstance( DES/CBC/PKCS Padding )

 ecip init(Cipher ENCRYPT_MODE sk iv )

 dcip = Cipher getInstance( DES/CBC/PKCS Padding )

 dcip init(Cipher DECRYPT_MODE sk iv )

 }catch(Exception ex) {

 ex printStackTrace()

 }

 }

 public static String encrypt(String content) throws Exception {

 byte[] bytes = ecip doFinal(content getBytes( ascii ))

 return CryptUtils byte hex(bytes)

 }

 public static String decrypt(String content) throws Exception {

 byte[] bytes? = CryptUtils hex byte(content)

 bytes = dcip doFinal(bytes)

 return new String(bytes ascii )

 }

 //test

 public static void main(String[] args) throws Exception {

 String password = gly ;

 String en = encrypt(password)

 System out println(en)

 System out println(decrypt(en))

 }

 }

 package gdie lab crypt;

 import javax crypto Cipher;

 import javax crypto SecretKey;

 import javax crypto SecretKeyFactory;

 import javax crypto spec DESKeySpec;

 import javax crypto spec IvParameterSpec;

 import springframework util DigestUtils;

 public class CryptHelper{

 private static String CRYPT_KEY = zhongqian ;

 //加密

 private static Cipher ecip;

 //解密

 private static Cipher dcip;

 static {

 try {

 String KEY = DigestUtils md DigestAsHex(CRYPT_KEY getBytes()) toUpperCase()

 KEY = KEY substring( )

 byte[] bytes = KEY getBytes()

 DESKeySpec ks = new DESKeySpec(bytes)

 SecretKeyFactory skf = SecretKeyFactory getInstance( DES )

 SecretKey sk = skf generateSecret(ks)

 IvParameterSpec iv = new IvParameterSpec(bytes)

 ecip = Cipher getInstance( DES/CBC/PKCS Padding )

 ecip init(Cipher ENCRYPT_MODE sk iv )

 dcip = Cipher getInstance( DES/CBC/PKCS Padding )

 dcip init(Cipher DECRYPT_MODE sk iv )

 }catch(Exception ex) {

 ex printStackTrace()

 }

 }

 public static String encrypt(String content) throws Exception {

 byte[] bytes = ecip doFinal(content getBytes( ascii ))

 return CryptUtils byte hex(bytes)

 }

 public static String decrypt(String content) throws Exception {

 byte[] bytes? = CryptUtils hex byte(content)

 bytes = dcip doFinal(bytes)

 return new String(bytes ascii )

 }

 //test

 public static void main(String[] args) throws Exception {

 String password = gly ;

 String en = encrypt(password)

 System out println(en)

 System out println(decrypt(en))

 }

lishixinzhi/Article/program/Java/hx/201311/26449

  • 上一篇:100高分懸賞!!怎麽使文件只能打開壹次就銷毀
  • 下一篇:如何用EXCEL表實現倉庫出入庫及庫存動態管理
  • copyright 2024編程學習大全網