AI 日报

面试官:说一下你常用的加密算法

  • By admin
  • Oct 27, 2023 - 2 min read



加密算法概述

加密算法是信息安全领域中常用的技术手段,用于保护敏感数据的安全性。通过对数据进行加密操作,可以使得数据在传输、存储等环节中难以被非法获取和篡改。常用的加密算法包括对称加密算法、非对称加密算法和哈希算法等。

对称加密算法

对称加密算法采用同一秘钥进行数据的加密和解密操作,常见的对称加密算法有DES、3DES、AES等。其中,DES(Data Encryption Standard)是一种使用对称密钥的加密算法,采用64位的秘钥对64位的明文数据块进行加密,加密后输出64位的密文数据块。3DES(Triple Data Encryption Algorithm)是DES算法的加强版,通过多次DES的迭代加密操作提高加密强度。AES(Advanced Encryption Standard)是目前最常用的对称加密算法,支持128位、192位和256位等不同密钥长度。

非对称加密算法

非对称加密算法使用两个密钥,分别是公钥和私钥。公钥用于加密数据,私钥用于解密数据,因此私钥需要保密,公钥可以公开。常见的非对称加密算法有RSA、DSA等。RSA是目前最广泛使用的非对称加密算法,其基本原理是利用质数分解困难性实现公钥和私钥的生成。DSA(Digital Signature Algorithm)是一种数字签名算法,用于身份验证和数据完整性验证。

哈希算法

哈希算法,也称为散列算法,将任意长度的数据映射为固定长度的哈希值。常见的哈希算法有MD5、SHA-1、SHA-256等。MD5(Message Digest Algorithm 5)是一种常用的哈希算法,输出128位的哈希值。SHA(Secure Hash Algorithm)是一系列的哈希函数标准,包括SHA-1、SHA-256等不同版本,输出不同位数的哈希值。

示例代码:
// 使用Java实现对称加密算法AES
import javax.crypto.Cipher;
import javax.crypto.KeyGenerator;
import javax.crypto.SecretKey;
import java.nio.charset.StandardCharsets;
import java.util.Base64;

public class AESEncryption {
    public static void main(String[] args) throws Exception {
        // 生成AES秘钥
        KeyGenerator keyGenerator = KeyGenerator.getInstance("AES");
        keyGenerator.init(256);
        SecretKey secretKey = keyGenerator.generateKey();

        // 获取Cipher实例
        Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding");
        cipher.init(Cipher.ENCRYPT_MODE, secretKey);

        // 明文数据
        String plainText = "Hello, world!";

        // AES加密
        byte[] cipherText = cipher.doFinal(plainText.getBytes(StandardCharsets.UTF_8));

        // 输出加密结果
        System.out.println("Cipher Text (Base64): " + Base64.getEncoder().encodeToString(cipherText));
    }
}