MD5和AES在项目中的使用方式与区别

本文介绍了MD5和AES两种常见的加密算法。MD5属于散列算法,不可逆,常用于数据校验;而AES是对称加密算法,加密解密速度快,适合大量数据加密。在项目中,MD5用于生成固定长度的哈希值,AES则用于敏感数据的保护。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

算法的分类:

        1.对称性加密算法:AES、DES

                对称性加密算法就是加密方和解密方使用相同的密钥进行加密和解密。数据发送方通过 

密钥对数据进行加密生成密文,发送给接送方,接收方收到密文数据后,通过密钥解密,将其恢复

成明文数据。

                优点:对称加密算法算法计算量小,加密速度快,效率高。

                缺点:密钥丢失,数据就不在安全。

        2.散列算法:MD5、SHA1 

                散列算法,又称为哈希函数,是一种单向加密算法。对不同长度的输入数据,产生固定 

 的输出结果。 

        3.非对称算法:RSA、DSA

                非对称加密就是加密和解密所使用的不是同一个密钥,通常有两个密钥,称为公钥和私钥,它们两个必须配对使用,否则不能够解密。

MD5、AES:

        MD5是散列算法,是一种单向的加密算法,所以MD5不可逆。

        1.添加MD5的相关依赖

   
    <dependency>
      <groupId>com.jfinal</groupId>
      <artifactId>jfinal</artifactId>
      <version>5.0.2</version>
    </dependency>
    
import com.jfinal.kit.HashKit;

public class MDAES {
	public static void main(String[] args) {
		String passwd="123456";
		String md5 = HashKit.md5(passwd);
		System.out.println(md5);
	}
}
结果:e10adc3949ba59abbe56e057f20f883e

        2.自定义工具类 

AES是对称性加密算法,加密和解密使用相同的密钥,双向加密算法。

1.添加AES的相关依赖

2.编写工具类

public static byte[] decrypt(byte[] encrypted, byte[] aesKey){
		try {
			if(aesKey.length != 32){
				throw new RuntimeException("IllegalAesKey, aesKey's length must be 32");
			}
			Cipher cipher = Cipher.getInstance("AES/CBC/NoPadding");
            SecretKeySpec key_spec = new SecretKeySpec(aesKey, "AES");
            IvParameterSpec iv = new IvParameterSpec(Arrays.copyOfRange(aesKey, 0, 16));
            cipher.init(Cipher.DECRYPT_MODE, key_spec, iv);
            return PKCS7Encoder.decode(cipher.doFinal(encrypted));
		} catch (Exception e) {
			throw new RuntimeException(e.getMessage(),e);
		}
	}
import com.jfinal.kit.AesKit;
import com.jfinal.kit.Base64Kit;

public class MDAES {
	public static void main(String[] args) {
		String passwd="123456";
		String encode = Base64Kit.encode(AesKit.encrypt(passwd, "abcdabcdabcdabcdabcdabcdabcdabcd"));
		System.out.println(encode);
		String str = AesKit.decryptToStr(Base64Kit.decode(encode), "abcdabcdabcdabcdabcdabcdabcdabcd");
		System.out.println(str);
	}
}
结果:22zt5VKP0fOlpQA4QWFXGEoFhfJr4WpvvDm6H82c3HA=
      123456

     

           

                 

    

                              

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值