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

Java加密解密函数大全:保障数据安全

发布时间:2023-05-20 05:58:00

Java加密解密函数是为了保障数据安全而开发的一种技术。在现代社会中,隐私数据泄露的事件屡屡发生,由此造成的不良影响也越来越大。Java加密解密函数应运而生,可以帮助用户对敏感数据进行加密存储或传输,从而保障数据安全。下面是Java加密解密函数大全,旨在提供一些参考和帮助。

1. DES(Data Encryption Standard)加密

DES是一种对称加密算法,通过加密和解密使用相同的密钥来保护数据。Java提供了DES加密和解密函数。下面是一个DES加密的例子:

public static String DesEncrypt(String message, String key) {
        try {
            SecretKeySpec secretKeySpec = new SecretKeySpec(key.getBytes(), "DES");
            Cipher cipher = Cipher.getInstance("DES/ECB/PKCS5Padding");
            cipher.init(Cipher.ENCRYPT_MODE, secretKeySpec);
            byte[] result = cipher.doFinal(message.getBytes());
            return Base64.getEncoder().encodeToString(result);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }

2. AES(Advanced Encryption Standard)加密

AES是一种可靠、高效的加密算法,其加密强度高于DES。Java提供了AES加密和解密函数。下面是一个AES加密的例子:

public static String AesEncrypt(String message, String key) {
        try {
            SecretKeySpec secretKeySpec = new SecretKeySpec(key.getBytes(), "AES");
            Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding");
            cipher.init(Cipher.ENCRYPT_MODE, secretKeySpec);
            byte[] result = cipher.doFinal(message.getBytes());
            return Base64.getEncoder().encodeToString(result);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }

3. RSA(Rivest–Shamir–Adleman)加密

RSA是一种非对称加密算法,使用公钥加密、私钥解密,或者使用私钥加密、公钥解密。Java提供了RSA加密和解密函数。下面是一个RSA加密的例子:

public static String RsaEncrypt(String message, PublicKey publicKey) {
        try {
            Cipher cipher = Cipher.getInstance("RSA/ECB/PKCS1Padding");
            cipher.init(Cipher.ENCRYPT_MODE, publicKey);
            byte[] result = cipher.doFinal(message.getBytes());
            return Base64.getEncoder().encodeToString(result);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }

4. MD5(Message Digest 5)加密

MD5是一种消息摘要算法,其作用是将一段任意长度的字节串映射成一个128位的大整数。Java提供了MD5加密函数。下面是一个MD5加密的例子:

public static String Md5Encrypt(String message) {
        try {
            MessageDigest messageDigest = MessageDigest.getInstance("MD5");
            byte[] result = messageDigest.digest(message.getBytes());
            return new BigInteger(1, result).toString(16);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }

5. SHA(Secure Hash Algorithm)加密

SHA是一种安全哈希算法,其作用是将一段任意长度的字节串映射成一个固定长度的大整数。Java提供了SHA加密函数。下面是一个SHA加密的例子:

public static String ShaEncrypt(String message) {
        try {
            MessageDigest messageDigest = MessageDigest.getInstance("SHA");
            byte[] result = messageDigest.digest(message.getBytes());
            return new BigInteger(1, result).toString(16);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }

6. HMAC(Hash-based Message Authentication Code)加密

HMAC是一种基于哈希函数和密钥的消息认证码,其作用是验证某个消息的完整性和真实性。Java提供了HMAC加密函数。下面是一个HMAC加密的例子:

public static String HmacEncrypt(String message, String key) {
        try {
            SecretKeySpec secretKeySpec = new SecretKeySpec(key.getBytes(), "HmacSHA256");
            Mac mac = Mac.getInstance("HmacSHA256");
            mac.init(secretKeySpec);
            byte[] result = mac.doFinal(message.getBytes());
            return new BigInteger(1, result).toString(16);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }

7. BASE64(Basic Encoding Rules 64)编码

BASE64是一种基于64个字符的编码方式,其作用是将二进制数据转换成文本格式。Java提供了BASE64编码和解码函数。下面是一个BASE64编码的例子:

public static String Base64Encode(String message) {
        try {
            return Base64.getEncoder().encodeToString(message.getBytes());
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }

8. AES/GCM(Galois/Counter Mode)加密

AES/GCM是一种高级加密标准和加性密码分组模式,其作用是在加密的同时提供完整性和数据源认证。Java提供了AES/GCM加密和解密函数。下面是一个AES/GCM加密的例子:

public static String AesGcmEncrypt(String message, String key) {
        try {
            SecretKeySpec secretKeySpec = new SecretKeySpec(key.getBytes(), "AES");
            Cipher cipher = Cipher.getInstance("AES/GCM/NoPadding");
            cipher.init(Cipher.ENCRYPT_MODE, secretKeySpec);
            byte[] result = cipher.doFinal(message.getBytes());
            byte[] iv = cipher.getIV();
            byte[] output = new byte[result.length + iv.length];
            System.arraycopy(iv, 0, output, 0, iv.length);
            System.arraycopy(result, 0, output, iv.length, result.length);
            return Base64.getEncoder().encodeToString(output);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }

9. SM4(国密算法)加密

SM4是一种对称加密算法,其加密强度高于DES和AES,成为国密算法。Java提供了SM4加密和解密函数。下面是一个SM4加密的例子:

public static String SM4Encrypt(String message, String key) {
        try {
            SecretKeySpec secretKeySpec = new SecretKeySpec(key.getBytes(), "SM4");
            Cipher cipher = Cipher.getInstance("SM4/ECB/NoPadding");
            cipher.init(Cipher.ENCRYPT_MODE, secretKeySpec);
            byte[] result = cipher.doFinal(message.getBytes());
            return Base64.getEncoder().encodeToString(result);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }

10. JWT(JSON Web Tokens)加密

JWT是一种安全的身份验证和授权方式,其使用JSON Web Tokens对用户身份进行验证。Java提供了JWT加密和解密函数。下面是一个JWT加密的例子:

public static String JWTEncrypt(Map<String, Object> header, Map<String, Object> payload, String key) {
        try {
            String encodedHeader = Base64.getUrlEncoder().withoutPadding().encodeToString(new Gson().toJson(header).getBytes());
            String encodedPayload = Base64.getUrlEncoder().withoutPadding().encodeToString(new Gson().toJson(payload).getBytes());
            String signature = HMACSHA256(encodedHeader + "." + encodedPayload, key);
            return encodedHeader + "." + encodedPayload + "." + signature;
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }

综上所述,Java加密解密函数是一种保障数据安全的技术,它可以帮助用户对敏感数据进行加密存储或传输。Java提供了多种加密解密算法,每种算法都有其适用场景和优势。在实际应用中,应选择适合自己的加密算法并合理选取密钥长度,从而提高数据安全性。