java 加密解密简单实现
加密算法有很多种:这里只大约列举几例:
1:消息摘要:(数字指纹):既对一个任意长度的一个数据块进行计算,产生一个唯一指纹。MD5/SHA1
发送给其他人你的信息和摘要,其他人用相同的加密方法得到摘要,最后进行比较摘要是否相同。

2:单匙密码体制:DES:比较简便高效,密钥简短,加解密速度快,破译极其困难,但其安全性依赖于密匙的安全性。
DESData Encryption Standard)是发明最早的最广泛使用的分组对称加密算法。DES算法的入口参数有三个:KeyDataMode。其中Key8个字节共64位,是DES算法的工作密钥;Data也为8个字节64位,是要被加密或被解密的数据;ModeDES的工作方式,有两种:加密或解密

3:数字签名:就是信息发送者用其私钥对从所传报文中提取出的特征数据(或称数字指纹)进行RSA算法操作,以保证发信人无法抵赖曾发过该信息(即不可抵赖性),同时也确保信息报文在经签名后末被篡改(即完整性)。当信息接收者收到报文后,就可以用发送者的公钥对数字签名进行验证。
代表:DSA

4:非对称密匙密码体制(公匙体系):加密密匙不同于解密密匙,加密密匙公之于众,谁都可以使用,解密密匙只有解密人自己知道。代表:RSA
下面是对上面几个例子进行的简单实现:
Java代码
1. package test;   
2. import java.io.FileInputStream;   
3. import java.io.FileOutputStream;   
4. import java.io.IOException;   
5. import java.io.ObjectInputStream;   
6. import java.io.ObjectOutputStream;   
7. import java.security.*;   
8. import&pto.Cipher;   
9. import&pto.KeyGenerator;   
10. import&pto.SecretKey;   
11. /** 
12.  * 加密解密 
13.  *   
14.  * @author shy.qiu 
15.  * @since  blog.csdn/qiushyfm 
16.  */ 
17. public class CryptTest {   
18.     /** 
19.      * 进行MD5加密 
20.      *   
21.      * @param info 
22.      *            要加密的信息 
23.      * @return String 加密后的字符串 
24.      */ 
25.     public String encryptToMD5(String info) {   
26.         byte[] digesta = null;   
27.         try {   
28.             // 得到一个md5的消息摘要   
29.             MessageDigest alga =&Instance("MD5");   
30.             // 添加要进行计算摘要的信息   
31.             alga.Bytes());   
32.             // 得到该摘要   
33.             digesta = alga.digest();   
34.         } catch (NoSuchAlgorithmException e) {   
35.             e.printStackTrace();   
36.         }   
37.         // 将摘要转为字符串   
38.         String rs = byte2hex(digesta);   
39. java源代码加密        return rs;   
40.     }   
41.     /** 
42.      * 进行SHA加密 
43.      *   
44.      * @param info 
45.      *            要加密的信息 
46.      * @return String 加密后的字符串 
47.      */ 
48.     public String encryptToSHA(String info) {   
49.         byte[] digesta = null;   
50.         try {   
51.             // 得到一个SHA-1的消息摘要   
52.             MessageDigest alga =&Instance("SHA-1");   
53.             // 添加要进行计算摘要的信息   
54.             alga.Bytes());   
55.             // 得到该摘要   
56.             digesta = alga.digest();   
57.         } catch (NoSuchAlgorithmException e) {   
58.             e.printStackTrace();   
59.         }   
60.         // 将摘要转为字符串   
61.         String rs = byte2hex(digesta);   
62.         return rs;   
63.     }   
64.     // //////////////////////////////////////////////////////////////////////////   
65.     /** 
66.      * 创建密匙 
67.      *   
68.      * @param algorithm 
69.      *            加密算法,可用 DES,DESede,Blowfish 
70.      * @return SecretKey 秘密(对称)密钥 
71.      */ 
72.     public SecretKey createSecretKey(String algorithm) {   
73.         // 声明KeyGenerator对象   
74.         KeyGenerator keygen;   
75.         // 声明 密钥对象   
76.         SecretKey deskey = null;   
77.         try {   
78.             // 返回生成指定算法的秘密密钥的 KeyGenerator 对象   
79.             keygen =&Instance(algorithm);   
80.             // 生成一个密钥   
81.             deskey =&ateKey();   
82.         } catch (NoSuchAlgorithmException e) {   
83.             e.printStackTrace();   
84.         }   
85.         // 返回密匙   
86.         return deskey;   
87.     }   
88.     /** 
89.      * 根据密匙进行DES加密 
90.      *   
91.      * @param key 
92.      *            密匙 
93.      * @param info 
94.      *            要加密的信息 
95.      * @return String 加密后的信息 
96.      */ 
97.     public String encryptToDES(SecretKey key, String info) {   
98.         // 定义 加密算法,可用 DES,DESede,Blowfish   
99.         String Algorithm = "DES";   
100.         // 加密随机数生成器 (RNG),(可以不写)   
101.         SecureRandom sr = new SecureRandom();   
102.         // 定义要生成的密文   
103.         byte[] cipherByte = null;   
104.         try {   
105.             // 得到加密/解密器   
106.             Cipher c1 =&Instance(Algorithm);   
107.             // 用指定的密钥和模式初始化Cipher对象   
108.             // 参数:(ENCRYPT_MODE, DECRYPT_MODE, WRAP_MODE,UNWRAP_MODE)   
109.             c1.init(Cipher.ENCRYPT_MODE, key, sr);   
110.             // 对要加密的内容进行编码处理,   
111.             cipherByte = c1.Bytes());   
112.         } catch (Exception e) {   
113.             e.printStackTrace();   
114.         }   
115.         // 返回密文的十六进制形式   
116.         return byte2hex(cipherByte);   
117.     }   
118.     /** 
119.      * 根据密匙进行DES解密 
120.      *   
121.      * @param key 
122.      *            密匙 
123.      * @param sInfo 
124.      *            要解密的密文 

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。