`
yjshengshe
  • 浏览: 201347 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

加密解密学习

 
阅读更多

 

/////////////SHA单项加密

package com.security;

 

import java.security.MessageDigest;

import java.security.NoSuchAlgorithmException;

 

/**

 * SHA安全散列算法

 * @author Administrator

 *

 */

public class SecuritySHA {

 

/**

* md5加密

* @param s

* @return

*/

public static byte[] encrypt(String s)

{

try {

//根据MD5算法生成MessageDigest对象

MessageDigest md5 = MessageDigest.getInstance("SHA");

byte[] bytes = s.getBytes();

//使用bytes更新摘要

md5.update(bytes);

//完成哈希计算,得到result

byte[] resultBytes = md5.digest(); 

return resultBytes;

} catch (NoSuchAlgorithmException e) {

// TODO Auto-generated catch block

e.printStackTrace();

return null;

}

public String decryption(byte[] bytes)

{

return null;

}

public static String byte2hex(byte[] b) // 二进制转字符串

    { 

     String hs=""; 

     String stmp=""; 

     for (int n=0;n<b.length;n++) 

      { 

       stmp=(java.lang.Integer.toHexString(b[n] & 0XFF)); 

       if (stmp.length()==1) hs=hs+"0"+stmp; 

       else hs=hs+stmp; 

//一般MD5加密是32位,如果加上以下这句就是47位了,以下这句没任何用,只是为了好看

        //if (n<b.length-1)  hs=hs+":"; 

      } 

     return hs.toUpperCase(); 

    }

 

/**

* @param args

*/

public static void main(String[] args) {

// TODO Auto-generated method stub

byte[] result = SecurityMD5.encrypt("郭克华_安全编码技术");

byte[] result1 = SecurityMD5.encrypt("郭克华_安全编码技术");

System.out.println(result); 

System.out.println(result1);

System.out.println(new String(result)); 

System.out.println(new String(result1));

System.out.println(SecurityMD5.byte2hex(result)); 

System.out.println(SecurityMD5.byte2hex(result1));

}

 

}

 

/////////MD5单项加密

package com.security;

 

import java.security.MessageDigest;

import java.security.NoSuchAlgorithmException;

 

/**

 * MD5加密

 * @author Administrator

 *

 */

public class SecurityMD5 {

/**

* md5加密

* @param s

* @return

*/

public static byte[] encrypt(String s)

{

try {

//根据MD5算法生成MessageDigest对象

MessageDigest md5 = MessageDigest.getInstance("MD5");

byte[] bytes = s.getBytes();

//使用bytes更新摘要

md5.update(bytes);

//完成哈希计算,得到result

byte[] resultBytes = md5.digest(); 

return resultBytes;

} catch (NoSuchAlgorithmException e) {

// TODO Auto-generated catch block

e.printStackTrace();

return null;

}

public String decryption(byte[] bytes)

{

return null;

}

public static String byte2hex(byte[] b) // 二行制转字符串

    { 

     String hs=""; 

     String stmp=""; 

     for (int n=0;n<b.length;n++) 

      { 

       stmp=(java.lang.Integer.toHexString(b[n] & 0XFF)); 

       if (stmp.length()==1) hs=hs+"0"+stmp; 

       else hs=hs+stmp; 

       if (n<b.length-1)  hs=hs+":"; 

      } 

     return hs.toUpperCase(); 

    }

 

/**

* @param args

*/

public static void main(String[] args) {

// TODO Auto-generated method stub

byte[] result = SecurityMD5.encrypt("sky");

byte[] result1 = SecurityMD5.encrypt("sky");

System.out.println(result); 

System.out.println(result1);

System.out.println(new String(result)); 

System.out.println(new String(result1));

System.out.println(SecurityMD5.byte2hex(result)); 

System.out.println(SecurityMD5.byte2hex(result1));

}

 

}

 

/////////DES对称加密

package com.security;

 

import java.security.InvalidKeyException;

import java.security.NoSuchAlgorithmException;

import java.security.Security;

 

import javax.crypto.BadPaddingException;

import javax.crypto.Cipher;

import javax.crypto.IllegalBlockSizeException;

import javax.crypto.KeyGenerator;

import javax.crypto.NoSuchPaddingException;

import javax.crypto.SecretKey;

 

/**

 * DES是数据加密标准(Data Encryption Standard)的简称 //对称加密

 * @author Administrator

 *

 */

public class SecurityDES {

//KeyGenerator提供对称

private KeyGenerator keygen;

//SecretKey负责保存堆成密匙

private SecretKey deskey;

//Cipher负责完成加密和解密工作

private Cipher c;

//该字节数组负责保存加密的结果

private byte[] cipherByte;

public SecurityDES()

{

Security.addProvider(new com.sun.crypto.provider.SunJCE());

try {

//实例化支持DES算法的密匙生成器(算法名称需按规定,负责抛出异常)

keygen = KeyGenerator.getInstance("DES");

//生成密匙

deskey = keygen.generateKey();

//生成Cipher对象,指定其支持DES算法

c = Cipher.getInstance("DES");

} catch (NoSuchAlgorithmException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} catch (NoSuchPaddingException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

/**

* 对指定字符串加密

* @param str

* @return

*/

public byte[] createEncryptor(String str)

{

try {

//根据密匙,对Cipher对象进行初始化,ENCRYPT_MODE表示加密模式

c.init(Cipher.ENCRYPT_MODE, deskey);

byte[] src = str.getBytes();

//加密,结果保存进cipherByte

cipherByte = c.doFinal(src);

} catch (InvalidKeyException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} catch (IllegalBlockSizeException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} catch (BadPaddingException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

return cipherByte;

}

public byte[] createDecryptor(byte[] buff)

{

try {

//根据密匙,对Cipher对象进行初始化,ENCRYPT_MODE 表示解密模式

c.init(Cipher.DECRYPT_MODE, deskey);

//得到明文,存入cipherByte字符数组

cipherByte = c.doFinal(buff);

} catch (InvalidKeyException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} catch (IllegalBlockSizeException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} catch (BadPaddingException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

return cipherByte;

}

 

/**

* @param args

*/

public static void main(String[] args) {

// TODO Auto-generated method stub

SecurityDES des = new SecurityDES();

String msg = "sky人皇";

System.out.println("明文:"+msg);

byte[] enc = des.createEncryptor(msg);

System.out.println("密文:"+new String(enc));

byte[] dec = des.createDecryptor(enc);

System.out.println("解密:"+new String(dec));

}

 

}

 

////////////3DES对称加密

package com.security;

 

import java.security.InvalidKeyException;

import java.security.NoSuchAlgorithmException;

import java.security.Security;

 

import javax.crypto.BadPaddingException;

import javax.crypto.Cipher;

import javax.crypto.IllegalBlockSizeException;

import javax.crypto.KeyGenerator;

import javax.crypto.NoSuchPaddingException;

import javax.crypto.SecretKey;

 

/**

 * 3DES 即三重DES,是DES的加强版 //对称加密

 * @author Administrator

 *

 */

public class Security3DES {

//KeyGenerator提供对称

private KeyGenerator keygen;

//SecretKey负责保存堆成密匙

private SecretKey deskey;

//Cipher负责完成加密和解密工作

private Cipher c;

//该字节数组负责保存加密的结果

private byte[] cipherByte;

public Security3DES()

{

Security.addProvider(new com.sun.crypto.provider.SunJCE());

try {

//实例化支持DES算法的密匙生成器(算法名称需按规定,负责抛出异常)

keygen = KeyGenerator.getInstance("DESede");

//生成密匙

deskey = keygen.generateKey();

//生成Cipher对象,指定其支持DES算法

c = Cipher.getInstance("DESede");

} catch (NoSuchAlgorithmException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} catch (NoSuchPaddingException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

/**

* 对指定字符串加密

* @param str

* @return

*/

public byte[] createEncryptor(String str)

{

try {

//根据密匙,对Cipher对象进行初始化,ENCRYPT_MODE表示加密模式

c.init(Cipher.ENCRYPT_MODE, deskey);

byte[] src = str.getBytes();

//加密,结果保存进cipherByte

cipherByte = c.doFinal(src);

} catch (InvalidKeyException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} catch (IllegalBlockSizeException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} catch (BadPaddingException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

return cipherByte;

}

public byte[] createDecryptor(byte[] buff)

{

try {

//根据密匙,对Cipher对象进行初始化,ENCRYPT_MODE 表示解密模式

c.init(Cipher.DECRYPT_MODE, deskey);

//得到明文,存入cipherByte字符数组

cipherByte = c.doFinal(buff);

} catch (InvalidKeyException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} catch (IllegalBlockSizeException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} catch (BadPaddingException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

return cipherByte;

}

 

/**

* @param args

*/

public static void main(String[] args) {

// TODO Auto-generated method stub

SecurityDES des = new SecurityDES();

String msg = "sky人皇";

System.out.println("明文:"+msg);

byte[] enc = des.createEncryptor(msg);

System.out.println("密文:"+new String(enc));

byte[] dec = des.createDecryptor(enc);

System.out.println("解密:"+new String(dec));

}

 

}

 

////////////AES对称加密

package com.security;

 

import java.security.InvalidKeyException;

import java.security.NoSuchAlgorithmException;

import java.security.Security;

 

import javax.crypto.BadPaddingException;

import javax.crypto.Cipher;

import javax.crypto.IllegalBlockSizeException;

import javax.crypto.KeyGenerator;

import javax.crypto.NoSuchPaddingException;

import javax.crypto.SecretKey;

 

/**

 * AES 高级加密标准(Advanced Encryption Standard)的缩写 //对称加密

 * @author Administrator

 *

 */

public class SecurityAES {

 

//KeyGenerator提供对称

private KeyGenerator keygen;

//SecretKey负责保存堆成密匙

private SecretKey deskey;

//Cipher负责完成加密和解密工作

private Cipher c;

//该字节数组负责保存加密的结果

private byte[] cipherByte;

public SecurityAES()

{

Security.addProvider(new com.sun.crypto.provider.SunJCE());

try {

//实例化支持DES算法的密匙生成器(算法名称需按规定,负责抛出异常)

keygen = KeyGenerator.getInstance("AES");

//生成密匙

deskey = keygen.generateKey();

//生成Cipher对象,指定其支持DES算法

c = Cipher.getInstance("AES");

} catch (NoSuchAlgorithmException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} catch (NoSuchPaddingException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

/**

* 对指定字符串加密

* @param str

* @return

*/

public byte[] createEncryptor(String str)

{

try {

//根据密匙,对Cipher对象进行初始化,ENCRYPT_MODE表示加密模式

c.init(Cipher.ENCRYPT_MODE, deskey);

byte[] src = str.getBytes();

//加密,结果保存进cipherByte

cipherByte = c.doFinal(src);

} catch (InvalidKeyException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} catch (IllegalBlockSizeException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} catch (BadPaddingException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

return cipherByte;

}

public byte[] createDecryptor(byte[] buff)

{

try {

//根据密匙,对Cipher对象进行初始化,ENCRYPT_MODE 表示解密模式

c.init(Cipher.DECRYPT_MODE, deskey);

//得到明文,存入cipherByte字符数组

cipherByte = c.doFinal(buff);

} catch (InvalidKeyException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} catch (IllegalBlockSizeException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} catch (BadPaddingException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

return cipherByte;

}

 

/**

* @param args

*/

public static void main(String[] args) {

// TODO Auto-generated method stub

SecurityDES des = new SecurityDES();

String msg = "sky人皇";

System.out.println("明文:"+msg);

byte[] enc = des.createEncryptor(msg);

System.out.println("密文:"+new String(enc));

byte[] dec = des.createDecryptor(enc);

System.out.println("解密:"+new String(dec));

}

 

}


分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics