21xrx.com
2024-11-08 21:17:09 Friday
登录
文章检索 我的文章 写文章
Java 配置文件中密码的加密方式
2023-06-18 14:49:28 深夜i     --     --
Java 配置文件 密码 加密 安全性

在使用 Java 开发的过程中,我们经常需要在配置文件中存储敏感信息,比如数据库密码、API 认证信息等。然而,存储明文密码有很多安全隐患,一旦泄漏会给系统造成不良影响。因此,我们需要一种加密密码的方式来保护我们的应用程序。

下面介绍一种简单的加密方式,可以将配置文件中的密码进行加密,以提高安全性。

1. 生成密钥和向量

在 Java 中,我们可以通过 KeyGenerator 生成密钥,通过 SecureRandom 生成向量。


KeyGenerator keyGen = KeyGenerator.getInstance("AES");

keyGen.init(128);

SecretKey secretKey = keyGen.generateKey();

SecureRandom random = new SecureRandom();

byte[] ivBytes = new byte[16];

random.nextBytes(ivBytes);

2. 加密密码

接下来,我们需要使用密钥和向量对密码进行加密。在这个例子中,我们使用 AES 算法进行加密。


public static String encrypt(String password, SecretKey secretKey, byte[] ivBytes) throws Exception {

  Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");

  cipher.init(Cipher.ENCRYPT_MODE, secretKey, new IvParameterSpec(ivBytes));

  byte[] encryptedBytes = cipher.doFinal(password.getBytes(StandardCharsets.UTF_8));

  return Base64.getEncoder().encodeToString(encryptedBytes);

}

3. 解密密码

为了能够在应用程序中使用加密的密码,我们还需要一个解密的方法。我们可以编写一个静态方法来解密加密的密码。


public static String decrypt(String encryptedPassword, SecretKey secretKey, byte[] ivBytes) throws Exception {

  Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");

  cipher.init(Cipher.DECRYPT_MODE, secretKey, new IvParameterSpec(ivBytes));

  byte[] cipherTextBytes = Base64.getDecoder().decode(encryptedPassword);

  byte[] decryptedBytes = cipher.doFinal(cipherTextBytes);

  return new String(decryptedBytes, StandardCharsets.UTF_8);

}

  
  
下一篇: 一、我的故事

评论区

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