常见的Java加密算法有哪些?

yizhihongxing

常见的Java加密算法有以下几种:对称加密算法、非对称加密算法和散列算法。

  1. 对称加密算法

对称加密算法是指发送方和接收方使用相同的密钥对数据进行加密和解密。常见的对称加密算法有DES、3DES、AES、Blowfish等。

以AES算法为例,以下为使用步骤:

1)生成密钥

SecretKey secretKey = KeyGenerator.getInstance("AES").generateKey();

2)加密数据

Cipher cipher = Cipher.getInstance("AES");
cipher.init(Cipher.ENCRYPT_MODE, secretKey);
byte[] encryptedData = cipher.doFinal("hello world".getBytes());

3)解密数据

Cipher cipher = Cipher.getInstance("AES");
cipher.init(Cipher.DECRYPT_MODE, secretKey);
byte[] decryptedData = cipher.doFinal(encryptedData);
  1. 非对称加密算法

非对称加密算法是指发送方和接收方使用不同的密钥对数据进行加密和解密。常见的非对称加密算法有RSA、DSA等。

以RSA算法为例,以下为使用步骤:

1)生成密钥对

KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance("RSA");
keyPairGenerator.initialize(2048);
KeyPair keyPair = keyPairGenerator.generateKeyPair();
PrivateKey privateKey = keyPair.getPrivate();
PublicKey publicKey = keyPair.getPublic();

2)加密数据

Cipher cipher = Cipher.getInstance("RSA");
cipher.init(Cipher.ENCRYPT_MODE, publicKey);
byte[] encryptedData = cipher.doFinal("hello world".getBytes());

3)解密数据

Cipher cipher = Cipher.getInstance("RSA");
cipher.init(Cipher.DECRYPT_MODE, privateKey);
byte[] decryptedData = cipher.doFinal(encryptedData);
  1. 散列算法

散列算法是指将任意长度的数据转换为固定长度的散列值的算法。常见的散列算法有MD5、SHA1、SHA256等。

以MD5算法为例,以下为使用步骤:

1)计算散列值

MessageDigest messageDigest = MessageDigest.getInstance("MD5");
byte[] md5Bytes = messageDigest.digest("hello world".getBytes());
String md5Str = new BigInteger(1, md5Bytes).toString(16);

至少包含两条示例说明:

示例1:使用AES算法对文件进行加密和解密

// 加密文件
public static void encryptFile(File sourceFile, File destFile) throws Exception {
    Cipher cipher = Cipher.getInstance("AES");
    cipher.init(Cipher.ENCRYPT_MODE, getSecretKey());
    FileInputStream fis = new FileInputStream(sourceFile);
    FileOutputStream fos = new FileOutputStream(destFile);
    byte[] buffer = new byte[1024];
    int len;
    while ((len = fis.read(buffer)) != -1) {
        byte[] encryptedData = cipher.update(buffer, 0, len);
        fos.write(encryptedData);
    }
    byte[] encryptedData = cipher.doFinal();
    fos.write(encryptedData);
    fis.close();
    fos.close();
}

// 解密文件
public static void decryptFile(File sourceFile, File destFile) throws Exception {
    Cipher cipher = Cipher.getInstance("AES");
    cipher.init(Cipher.DECRYPT_MODE, getSecretKey());
    FileInputStream fis = new FileInputStream(sourceFile);
    FileOutputStream fos = new FileOutputStream(destFile);
    byte[] buffer = new byte[1024];
    int len;
    while ((len = fis.read(buffer)) != -1) {
        byte[] decryptedData = cipher.update(buffer, 0, len);
        fos.write(decryptedData);
    }
    byte[] decryptedData = cipher.doFinal();
    fos.write(decryptedData);
    fis.close();
    fos.close();
}

// 获取AES密钥
public static SecretKey getSecretKey() throws NoSuchAlgorithmException {
    KeyGenerator keyGenerator = KeyGenerator.getInstance("AES");
    keyGenerator.init(128);
    return keyGenerator.generateKey();
}

示例2:使用MD5算法对密码进行加密和验证

// 对密码进行加密
public static String encryptPassword(String password) throws NoSuchAlgorithmException {
    MessageDigest messageDigest = MessageDigest.getInstance("MD5");
    byte[] md5Bytes = messageDigest.digest(password.getBytes());
    return new BigInteger(1, md5Bytes).toString(16);
}

// 验证密码是否正确
public static boolean verifyPassword(String inputPassword, String encryptedPassword) throws NoSuchAlgorithmException {
    return encryptedPassword.equals(encryptPassword(inputPassword));
}

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:常见的Java加密算法有哪些? - Python技术站

(0)
上一篇 2023年5月11日
下一篇 2023年5月11日

相关文章

  • java Mail邮件接收工具类

    Java Mail邮件接收工具类 什么是Java Mail邮件接收工具类 Java Mail邮件接收工具类是一个提供接收邮件功能的Java程序类库,可以使用它来编写接收邮件的Java应用程序,通过收取远程邮件服务器上的邮件内容以及邮件信息,实现个人或是企业邮箱的邮件收取功能。 Java Mail邮件接收基本使用流程 Java Mail邮件接收需要经过以下步骤…

    Java 2023年6月15日
    00
  • Java实现按行读取大文件

    对于Java实现按行读取大文件,其主要思路是使用BufferedReader类和FileReader类来实现。具体步骤如下: 1.使用FileReader读取大文件 FileReader类可以一次读取大量文件内容,将其存入缓存区中。我们可以通过创建FileReader对象并将文件对象传递到它的构造函数中,来实现读取大文件的目的。 FileReader fil…

    Java 2023年5月20日
    00
  • SpringMVC静态资源配置过程详解

    简介 在SpringMVC应用程序中,静态资源是指不需要动态生成的文件,例如CSS、JavaScript、图片等。在本文中,我们将介绍如何在SpringMVC应用程序中配置静态资源,并提供两个示例说明。 静态资源配置 在SpringMVC应用程序中,我们可以通过以下两种方式来配置静态资源: 使用<mvc:resources>元素配置静态资源。 使…

    Java 2023年5月17日
    00
  • 一文掌握MyBatis Plus的条件构造器方法

    下面我将为大家详细讲解一下“一文掌握MyBatis Plus的条件构造器方法”的攻略: 一、背景知识 MyBatis Plus 是基于MyBatis的一个增强工具,在MyBatis的基础上只做增强不做改变,致力于简化SQL操作。其中,条件构造器作为MyBatis Plus的重要组成部分,提供了丰富的查询条件封装方法。 二、条件构造器方法的分类 MyBatis…

    Java 2023年5月20日
    00
  • JavaBean和SpringBean的区别及创建SpringBean方式

    JavaBean和SpringBean的区别: JavaBean是Java语言编写的可重用组件,它是普通的Java类,遵循特定的约定(约定优于配置)。JavaBean将其属性封装在私有字段中,并提供公共的getter和setter方法以让外部程序可以访问这些私有属性。JavaBean可以在任何Java环境中被使用,例如Java SE、Java EE等。 Sp…

    Java 2023年5月19日
    00
  • 如何自定义Jackson序列化 @JsonSerialize

    下面是我对于如何自定义Jackson序列化 @JsonSerialize的完整攻略,包括两条示例说明: 什么是Jackson序列化? Jackson是一个常用的Java数据序列化库,可以将Java对象转换为JSON格式的数据并输出。在序列化的过程中,Jackson将Java对象属性映射为JSON键值对,同时支持自定义序列化逻辑。 @JsonSerialize…

    Java 2023年5月26日
    00
  • JAVA实现感知器算法

    实现感知器算法可以通过Java语言来完成。下面是实现感知器算法的完整攻略: 算法简介 感知器算法是一种基础的人工神经网络算法,它的运行原理是根据学习结果对指定的输出结果进行二元决策。感知器算法能够实现二分类,也就是将输入数据划分为两类,如True和False,1和0等。以下是感知器算法的主要步骤: 初始化权重 得到输入的训练数据 计算感知器输出 根据误差调整…

    Java 2023年5月18日
    00
  • SpringBoot HikariCP连接池详解

    SpringBoot HikariCP连接池详解 本文介绍如何使用SpringBoot和HikariCP来管理MySQL数据库连接池。 什么是HikariCP? HikariCP是一个高效的、快速的、轻量级的JDBC连接池,取名自日本的“光之屋”。与其他连接池相比,它有更快的启动时间、更小的内存占用以及更高的性能。 SpringBoot集成HikariCP …

    Java 2023年5月20日
    00
合作推广
合作推广
分享本页
返回顶部