Mã hóa password trong Selenium Webdriver
Khi sử dụng automation để thực hiện tự động một việc nào đó, mà ở đó có sự xuất hiện của một số những thông tin nhạy cảm mà ta không muốn nó bị lộ, vậy thì chúng ta phải làm như thế nào?
Bởi vì Selenium thông thường thì sẽ không có khả năng che dấu mật khẩu và thậm chí kể cả IDE của Elipse cũng vậy. Cho nên người ta mới nghĩ ra một cách để có thể giúp kiểm soát việc hiển thị của các dữ liệu nhạy cảm bên ngoài môi trường kiểm thử (hoặc môi trường thực tế nào đó), đó là tạo một lớp để có thể thực hiện mã hóa (hoặc giải mã) dữ liệu khi thực thi.
Có hai cách để bạn có thể thực hiện mã hóa, ở đây mình ví dụ là mã hóa mật khẩu nhé.
Cách 1
Cách thứ nhất sử dụng thư viện java.util.Base64, bạn thực hiện mã hóa bằng cách sử dụng hàm mã hóa mặc định của BASE64 với cú pháp như sau:
static String password= "yourPassword";
public static String getDecodedpassword() {
return new String(Base64.getDecoder().decode(decodepassword.getBytes()));
}
Cách này khá là đơn giản, nhưng đối với những password dài quá 12 ký tự và có những ký tự đặc biệt khi mã hóa sẽ bị quá độ dài có thể xử lý hiển thị được của BASE64, không hợp lệ đối với lý tự đặc biệt và theo mình thì đây cũng chính là điểm yếu của cách này. Chắc là không khuyến khích sử dụng cách này rồi.
Cách 2
Cách thứ 2 là sử dụng thư viện sun.misc.BASE64Encoder với thư viện này thì ta có thể thoải mái với bất kỳ loại password nào (bất kỳ password này là do mình nghĩ ra và nhập vào =)) ) Tương tự cách 1 chỉ khác import thư viện và hàm sử dụng một chút thôi.
static String decodepassword = "yourPassword@874";
public static String getDecodedpassword() {
return new String(new BASE64Encoder().encodeBuffer(decodepassword.getBytes()));
}
Với cách thứ 2, ta không phải nghĩ về vấn đề độ dài của password hay các ký tự đặc biệt xuất hiện trong password nhập vào. Bên cạnh đó, ta cũng có thể tự tùy biến một hàm mã hóa, và hàm giải mã của nó kết hợp với 1 key (chìa khóa) để giải mã. Key này có thể là một chuỗi ký tự bất kỳ, bằng một vài kỹ năng cơ bản ta kết hợp chuỗi key này vào trong chuỗi password ban đầu rồi sau đó mới thực hiện mã hóa. Tất nhiên để giải mã ngược lại thì ta cũng cần phải có key chính xác đã được sử dụng ở phần mã hóa.