随笔 - 145  文章 - 0  评论 - 6  阅读 - 18万

UUID,加密解密算法的使用

注意的地方:

Base64Encoder,Base64Decoder并不属于JDK标准库范畴,但是又包含在了JDK中

解决方法:按照如下方法设置Eclipse导入%JAVA_HOME%\jre\lib目录下的rt.jar包即可,Project->Properties,选择Java Build Path设置项,再选择Libraries标签,Add External Jars添加%JAVA_HOME%\jre\lib\rt.jar就可以使用啦!

如果在使用BASE64Decoder时遇到了这种情况:Access restriction : The type BASE64Decoder is not accessible due to restriction on required library C:\Program 
files\java\jre6\lib\rt.jar ,只需要在project build path中先移除JRE System Library,再添加库JRE System Library就行了

具体代码如下:

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
51
52
53
54
55
56
57
58
59
package leetcode;
 
import java.io.IOException;
import java.math.BigInteger;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.UUID;
 
import sun.misc.BASE64Decoder;
import sun.misc.BASE64Encoder;
 
public class Test12 {
 
    public static String getId(){
        //UUID java中不重复序列
        String id = UUID.randomUUID().toString();
        //System.out.println(id);
        //得到的这个序列号很长,可以用哈希码来表示
        int hashCode = Math.abs(id.hashCode());
        return hashCode+"";
    }
     
    //md5加密算法,单向加密,没有解密的
     
        public static String md5(String str){
            byte[] bytes = null;
            try {
                bytes = MessageDigest.getInstance("md5").digest(str.getBytes());//得到MD5的实例,再将字符串加密
            } catch (NoSuchAlgorithmException e) {
                e.printStackTrace();
            }
            return new BigInteger(1,bytes).toString(16);//把字节数组转化为正的bigInteger,然后变成16进制表示
        }
         
        //base64算法,解密,加密
        public static String base64Encode(String str){
            BASE64Encoder baseEncode = new BASE64Encoder();
            return baseEncode.encode(str.getBytes());//加密
        }
        public static String base64Decode(String str){
            BASE64Decoder baseDecoder = new BASE64Decoder();
            try {
                return new String(baseDecoder.decodeBuffer(str));//解密
            } catch (IOException e) {
                e.printStackTrace();
            }
            return null;
        }
 
     
    public static void main(String[] args) {
        System.out.println(getId());
        System.out.println("1234加密后:"+md5("1234"));
        String str = base64Encode("1234");
        System.out.println("1234加密后:"+str);
        System.out.println("解密后:"+base64Decode(str));
    }
 
}

 

运行结果如下:

888859973
1234加密后:81dc9bdb52d04dc20036dbd8313ed055
1234加密后:MTIzNA==
解密后:1234

posted on   wastonl  阅读(8759)  评论(0编辑  收藏  举报
编辑推荐:
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
< 2025年3月 >
23 24 25 26 27 28 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 1 2 3 4 5

点击右上角即可分享
微信分享提示