Java安全与防护:密码加密和防止SQL注入实例

原创 灰太狼 2024-11-15 05:09 178阅读 0赞

在Java编程中,确保数据的安全性和避免常见的安全漏洞是非常重要的。这里我们主要介绍两个例子:密码加密和防止SQL注入。

  1. 密码加密:
    • 使用Java内置的javax.crypto.Cipher类进行加密。
    • 需要提供一个密钥(Key),并且在解密时也需要相同类型的密钥。
  1. import javax.crypto.Cipher;
  2. import javax.crypto.Key;
  3. import javax.crypto.SecretKey;
  4. import java.security.*;
  5. public class PasswordEncryption {
  6. private static final String ALGORITHM = "AES";
  7. // Generate a random key
  8. private static Key generateRandomKey() throws Exception {
  9. SecureRandom secureRandom = new SecureRandom();
  10. byte[] keyBytes = new byte[16];
  11. secureRandom.nextBytes(keyBytes);
  12. return SecretKey.getInstance(ALGORITHM, "BC"))
  13. .getKey(keyBytes);
  14. }
  15. public static String encryptPassword(String password) throws Exception {
  16. Key key = generateRandomKey();
  17. Cipher cipher = Cipher.getInstance(ALGORITHM);
  18. cipher.init(Cipher.ENCRYPT_MODE, key));
  19. byte[] encryptedPassword = cipher.doFinal(password.getBytes(StandardCharsets.UTF_8))]);
  20. return new String(encryptedPassword));
  21. }
  22. public static void main(String[] args) throws Exception {
  23. String password = "Test123";
  24. String encryptedPassword = encryptPassword(password);
  25. System.out.println("Encrypted Password: " + encryptedPassword);
  26. }
  27. }
  1. 防止SQL注入:
    • 使用预编译的SQL语句(PreparedStatement)。
    • 不要在SQL查询字符串中直接插入用户输入。
  1. // 假设我们有一个User类,其中包含username属性
  2. public class User {
  3. private String username;
  4. // getters and setters
  5. }
  6. // 防止SQL注入示例
  7. public void insertNewUser(User user) throws SQLException {
  8. String formattedUsername = java.sql.Connection.escape(user.getUsername())); // 使用 escape() 函数防止特殊字符转义
  9. String query = "INSERT INTO users (username) VALUES ('" + formattedUsername + "')"; // 构建预编译的SQL语句
  10. PreparedStatement ps = connection.prepareStatement(query);
  11. ps.executeUpdate(); // 执行SQL语句
  12. }

以上两个示例只是Java安全与防护的一部分,实际应用中还需要考虑其他因素,如网络安全、日志审计等。

文章版权声明:注明蒲公英云原创文章,转载或复制请以超链接形式并注明出处。

发表评论

表情:
评论列表 (有 0 条评论,178人围观)

还没有评论,来说两句吧...

相关阅读