Java代码Base64加密解密使⽤
代码Base64加密解密使⽤
程序中有时候需要把⽤户名和密码保存到本地,下次登录时⾃动获取,如果是直接使⽤保存,肯定容易泄露密码,这就需要经过加密,但是登录时还要获取密码,这就需要解密,这个Base64类就能简单的实现这个功能。
⼀.简单介绍⼀下的知识:
不想讲太多⾼深的知识,讲⼀点基础的。
(⼀)简单的java加密算法有:
1. 严格地说,属于编码格式,⽽⾮加密算法
2.MD5(Message Digest algorithm 5,信息摘要算法)
3.SHA(Secure Hash Algorithm,安全散列算法)
4.HMAC(Hash Message Authentication Code,散列消息鉴别码)
上⾯的加密我也是⽤得⽐较少,其实⽤起来并不难,使⽤的话,都要导⼊对应的jar,具体的操作代码⽹上都是可以查到的,发⽣类错误就是导的包不对!每⼀种jar包都有不同的版本!
(⼆)对称算法和不对称算法
1. 对称加密(Symmetric Cryptography)
对称加密是最快速、最简单的⼀种加密⽅式,加密(encryption)与解密(decryption)⽤的是同样的密钥(secret key),这种⽅法在密码学中叫做对称加密算法。对称加密有很多种算法,由于它效率很⾼,所以被⼴泛使⽤在很多加密协议的核⼼当中。
对称加密解密时间都是⾮常快的。
2.⾮对称加密(Asymmetric Cryptography)
⾮对称加密为数据的加密与解密提供了⼀个⾮常安全的⽅法,它使⽤了⼀对密钥,公钥(public key)和私钥(private key)。私钥只能由⼀⽅安全保管,不能外泄,⽽公钥则可以发给任何请求它的⼈。⾮对称加密使⽤这对密钥中的⼀个(公钥)进⾏加密,⽽解密则需要另⼀个(私钥)密钥。
⾮对称解密是⾮常慢的,很简单的数据可能都要⼏个⼩时!
3.常见的对称加密和⾮对称加密算法
(1)对称加密算法:
在对称加密算法中常⽤的算法有:DES、3DES、TDEA、Blowfish、RC2、RC4、RC5、IDEA、SKIPJACK、AES等。
DES(Data Encryption Standard):数据加密标准,速度较快,适⽤于加密⼤量数据的场合。
3DES(Triple DES):是基于DES,对⼀块数据⽤三个不同的密钥进⾏三次加密,强度更⾼。
AES(Advanced Encryption Standard):⾼级加密标准,是下⼀代的加密算法标准,速度快,安全级别⾼;
(2)⾮对称常⽤算法
RSA、Elgamal、背包算法、Rabin、D-H、ECC(椭圆曲线加密算法)。
(三)其他
Base64还不算加密算法,其实就是⼀种编码转换;
MD5、SHA是⾮对称加密算法
⼆.Base64的编码⽰例
(⼀)导⼊jar包:BASE64Decoder jar包
(⼆)代码
1.加密代码:
2.解密代码:
java源代码加密3.具体调⽤代码⽰例加密前字符串:String key ="mykey"; byte[] bt = key .getBytes(); 加密后字符串:String newKey=(new BASE64Encoder()).encodeBuffer(bt);
1
2
3加密后的字符串:String newkey="*****"; byte[] bt = (new BASE64Decoder()).decodeBuffer(key); 解密后的字符串: String key=new String(bt); //如果出现乱码可以改成: String(bt, "utf-8")或 gbk
1
2
3package ption;import Decoder.BASE64Decoder;import Decoder.BASE64Encoder;import java.io.IOException;/** * 加密解密程序⽰例 * <p/> * <p/> * /** * 编码⼯具类 * 1.将byte[]转为各种进制的字符串 * 2.base 64 encode * 3.base 64 decode * 4.获取byte[]的md5值 * 5.获取字符串md5值 * 6.结合base64实现md5加密 * 7.AES 加密 * 8.AES 加密为base 64 code * 9.AES 解密 * 10.将base 64 code AES 解密 * * @author uikoo9 * @version 0.0.7.20140601 */public class EncryptionDemo { public static void main (String[] args) { String s = "我的字符串seasonszx"; System.out.println("原字符串:" + s); String encryptString = encryptBASE64(s); System.out.println("加密后:" + encryptString); System.out.println("解密后:" + decryptBASE64(encryptString)); } /** * BASE64解密 * * @param key * @return * @throws Exception */ public static String decryptBASE64(String key) { byte [] bt; try { bt = (new BASE64Decoder()).decodeBuffer(key); return new String(bt);//如果出现乱码可以改成: String(bt, "utf-8")或 gbk } catch (IOException e) {
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
程序运⾏后结果:
原字符串:我的字符串seasonszx
加密后:5oiR55qE5a2X56ym5Liyc2Vhc29uc3p4
解密后:我的字符串seasonszx
这就是Base64加密解密,加密后的字符串,⼀般都是不能识别的。同时也是很⽅便解密。也可以把上⾯的代码封装成⼀个⼯具类以后使⽤。
其他⼏种加密算法,⼤家有兴趣也可以去试试!
共勉:我有⼿有脚,⾝体健康,只要努⼒,⼀定可以⽐别⼈活得更好。 } catch (IOException e) { e.printStackTrace(); return ""; } } /** * BASE64加密 * * @param key * @return * @throws Exception */ public static String encryptBASE64(String key) { byte [] bt = Bytes(); return (new BASE64Encoder()).encodeBuffer(bt); }}
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论