কম্পিউটার

কেন Char[] অ্যারে জাভাতে স্ট্রিংয়ের চেয়ে বেশি সুরক্ষিত (সংবেদনশীল ডেটা স্টোর)?


উভয়ই স্ট্রিং এবং চর[] অ্যারে টেক্সচুয়াল ডেটা সঞ্চয় করতে ব্যবহৃত হয় তবে একটির উপর অন্যটি বেছে নেওয়া আরও কঠিন। হয়তো আমরা এর অপরিবর্তনীয়তা থেকে ধারণা পেতে পারি স্ট্রিং কেন char[] অ্যারে পাসওয়ার্ড-এর মতো সংবেদনশীল তথ্য ডেটা সংরক্ষণের জন্য স্ট্রিং-এর চেয়ে পছন্দ করা হয় , SSN, ইত্যাদি।

  • প্লেন স্ট্রিং ব্যবহার করলে ভুলবশত লগ বা অন্য কিছু অনিরাপদ জায়গায় পাসওয়ার্ড প্রিন্ট করার সম্ভাবনা অনেক বেশি যেখানে char[] অ্যারে কম দুর্বল .
  • যেহেতু স্ট্রিং অপরিবর্তনীয় , এমন কোন পদ্ধতি সংজ্ঞায়িত নেই যা আমাদের স্ট্রিং এর বিষয়বস্তু পরিবর্তন বা ওভাররাইট করতে দেয়। এই বৈশিষ্ট্যটি স্ট্রিং বস্তুকে নিরাপদ তথ্য যেমন পাসওয়ার্ড সংরক্ষণের জন্য অস্থির করে তোলে , SSN, ইত্যাদি। আমাদের সবসময় সুরক্ষিত তথ্য স্ট্রিং এর পরিবর্তে char[] অ্যারেতে সংরক্ষণ করা উচিত।
  • যেহেতু স্ট্রিং অপরিবর্তনীয় যদি আমরা পাসওয়ার্ডকে প্লেইন টেক্সট হিসাবে সংরক্ষণ করি তবে এটি আবর্জনা পর্যন্ত মেমরিতে উপলব্ধ থাকবে সংগ্রাহক এটা পরিষ্কার করে যেহেতু স্ট্রিং S ব্যবহার করেছে ট্রিং কনস্ট্যান্ট পুল (SCP) একটি স্ট্রিং এর পুনরায় ব্যবহারযোগ্যতার জন্য, এটি একটি দীর্ঘ সময়ের জন্য মেমরিতে থাকার একটি সুন্দর সম্ভাবনা থাকবে। যেহেতু মেমরি ডাম্পে অ্যাক্সেস আছে এমন যে কেউ সহজে প্লেইন টেক্সটে পাসওয়ার্ড খুঁজে পেতে পারে তাই আরেকটি কারণ এনক্রিপ্ট ব্যবহার করা উচিত পাসওয়ার্ড সাধারণ পাঠ্যের চেয়ে।
  • যদি আমরা জাভা সুইং অ্যাপ্লিকেশনে লক্ষ্য করি , JPasswordField এর একটি পদ্ধতি আছে getPassword() যা char[] ফেরত দেয় এবং অপ্রচলিত পদ্ধতি getText() যা প্লেইন টেক্সটে পাসওয়ার্ড ফেরত দেয়। তাই জাভা নিজেই গেট পাসওয়ার্ড() ব্যবহার করার পরামর্শ দিচ্ছে পদ্ধতি।
  • char[] অ্যারে এ একটি পাসওয়ার্ড সংরক্ষণ করার আরেকটি কারণ , কারণ char[] স্যানিটাইজ করা যেতে পারে, উদাহরণস্বরূপ, ব্যবহারের পরে কেউ জাঙ্ক দিয়ে একটি পরিষ্কার পাসওয়ার্ড ওভাররাইড করতে পারে, যখন স্ট্রিং জাভাতে অপরিবর্তনীয়।

উদাহরণ

public class SecureInfoData {
   public static void main(String args[]) {
      String pwd = "string_pass_word";
      System.out.println("String Password is: " + pwd);
      char charPwd[] = "char_pass_word".toCharArray();
      System.out.println("Character Password is: " + charPwd);
   }
}

আউটপুট

String Password is: string_pass_word
Character Password is: [C@6d06d69c

  1. উইন্ডোজ 11 উইন্ডোজ 10 এর চেয়ে অনেক বেশি নিরাপদ:এখানে কেন

  2. 5টি কারণ কেন স্মার্টফোনগুলি বোবা ফোনের চেয়ে বেশি সুরক্ষিত

  3. ওরাকেলে সংবেদনশীল ডেটা সুরক্ষিত করুন

  4. কেন Android আইফোনের চেয়ে বেশি জনপ্রিয়?