知识大全 java密码加密与解密

Posted

篇首语:业精于勤,荒于嬉;行成于思,毁于随。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 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))

  

cha138/Article/program/Java/hx/201311/26449

相关参考

知识大全 java字符串加密解密

  java字符串加密解密  tryStringtest=EncryptionDecryptiondes=newEncryptionDecryption(tourhb)//自定义密钥Systemout

甲方和乙方采用公钥密码体制对数据文件进行加密传送,甲方用乙方的公钥加密数据文件,乙方要对数据文件进行解密应该使用__

甲方和乙方采用公钥密码体制对数据文件进行加密传送,甲方用乙方的公钥加密数据文件,乙方要对数据文件进行解密应该使用_____。A、乙的公钥B、乙的私钥C、甲的公钥D、甲的私钥答案:B解析:公开密钥密码体

知识大全 JAVA DES加密解密实现

JAVADES加密解密实现  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  packagetxlt

知识大全 Java中3DES加密解密示例

Java中3DES加密解密示例  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  在java中调用s

知识大全 Java中3DES加密解密调用示例

Java中3DES加密解密调用示例  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  在java中调

知识大全 Java常用的加密 解密 数字签名等API

Java常用的加密解密数字签名等API  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  常用API

知识大全 3DES加密解密调用示例

3DES加密解密调用示例  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  在java中调用sun公

知识大全 java中使用MD5对数据密码加密

java中使用MD5对数据密码加密  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  publicc

知识大全 .NET中加密与解密QueryString的方法

.NET中加密与解密QueryString的方法  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!&n

知识大全 漫谈Java加密技术(一)

漫谈Java加密技术(一)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  加密解密曾经是我一个毕