欢迎访问宙启技术站
智能推送

Java加密算法函数

发布时间:2023-06-23 11:11:19

Java是一种最流行的编程语言之一,它有许多功能强大的加密算法函数。在这篇文章中,我们将涉及一些常用的加密算法函数,包括MD5、SHA-1、AES等。

1. MD5加密算法函数

MD5是一种广泛使用的加密算法,它可以将任何长度的消息转换成一个128比特的 指纹。Java中的MD5加密算法函数如下:

import java.security.*;
import java.math.*;

public class MD5 {
   public static String getMD5(String input) {
       try {
           MessageDigest md = MessageDigest.getInstance("MD5");
           byte[] messageDigest = md.digest(input.getBytes());
           BigInteger number = new BigInteger(1, messageDigest);
           String hashtext = number.toString(16);
           while (hashtext.length() < 32) {
               hashtext = "0" + hashtext;
           }
           return hashtext;
       }
       catch (NoSuchAlgorithmException e) {
           throw new RuntimeException(e);
       }
   }
}

2. SHA-1加密算法

SHA-1是另一种广泛使用的加密算法,它可以将任何长度的消息转换成一个160比特的 指纹。Java中的SHA-1加密算法函数如下:

import java.security.*;
import java.math.*;

public class SHA1 {
   public static String sha1(String input) {
       try {
           MessageDigest md = MessageDigest.getInstance("SHA-1");
           byte[] messageDigest = md.digest(input.getBytes());
           BigInteger number = new BigInteger(1, messageDigest);
           String hashtext = number.toString(16);
           while (hashtext.length() < 32) {
               hashtext = "0" + hashtext;
           }
           return hashtext;
       }
       catch (NoSuchAlgorithmException e) {
           throw new RuntimeException(e);
       }
   }
}

3. AES加密算法函数

AES是一种高级加密标准,它是一种对称加密算法,可以加密和解密消息。Java中的AES加密算法函数如下:

import javax.crypto.*;
import javax.crypto.spec.*;
import java.security.*;

public class AES {
   private static String IV = "AAAAAAAAAAAAAAAA";
   private static String key = "0123456789abcdef";

   public static String encrypt(String input) {
       try {
           Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding", "SunJCE");
           SecretKeySpec key = new SecretKeySpec(key.getBytes("UTF-8"), "AES");
           cipher.init(Cipher.ENCRYPT_MODE, key,new IvParameterSpec(IV.getBytes("UTF-8")));
           return Base64.getEncoder().encodeToString(cipher.doFinal(input.getBytes("UTF-8")));
       }
       catch (Exception e) {
           e.printStackTrace();
       }
       return null;
   }

   public static String decrypt(String input) {
       try {
           Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding", "SunJCE");
           SecretKeySpec key = new SecretKeySpec(key.getBytes("UTF-8"), "AES");
           cipher.init(Cipher.DECRYPT_MODE, key,new IvParameterSpec(IV.getBytes("UTF-8")));
           return new String(cipher.doFinal(Base64.getDecoder().decode(input)));
       }
       catch (Exception e) {
           e.printStackTrace();
       }
       return null;
   }
}

总结

Java提供了许多功能强大的加密算法函数,这些函数可以保护我们的数据免受不良用户的攻击。通过使用这些函数,我们可以确保我们的数据安全,并预防恶意攻击。不过,在使用这些函数时,我们仍然需要保持警惕,了解加密算法的局限性,并选择最适合自己需求的加密技术。