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

Java函数:加密与解密函数实例

发布时间:2023-06-07 22:09:16

在数据交互中,安全性是非常重要的,因为在传输过程中很可能会遭到黑客的攻击或者信息泄露。因此,在数据交互中经常会用到加密和解密的技术来保障数据的安全性。本篇文章将介绍Java中的加密和解密函数。

Java中有一些加密和解密的常用函数,比如MD5加密、SHA加密、DES加密等等。下面我们来详细介绍这些函数的使用方法。

1. MD5加密函数

MD5是一种哈希算法,可以将任意长度的数据处理为固定长度的输出,通常用来验证数据的完整性。MD5算法的处理过程非常简单,并且无法通过哈希值得到原始数据。MD5加密函数在Java中的使用方法如下:

import java.security.MessageDigest;

public static String  MD5(String str) {
    MessageDigest md = null;
    try {
        md = MessageDigest.getInstance("MD5");
    } catch (Exception e) {
        e.printStackTrace();
    }
    md.update(str.getBytes());
    byte[] b = md.digest();
    StringBuffer buf = new StringBuffer("");
    int offset = 0;
    for (int i = 0; i < b.length; i++) {
        offset = b[i];
        if (offset < 0) {
            offset += 256;
        }
        if (offset < 16) {
            buf.append("0");
        }
        buf.append(Integer.toHexString(offset));
    }
    return buf.toString();
}

2. SHA加密函数

SHA是一种哈希算法,可以将任意长度的数据处理为固定长度的输出,通常用来验证数据的完整性和安全性。SHA加密函数在Java中的使用方法如下:

import java.security.MessageDigest;

public static String SHA(String str) {
    MessageDigest md = null;
    try {
        md = MessageDigest.getInstance("SHA-256");
    } catch (NoSuchAlgorithmException e) {
        e.printStackTrace();
    }
    md.update(str.getBytes());
    byte[] b = md.digest();
    StringBuffer buf = new StringBuffer("");
    int offset = 0;
    for (int i = 0; i < b.length; i++) {
        offset = b[i];
        if (offset < 0) {
            offset += 256;
        }
        if (offset < 16) {
            buf.append("0");
        }
        buf.append(Integer.toHexString(offset));
    }
    return buf.toString();
}

3. DES加密函数

DES是一种对称加密算法,加密和解密用的是同一个密钥,通常用于保护对称密钥的安全性。在Java中,DES加密函数可以使用javax.crypto包中的Cipher类进行加密和解密操作。DES加密函数在Java中的使用方法如下:

import javax.crypto.Cipher;
import javax.crypto.SecretKey;
import javax.crypto.SecretKeyFactory;
import javax.crypto.spec.DESKeySpec;
import javax.crypto.spec.IvParameterSpec;

public static String DES(String str, String key) {
    try {
        //构造一个DESKeySpec密钥
        DESKeySpec desKeySpec = new DESKeySpec(key.getBytes("UTF-8"));
        //密钥工厂生成DES密钥
        SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES");
        SecretKey secretKey = keyFactory.generateSecret(desKeySpec);
        //初始化Cipher对象,加密模式
        Cipher cipher = Cipher.getInstance("DES/CBC/PKCS5Padding");
        cipher.init(Cipher.ENCRYPT_MODE, secretKey, new IvParameterSpec(key.getBytes()));
        //加密
        byte[] result = cipher.doFinal(str.getBytes());
        return Base64.encodeToString(result, Base64.DEFAULT);
    } catch (Exception e) {
        e.printStackTrace();
    }
    return null;
}

public static String DESDecrypt(String str, String key) {
    try {
        //构造一个DESKeySpec密钥
        DESKeySpec desKeySpec = new DESKeySpec(key.getBytes("UTF-8"));
        //密钥工厂生成DES密钥
        SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES");
        SecretKey secretKey = keyFactory.generateSecret(desKeySpec);
        //初始化Cipher对象,解密模式 
        Cipher cipher = Cipher.getInstance("DES/CBC/PKCS5Padding");
        cipher.init(Cipher.DECRYPT_MODE, secretKey, new IvParameterSpec(key.getBytes()));
        //解密
        byte[] result = cipher.doFinal(Base64.decode(str, Base64.DEFAULT));
        return new String(result);
    } catch (Exception e) {
        e.printStackTrace();
    }
    return null;
}

以上是Java中常用的加密和解密函数,可以根据自己的需求选择合适的加密方法。使用加密和解密函数可以保障数据的安全性,避免敏感数据在传输过程中泄露。