Passay লাইব্রেরি মূলত পাসওয়ার্ড পলিসি এবং ভ্যালিডেশন প্রক্রিয়া পরিচালনা করে, কিন্তু পাসওয়ার্ড হ্যাশিং এবং এনকোডিং সংক্রান্ত কাজের জন্য অন্য লাইব্রেরি যেমন BCrypt, PBKDF2, বা Argon2 ব্যবহার করা হয়। তবে Passay কে পাসওয়ার্ড ভ্যালিডেশন এবং নিরাপদ পাসওয়ার্ড হ্যাশিংয়ের জন্য একসাথে ব্যবহার করা যেতে পারে।
পাসওয়ার্ড হ্যাশিং এবং এনকোডিং:
Password Hashing হল পাসওয়ার্ডের একটি নিরাপদ ভার্সন তৈরি করার প্রক্রিয়া, যাতে এটি সহজে পুনরুদ্ধার করা না যায়। এনকোডিং, অন্যদিকে, তথ্য পরিবর্তন করে তাকে একটি নির্দিষ্ট ফর্ম্যাটে রূপান্তরিত করে, কিন্তু এটি পুনরুদ্ধারযোগ্য হতে পারে।
এখানে, BCrypt হ্যাশিং এলগরিদম এবং Passay পাসওয়ার্ড ভ্যালিডেশন একসাথে ব্যবহার করা হয়েছে।
উদাহরণ: Passay দিয়ে পাসওয়ার্ড ভ্যালিডেশন এবং BCrypt দিয়ে পাসওয়ার্ড হ্যাশিং
Maven Dependencies:
<dependency>
<groupId>org.passay</groupId>
<artifactId>passay</artifactId>
<version>1.6.0</version>
</dependency>
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-core</artifactId>
<version>5.7.3</version>
</dependency>
উদাহরণ কোড:
import org.passay.*;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
import org.springframework.security.crypto.password.PasswordEncoder;
import java.util.Arrays;
public class PasswordHashingAndValidationExample {
public static void main(String[] args) {
// পাসওয়ার্ডের ভ্যালিডেশন নিয়ম কনফিগার করা
PasswordValidator validator = new PasswordValidator(Arrays.asList(
new LengthRule(8, 16), // পাসওয়ার্ডের দৈর্ঘ্য 8-16 অক্ষর
new UppercaseCharacterRule(1), // অন্তত একটি বড় হাতের অক্ষর
new DigitCharacterRule(1), // অন্তত একটি সংখ্যা
new SpecialCharacterRule(1), // অন্তত একটি বিশেষ অক্ষর
new WhitespaceRule() // ফাঁকা স্থান নিষিদ্ধ
));
// নতুন পাসওয়ার্ড
String newPassword = "MySecurePass@123";
// পাসওয়ার্ড ভ্যালিডেশন
RuleResult result = validator.validate(new PasswordData(newPassword));
if (result.isValid()) {
System.out.println("পাসওয়ার্ড বৈধ!");
// BCrypt দিয়ে পাসওয়ার্ড হ্যাশিং
PasswordEncoder passwordEncoder = new BCryptPasswordEncoder();
String hashedPassword = passwordEncoder.encode(newPassword);
System.out.println("হ্যাশ করা পাসওয়ার্ড: " + hashedPassword);
} else {
System.out.println("পাসওয়ার্ড অবৈধ। কারণ:");
validator.getMessages(result).forEach(System.out::println);
}
}
}
কোড ব্যাখ্যা:
- Passay Validation:
- Passay-এ
PasswordValidatorব্যবহার করে পাসওয়ার্ডের বৈধতা যাচাই করা হয়েছে। এখানে পাসওয়ার্ডের জন্য কিছু নিয়ম সেট করা হয়েছে:- দৈর্ঘ্য 8 থেকে 16 অক্ষর
- অন্তত একটি বড় হাতের অক্ষর
- অন্তত একটি সংখ্যা
- অন্তত একটি বিশেষ চিহ্ন
- কোনো ফাঁকা স্থান থাকবে না
- Passay-এ
- BCrypt Password Hashing:
BCryptPasswordEncoderব্যবহার করে পাসওয়ার্ডটি হ্যাশ করা হয়েছে।encode()পদ্ধতির মাধ্যমে পাসওয়ার্ডটি হ্যাশ করা হয়।- BCrypt হ্যাশিং নিরাপদ পাসওয়ার্ড সংরক্ষণের জন্য খুবই জনপ্রিয় একটি এলগরিদম।
- Password Validation and Hashing Flow:
- প্রথমে পাসওয়ার্ডটি Passay দিয়ে যাচাই করা হয়।
- যদি পাসওয়ার্ডটি বৈধ হয়, তবে BCrypt দিয়ে সেই পাসওয়ার্ডটি হ্যাশ করা হয়।
- যদি পাসওয়ার্ড অবৈধ হয়, তাহলে Passay এর বার্তা দেখানো হয় যা কারণ জানায়।
ফলাফল:
উপরোক্ত কোডে, যদি পাসওয়ার্ড "MySecurePass@123" বৈধ হয় (Passay-এ), তাহলে ফলস্বরূপ আউটপুট হবে:
পাসওয়ার্ড বৈধ!
হ্যাশ করা পাসওয়ার্ড: $2a$10$LyFrqE7zP.f1CgX3iUkMge18jRVDtyo22EO4F1RgVZj56h7ajUeYa
এখানে, $2a$10$ অংশ হচ্ছে BCrypt হ্যাশের স্ট্যান্ডার্ড সূচক, এবং বাকি অংশটি পাসওয়ার্ডের হ্যাশড ভ্যালু।
উল্লেখযোগ্য পয়েন্ট:
- Hashing: BCrypt হ্যাশিং এলগরিদম পাসওয়ার্ড সুরক্ষিতভাবে হ্যাশ করে এবং পুনরুদ্ধারযোগ্য নয়।
- Passay: পাসওয়ার্ডের বৈধতা যাচাই করতে ব্যবহৃত হয় এবং এটি পাসওয়ার্ডে কিছু নির্দিষ্ট নিরাপত্তা পলিসি অনুসরণ করতে সাহায্য করে।
Passay এবং BCrypt একসাথে ব্যবহার করলে একটি শক্তিশালী সিস্টেম তৈরি হয় যা পাসওয়ার্ড নিরাপত্তা এবং সঠিক হ্যাশিং নিশ্চিত করে।
Read more