21xrx.com
2024-09-19 09:30:51 Thursday
登录
文章检索 我的文章 写文章
Java常见加密方法及案例
2023-06-16 10:47:53 深夜i     --     --
Java 加密 MD5 DES RSA

Java是一种广泛使用的编程语言,而在某些情况下,我们需要对敏感信息进行加密保护。Java提供了几种常见的加密方法,本文将分别介绍这些方法以及对应的案例。

1. MD5加密

MD5是一种常见的加密算法,Java提供了MessageDigest类进行MD5加密。下面是一个MD5加密的案例:


import java.security.MessageDigest;

public class MD5Example {

  public static void main(String[] args) throws Exception {

    String str = "Hello World!";

    MessageDigest md = MessageDigest.getInstance("MD5");

    md.update(str.getBytes());

    byte[] digest = md.digest();

    StringBuffer buffer = new StringBuffer();

    for (int i = 0; i < digest.length; i++) {

      String hex = Integer.toHexString(digest[i] & 0xff);

      if (hex.length() == 1) {

        buffer.append("0");

      }

      buffer.append(hex);

    }

    System.out.println(buffer.toString());

  }

}

在上面的案例中,我们首先定义了一个字符串"Hello World!",然后使用MessageDigest类的getInstance方法创建了一个MD5加密实例。接着,我们调用了md.update方法传入要加密的字符串,并使用md.digest方法获取加密后的结果。最后,我们将结果转成十六进制字符串来输出。

2. DES加密

DES是一种对称加密算法,Java提供了DES算法的实现。下面是一个DES加密的案例:


import javax.crypto.Cipher;

import javax.crypto.SecretKey;

import javax.crypto.SecretKeyFactory;

import javax.crypto.spec.DESKeySpec;

public class DESExample {

  public static void main(String[] args) throws Exception {

    String str = "Hello World!";

    String key = "01234567"; // 密钥必须是8位

    DESKeySpec desKeySpec = new DESKeySpec(key.getBytes());

    SecretKeyFactory factory = SecretKeyFactory.getInstance("DES");

    SecretKey secretKey = factory.generateSecret(desKeySpec);

    Cipher cipher = Cipher.getInstance("DES");

    cipher.init(Cipher.ENCRYPT_MODE, secretKey);

    byte[] result = cipher.doFinal(str.getBytes());

    System.out.println(new String(result));

  }

}

在上面的案例中,我们首先定义了一个字符串"Hello World!"和一个密钥"01234567"。然后,我们使用DESKeySpec类将密钥转化成一个SecretKey对象,接着使用Cipher类进行加密,最后输出加密后的结果。

3. RSA加密

RSA是一种公钥加密算法,Java提供了RSA算法的实现。下面是一个RSA加密的案例:


import java.security.Key;

import java.security.KeyPair;

import java.security.KeyPairGenerator;

import java.security.NoSuchAlgorithmException;

import java.security.PrivateKey;

import java.security.PublicKey;

import javax.crypto.Cipher;

public class RSAExample {

  public static void main(String[] args) throws Exception {

    String str = "Hello World!";

    KeyPairGenerator keyGen = KeyPairGenerator.getInstance("RSA");

    keyGen.initialize(1024); // 密钥长度必须是64的倍数,最小值是512

    KeyPair keypair = keyGen.genKeyPair();

    PublicKey publicKey = keypair.getPublic();

    PrivateKey privateKey = keypair.getPrivate();

    byte[] encrypted = encrypt(str, publicKey);

    System.out.println(new String(encrypted));

  }

  public static byte[] encrypt(String message, Key key) throws Exception {

    Cipher cipher = Cipher.getInstance("RSA");

    cipher.init(Cipher.ENCRYPT_MODE, key);

    return cipher.doFinal(message.getBytes());

  }

}

在上面的案例中,我们首先定义了一个字符串"Hello World!",然后使用KeyPairGenerator类生成RSA密钥对。接着,我们获取公钥并使用encrypt方法进行加密,最后输出加密后的结果。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复