java 加密

package  com;

/** */ /**
 * @开发人   毛卓强
 * @开发时间 2007-11-28 17:21:19
 * @开发公司 长广信
 
*/

import    java.security. * ;   
import    javax.crypto. * ;   
  
public     class    jiami   
... {   
  
        
private   static   String   Algorithm   =   "DES";   //定义   加密算法,可用   DES,DESede,Blowfish   
        static  byte[]   key   =   "好好学习".getBytes();
        
static   boolean   debug   =   false;   
        
static   
        
...{   
                Security.addProvider(
new   com.sun.crypto.provider.SunJCE());   
        }
   
  
        
// 生成密钥, 注意此步骤时间比较长
    public static byte[] getKey() throws Exception ...{
        KeyGenerator keygen 
= KeyGenerator.getInstance(Algorithm);
        SecretKey deskey 
= keygen.generateKey();
        
if (debug)
            System.out.println(
"生成密钥:" + byte2hex(deskey.getEncoded()));
        
return deskey.getEncoded();
    }
   
  
        
// 加密
    public static byte[] encode(String inputstr) throws Exception ...{
        
byte[] input = inputstr.getBytes();
        SecretKey deskey 
= new javax.crypto.spec.SecretKeySpec(key, Algorithm);
        Cipher c1 
= Cipher.getInstance(Algorithm);
        c1.init(Cipher.ENCRYPT_MODE, deskey);
        
byte[] cipherByte = c1.doFinal(input);

        
return cipherByte;
    }
   
  
        
// 解密
        public   static   String   decode(byte[]   input)   
                
throws   Exception   
        
...{   
                SecretKey   deskey   
=   new   javax.crypto.spec.SecretKeySpec(key,   Algorithm);   
                Cipher   c1   
=   Cipher.getInstance(Algorithm);   
                c1.init(Cipher.DECRYPT_MODE,   deskey);   
                
byte[]   clearByte   =   c1.doFinal(input);   
                
return   new String(clearByte);   
        }
   
  
        
//md5()信息摘要,   不可逆   
        public   static   byte[]   md5(byte[]   input)   
                
throws   Exception   
        
...{   
                java.security.MessageDigest   alg   
=   java.security.MessageDigest.   
                        getInstance(
"MD5");   //or   "SHA-1"   
                if   (debug)   
                
...{   
                        System.out.println(
"摘要前的二进串:"   +   byte2hex(input));   
                        System.out.println(
"摘要前的字符串:"   +   new   String(input));   
                }
   
                alg.update(input);   
                
byte[]   digest   =   alg.digest();   
                
if   (debug)   
                        System.out.println(
"摘要后的二进串:"   +   byte2hex(digest));   
                
return   digest;   
        }
   
  
        
//字节码转换成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)   
                
throws   Exception   
        
...{   
                debug   
=   true;   

//              md5("测试加密".getBytes()); 
            System.out.println(encode("测试加密")); 
            System.out.println(
"dddd"+decode(encode("测试加密")));   

                
        }
   
  
}

 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值