
Nội dung:
1. Giới thiệu về mã hóa, giải mã và thư viện Jasypt.
2. Sử dụng Jasypt với công cụ giao diện command line
Mã hóa (Encyption) :Trong mật mã học, mã hóa là phương pháp để sử lý thông tin từ định dạng bình thường sang dạng thông tin không thể đọc được nếu không có sự hiểu biết đặc biệt hay phương tiện giải mã.
Giải mã ( Decyption) :Giải mã là phương pháp để đưa từ dạng thông tin đã được mã hóa về dạng thông tin ban đầu, ngược với quá trình mã hóa.
Jasypt là một thư viện java giúp bạn thực thi những chuẩn bảo mật hiện tại, và bạn có thể dùng nó trong công việc bảo mật của chương trình.
Tạo digests: là một dạng của mã hóa một chiều, khi đã mã hóa thì không thể dịch ngược lại thông tin ban đầu được, ví dụ như mã hóa passwords: khi người dùng nhập password vào chương trình thì kể cả admin của chương trình cũng không nên biết password đó là gì và không dịch ngược được password đó nếu đã được mã hóa (Ở một số nước password phải được mã hóa một chiều, nếu dịch ngược lại được password đã mã hóa thì phần mềm đó bất hợp pháp).
Mã hóa chuỗi, số hoặc nhị phân sử dụng password(Password Based Encryption: PBE) . Ví dụ như mã hóa dữ liệu người dùng.
Jasypt cung cấp hai cách khác nhau để làm việc đó:
Giao diện easy
Giao diện Standard
Jasypt đưa ra hai cách sử dụng khác nhau này do Jasypt sử dụng hai lớp thư viện khác nhau.
Giao diện Easy:
Trong giao diện này, Jasypt cung cấp một số công cụ mã hóa sau(nằm trong gói org.jasypt.util):
Tạo digesting (org.jasypt.util.digest.*)
Mã hóa Password( digesting) (org.jasypt.util.password.*)
Mã hóa chuỗi (org.jasypt.util.text.*)
Mã hóa số(org.jasypt.util.numeric.*)
Mã hóa nhị phân(org.jasypt.util.binary.*)
Nếu bạn sử dụng những thư viện này thì bạn không cần cấu hình, nó cung cấp công cụ để mã hóa những dạng dữ liệu cơ bản.
Giao diện Standard:
Digesters: nằm trong gói org.jasypt.digest, bao gồm hai giao diện con là ByteDigester và StringDigester.
Encryptors: Được dùng trong mã hóa hai chiều, bao gồm cả mã hóa và giải mã dữ liệu.
Các giao diện con liên quan nằm trong gói org.jasypt.encrytion, bao gồm: ByteEncryptor, StringEncryptor, BigIntegerEncryptor, BigDecimalEncryptor.
Nếu bạn sử dụng giao diện này thì bạn cấu hình thêm vài thuộc tính như phương pháp mã hóa, số vòng lặp, …
Sử dụng công cụ Jasypt CLI để mã hóa:
Jasypt cung cấp một số công cụ để bạn có thể dễ dàng mã hóa dữ liệu trong giao diện command line.
Để sử dụng công cụ này bạn phải download gói distribution.zip về.
Trong thư mục bin cung cấp tập hợp những file .bat(Windown) và file .sh (Linux)
Cách sử dụng:
Download gói Jasypt về giải nén.
Mở cửa sổ command line, vào thư mục bin của gói jasypt bạn vừa giải nén.
Sử dụng lệnh theo định dạng: lệnh input=”dữ liệu cần mã hóa” password=”Jasypt_key” + tham số phụ nếu có.(Lệnh digests không cần tham số password).
Ví dụ:
Nếu bạn muốn mã hóa và giải mã chữ “toihocjava” thì làm như sau(Windown):
Mở cửa sổ command line, vào thư mục bin gõ lệnh:
encrypt.bat input="toihocjava" password="jasypt" algorithm="PBEWithMD5AndDES"
Kết quả được mã hóa là: f+SxMtHzh6p50b8QDw8AS2DufhtwytYJ
Ngược lại, nếu bạn muốn giải mã chuỗi số vừa rồi thì gõ lệnh:
decrypt.bat input="f+SxMtHzh6p50b8QDw8AS2DUfhtwytYJ" password="jasypt" algorithm="PBEWithMD5AndDES"
Kết quả sẽ là: toihocjava
Còn lệnh digest thì bạn dùng tương tự lệnh encrypt, nhưng khi đã mã hóa thì không giải mã ngược lại được, và không cần tham số password
digest.bat input="toihocjava"
Ngoài ra bạn có thể tìm hiểu cách cấu hình jasypt với spring, hibernate, maven, ant .... trên trang chính của thư viện.
Chú ý: nếu bạn làm như trên mà vẫn bị báo lỗi java.lang.NoClassDefFoundError: com/ibm/icu/text/Normalizer thì bạn chép thêm gói icu4j-4_0.jar vào thư mục bin rồi chỉnh lại đường dẫn trong file .bat thích hợp là được. Lý do là bạn đang sài jdk 5, nếu bạn sài jdk 6 thì không cần vì nó đã hổ trợ sẵn luôn rùi.
Link tham khảo: http://www.jasypt.org
Thursday, September 11, 2008
Java Simplified Encryption with JASYPT
Posted by mabuitvn at 10:46 PM 2 comments
Labels: Java Story
Subscribe to:
Posts (Atom)