Java中如何实现字符串的加密

发布时间:2025-05-02 01:40:03 作者:小樊
来源:亿速云 阅读:97

在Java中,有多种方法可以实现字符串的加密。以下是一些常用的加密算法和相应的实现方式:

1. Base64编码

Base64是一种常见的编码方式,虽然它不是加密算法,但可以用于对字符串进行简单的编码。

import java.util.Base64;

public class Base64Example {
    public static void main(String[] args) {
        String originalString = "Hello, World!";
        String encodedString = Base64.getEncoder().encodeToString(originalString.getBytes());
        System.out.println("Encoded String: " + encodedString);

        byte[] decodedBytes = Base64.getDecoder().decode(encodedString);
        String decodedString = new String(decodedBytes);
        System.out.println("Decoded String: " + decodedString);
    }
}

2. MD5哈希

MD5是一种广泛使用的哈希算法,用于生成固定长度的哈希值。

import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

public class MD5Example {
    public static void main(String[] args) {
        String originalString = "Hello, World!";
        try {
            MessageDigest md = MessageDigest.getInstance("MD5");
            byte[] hashBytes = md.digest(originalString.getBytes());
            StringBuilder sb = new StringBuilder();
            for (byte b : hashBytes) {
                sb.append(String.format("%02x", b));
            }
            String hashString = sb.toString();
            System.out.println("MD5 Hash: " + hashString);
        } catch (NoSuchAlgorithmException e) {
            e.printStackTrace();
        }
    }
}

3. SHA-256哈希

SHA-256是另一种常用的哈希算法,比MD5更安全。

import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

public class SHA256Example {
    public static void main(String[] args) {
        String originalString = "Hello, World!";
        try {
            MessageDigest md = MessageDigest.getInstance("SHA-256");
            byte[] hashBytes = md.digest(originalString.getBytes());
            StringBuilder sb = new StringBuilder();
            for (byte b : hashBytes) {
                sb.append(String.format("%02x", b));
            }
            String hashString = sb.toString();
            System.out.println("SHA-256 Hash: " + hashString);
        } catch (NoSuchAlgorithmException e) {
            e.printStackTrace();
        }
    }
}

4. AES加密

AES(高级加密标准)是一种对称加密算法,适用于需要较高安全性的场景。

import javax.crypto.Cipher;
import javax.crypto.KeyGenerator;
import javax.crypto.SecretKey;
import javax.crypto.spec.SecretKeySpec;
import java.util.Base64;

public class AESEncryptionExample {
    public static void main(String[] args) {
        try {
            String originalString = "Hello, World!";
            KeyGenerator keyGen = KeyGenerator.getInstance("AES");
            keyGen.init(128); // 128位密钥
            SecretKey secretKey = keyGen.generateKey();
            byte[] encodedKey = secretKey.getEncoded();
            SecretKeySpec secretKeySpec = new SecretKeySpec(encodedKey, "AES");

            Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding");
            cipher.init(Cipher.ENCRYPT_MODE, secretKeySpec);
            byte[] encryptedBytes = cipher.doFinal(originalString.getBytes());
            String encryptedString = Base64.getEncoder().encodeToString(encryptedBytes);
            System.out.println("Encrypted String: " + encryptedString);

            cipher.init(Cipher.DECRYPT_MODE, secretKeySpec);
            byte[] decryptedBytes = cipher.doFinal(Base64.getDecoder().decode(encryptedString));
            String decryptedString = new String(decryptedBytes);
            System.out.println("Decrypted String: " + decryptedString);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

5. RSA加密

RSA是一种非对称加密算法,适用于需要公钥和私钥的场景。

import javax.crypto.Cipher;
import java.security.KeyPair;
import java.security.KeyPairGenerator;
import java.security.PrivateKey;
import java.security.PublicKey;
import java.util.Base64;

public class RSAEncryptionExample {
    public static void main(String[] args) {
        try {
            String originalString = "Hello, World!";
            KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance("RSA");
            keyPairGenerator.initialize(2048);
            KeyPair keyPair = keyPairGenerator.generateKeyPair();
            PublicKey publicKey = keyPair.getPublic();
            PrivateKey privateKey = keyPair.getPrivate();

            Cipher cipher = Cipher.getInstance("RSA/ECB/PKCS1Padding");
            cipher.init(Cipher.ENCRYPT_MODE, publicKey);
            byte[] encryptedBytes = cipher.doFinal(originalString.getBytes());
            String encryptedString = Base64.getEncoder().encodeToString(encryptedBytes);
            System.out.println("Encrypted String: " + encryptedString);

            cipher.init(Cipher.DECRYPT_MODE, privateKey);
            byte[] decryptedBytes = cipher.doFinal(Base64.getDecoder().decode(encryptedString));
            String decryptedString = new String(decryptedBytes);
            System.out.println("Decrypted String: " + decryptedString);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

这些示例展示了如何在Java中实现不同类型的字符串加密。根据具体需求选择合适的加密算法和模式。

推荐阅读:
  1. java如何判断字符串中的子字符串
  2. JavaScript中怎么实现字符串处理

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

java

上一篇:Java字符串如何进行国际化处理

下一篇:Java字符串如何去重

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》