প্যাসে (Passay) Java লাইব্রেরি পাসওয়ার্ড সিকিউরিটি নিয়ম প্রয়োগে অত্যন্ত শক্তিশালী এবং কাস্টমাইজেবল ফিচার প্রদান করে। এর মাধ্যমে আপনি Advanced Constraints এবং Rules প্রয়োগ করতে পারেন, যা পাসওয়ার্ডের শক্তি এবং নিরাপত্তা বাড়াতে সহায়ক।
নিচে কিছু Advanced Constraints এবং Rules এর উদাহরণ দেয়া হলো।
1. Length Rule (পাসওয়ার্ডের দৈর্ঘ্য)
পাসওয়ার্ডের সর্বনিম্ন এবং সর্বোচ্চ দৈর্ঘ্য নির্ধারণ করতে ব্যবহৃত হয়।
// পাসওয়ার্ডের দৈর্ঘ্য 8-16 অক্ষরের মধ্যে থাকতে হবে
new LengthRule(8, 16)
2. Uppercase and Lowercase Character Rule
এটি নিশ্চিত করে যে পাসওয়ার্ডে অন্তত একটি বড় হাতের অক্ষর এবং একটি ছোট হাতের অক্ষর থাকতে হবে।
// অন্তত একটি বড় হাতের অক্ষর (Uppercase) এবং একটি ছোট হাতের অক্ষর (Lowercase) থাকা উচিত
new UppercaseCharacterRule(1),
new LowercaseCharacterRule(1)
3. Digit Character Rule
এটি পাসওয়ার্ডে অন্তত একটি সংখ্যা থাকতে হবে।
// অন্তত একটি সংখ্যা (digit) থাকা উচিত
new DigitCharacterRule(1)
4. Special Character Rule
এটি নিশ্চিত করে যে পাসওয়ার্ডে অন্তত একটি বিশেষ অক্ষর (যেমন !, @, #, $ ইত্যাদি) থাকতে হবে।
// অন্তত একটি স্পেশাল ক্যারেক্টার থাকা উচিত
new SpecialCharacterRule(1)
5. Blacklist Rule
এটি নিষিদ্ধ পাসওয়ার্ড বা শব্দের তালিকা ব্যবহার করে। আপনি একটি কাস্টম তালিকা তৈরি করে নিষিদ্ধ শব্দগুলি চেক করতে পারেন।
// নিষিদ্ধ পাসওয়ার্ড তালিকা (এটি ব্যবহারকারীর পাসওয়ার্ডের সাথে মিল খুঁজবে)
new BlacklistRule(new WordListDictionary(new File("path/to/blacklist.txt")))
6. Character Class Diversity Rule
এটি নিশ্চিত করে যে পাসওয়ার্ডে বিভিন্ন ধরনের অক্ষর থাকবে, যেমন সংখ্যা, বর্ণ (uppercase, lowercase) এবং স্পেশাল ক্যারেক্টার।
// পাসওয়ার্ডে অন্তত দুটি ভিন্ন ধরনের অক্ষর থাকতে হবে (কমপক্ষে দুটি ভিন্ন ক্যারেক্টার ক্লাস)
new CharacterClassRule(2)
7. Dictionary Rule
এটি পাসওয়ার্ডে অভিধান ভিত্তিক শব্দ ব্যবহার করা নিষিদ্ধ করে। উদাহরণস্বরূপ, সাধারণ ইংরেজি শব্দগুলি বা ব্যক্তিগত তথ্য (যেমন নাম, জন্ম তারিখ) নিষিদ্ধ করা।
// পাসওয়ার্ডে অভিধানভিত্তিক শব্দ থাকা উচিত নয়
new DictionaryRule(new FileDictionary(new File("path/to/dictionary.txt")))
8. Username Rule
এটি পাসওয়ার্ডে ব্যবহারকারীর নাম ব্যবহার নিষিদ্ধ করে।
// পাসওয়ার্ডে ব্যবহারকারীর নাম থাকা উচিত নয়
new UsernameRule()
উদাহরণ কোড:
import org.passay.*;
import java.util.Arrays;
public class AdvancedPasswordValidator {
public static void main(String[] args) {
PasswordValidator validator = new PasswordValidator(Arrays.asList(
new LengthRule(8, 16), // দৈর্ঘ্য 8-16
new UppercaseCharacterRule(1), // অন্তত একটি uppercase character
new LowercaseCharacterRule(1), // অন্তত একটি lowercase character
new DigitCharacterRule(1), // অন্তত একটি সংখ্যা
new SpecialCharacterRule(1), // অন্তত একটি স্পেশাল ক্যারেক্টার
new BlacklistRule(new WordListDictionary(new File("path/to/blacklist.txt"))), // নিষিদ্ধ পাসওয়ার্ড
new CharacterClassRule(2), // দুটি ভিন্ন ধরনের ক্যারেক্টার
new DictionaryRule(new FileDictionary(new File("path/to/dictionary.txt"))), // অভিধান ভিত্তিক শব্দ নিষিদ্ধ
new UsernameRule() // ব্যবহারকারীর নাম ব্যবহার নিষিদ্ধ
));
String password = "MySecure@123";
RuleResult result = validator.validate(new PasswordData(password));
if (result.isValid()) {
System.out.println("পাসওয়ার্ড বৈধ!");
} else {
System.out.println("পাসওয়ার্ড অবৈধ। কারণ:");
validator.getMessages(result).forEach(System.out::println);
}
}
}
Maven Dependency:
<dependency>
<groupId>org.passay</groupId>
<artifactId>passay</artifactId>
<version>1.6.0</version>
</dependency>
Conclusion:
প্যাসে লাইব্রেরি ব্যবহারের মাধ্যমে আপনি পাসওয়ার্ডের শক্তিশালী নিয়ম এবং নিরাপত্তা প্রয়োজনীয়তাগুলি খুব সহজেই প্রয়োগ করতে পারেন। এর Advanced Constraints এবং Rules যেমন Blacklist, Dictionary, এবং Character Class Diversity আপনাকে পাসওয়ার্ড শক্তিশালী করতে এবং সিস্টেমের সিকিউরিটি বজায় রাখতে সাহায্য করবে।
Read more