java 加密

import javax.crypto.Cipher;
import javax.crypto.KeyGenerator;
import javax.crypto.SecretKey;
/**
*加密解密类

*/
public class Eryptogram
{
    private static String Algorithm ="DES";
    static boolean debug =false ;
    /**
    *构造子注解.
    */
    public Eryptogram ()
    {
    }
    /**
    *生成密钥
    *@returnbyte[]返回生成的密钥
    *@throwsexception扔出异常.
    */
    public static byte []getSecretKey ()throws Exception
    {
        KeyGenerator keygen =KeyGenerator.getInstance (Algorithm );
        SecretKey deskey =keygen.generateKey ();
        if (debug )System.out.println ("生成密钥:"+byte2hex (deskey.getEncoded ()));
        return deskey.getEncoded ();
    }
    /**
    *将指定的数据根据提供的密钥进行加密
    *@paraminput需要加密的数据
    *@paramkey密钥
    *@returnbyte[]加密后的数据
    *@throwsException
    */
    public static byte []encryptData (byte []input ,byte []key )throws Exception
    {
        SecretKey deskey =new javax.crypto.spec.SecretKeySpec (key ,Algorithm );
        if (debug )
        {
            System.out.println ("加密前的二进串:"+byte2hex (input ));
            System.out.println ("加密前的字符串:"+new String (input ));
        }
        Cipher c1 =Cipher.getInstance (Algorithm );
        c1.init (Cipher.ENCRYPT_MODE ,deskey );
        byte []cipherByte =c1.doFinal (input );
        if (debug )System.out.println ("加密后的二进串:"+byte2hex (cipherByte ));
        return cipherByte ;
    }
    /**
    *将给定的已加密的数据通过指定的密钥进行解密
    *@paraminput待解密的数据
    *@paramkey密钥
    *@returnbyte[]解密后的数据
    *@throwsException
    */
    public static byte []decryptData (byte []input ,byte []key )throws Exception
    {
        SecretKey deskey =new javax.crypto.spec.SecretKeySpec (key ,Algorithm );
        if (debug )System.out.println ("解密前的信息:"+byte2hex (input ));
        Cipher c1 =Cipher.getInstance (Algorithm );
        c1.init (Cipher.DECRYPT_MODE ,deskey );
        byte []clearByte =c1.doFinal (input );
        if (debug )
        {
            System.out.println ("解密后的二进串:"+byte2hex (clearByte ));
            System.out.println ("解密后的字符串:"+(new String (clearByte )));
        }
        return clearByte ;
    }
    /**
    *字节码转换成16进制字符串
    *@parambyte[]b输入要转换的字节码
    *@returnString返回转换后的16进制字符串
    */
    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 ();
    }
   
    public static void main (String []args )
    {
        try
        {
            debug =false ;
            Eryptogram etg =new Eryptogram ();
            byte []key =etg.getSecretKey ();   // 生成密钥
             System.out.println ("密钥:"+key );
            String aa ="1234567";       // 待加密的字符
            byte []data =aa.getBytes ();
             System.out.println (data );
            byte []en =etg.encryptData (data ,key );    //  加密后的字符
             System.out.println ("加密后字符"+new String (en ));
            byte []de =etg.decryptData (en ,key );      //  解密后的字符
             System.out.println ("解密后字符"+new String (de ));
        }
        catch (Exception e )
        {
            e.printStackTrace ();
        }
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值