Java加密

异或加密:

异或符号 ^

规则:同为0, 异为1。一个数,两次异或之后,是原数本身

结论:异或一次是加密,异或二次是解密 (异或加密是可逆的)

示例代码

public class EncryptionTest
{

    public static String xor(String input){
        //  1.将字符串装为字符数组
        char[] chars = input.toCharArray();
        for (int i = 0; i <chars.length ; i++)
        {
            //  2.将每个字符进行异或操作
            chars[i] = (char) (chars[i]^20);
        }
        return new String(chars);
    }

    @Test
    public void test(){
        String abc="abc";
        abc= xor(abc); // 第一次异或操作 相当于加密操作
        System.out.println(abc);

        abc = xor(abc); // 第二次异或操作 相当于解密操作
        System.out.println(abc);
    }

}

运行结果
在这里插入图片描述

MD5加密

MD5加密是不可逆的,安全性高。
在使用MD5之前需要导入第三方jar包,jar包下载地址:https://mvnrepository.com/artifact/commons-codec/commons-codec
maven依赖

<dependency>
            <groupId>commons-codec</groupId>
            <artifactId>commons-codec</artifactId>
            <version>1.11</version>
        </dependency>

示例代码

 public static String md5Encode(byte [] input){
        return DigestUtils.md5Hex(input);
    }



    @Test
    public void test2(){
        String a="hello";
        String s = md5Encode(a.getBytes());
        System.out.println(s);
    }

运行结果(十六进制的数)
在这里插入图片描述

sha256加密

sha256加密是不可逆的,安全性高。使用之前一样要到入commons-codec包 也就是md5需要导入的包
示例代码


    public static String sha256Encode(byte [] input){
        return DigestUtils.sha256Hex(input);
    }

    @Test
    public void test3(){
        String a="hello";
        String s = sha256Encode(a.getBytes());
        System.out.println(s);
    }

运行结果
在这里插入图片描述

base64加密解密

base64是jdk自带的,不需要导入第三jar包
base64是可逆的
示例代码

 //  base64解密
    public static byte[] base64Decode(String input){
        byte [] result= null;

        try
        {
            //  通过反射得到base64
            Class<?> clazz = Class.forName("com.sun.org.apache.xerces.internal.impl.dv.util.Base64");
            //  通过反射得到base64中加密的方法
            Method method=clazz.getMethod("decode", String.class);
            //  通过反射掉方法
            result =( byte [] ) method.invoke(null, input);

        }
        catch (Exception e)
        {
            e.printStackTrace();
        }

        return  result;

    }

    @Test
    public void test4(){
        String str="hello";
        String s = base64Encode(str.getBytes());
        System.out.println(s);  //  加密结果aGVsbG8=

        byte[] bytes = base64Decode("aGVsbG8=");
        System.out.println(new String(bytes)); //   解密结果hello

    }

运行结果
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值