আপনি SecretKey
বাইট অ্যারে ( byte[]
) এ রূপান্তর করতে পারেন , তারপরে বেস 64 এটিকে এন এ এনকোড করুন String
। একটিতে ফিরে রূপান্তর করতে SecretKey
, বেস 64 স্ট্রিংটি ডিকোড করে SecretKeySpec
আপনার মূলটি পুনর্নির্মাণ করতে এটিতে ব্যবহার করুন SecretKey
।
জাভা 8 এর জন্য
স্ট্রিং থেকে সিক্রেটকি:
// create new key
SecretKey secretKey = KeyGenerator.getInstance("AES").generateKey();
// get base64 encoded version of the key
String encodedKey = Base64.getEncoder().encodeToString(secretKey.getEncoded());
স্ট্রিং টু সিক্রেটকে:
// decode the base64 encoded string
byte[] decodedKey = Base64.getDecoder().decode(encodedKey);
// rebuild key using SecretKeySpec
SecretKey originalKey = new SecretKeySpec(decodedKey, 0, decodedKey.length, "AES");
জাভা 7 এবং এর আগে (অ্যান্ড্রয়েড সহ):
দ্রষ্টব্য আমি: আপনি বেস 64 এনকোডিং / ডিকোডিং অংশটি এড়াতে পারেন এবং কেবল byte[]
এসকিউএলাইটে সঞ্চয় করতে পারেন । এটি বলেছে যে বেস 64 এনকোডিং / ডিকোডিং করা কোনও ব্যয়বহুল ক্রিয়াকলাপ নয় এবং আপনি সমস্যাগুলি ছাড়াই প্রায় কোনও ডিবিতে স্ট্রিং সংরক্ষণ করতে পারেন।
দ্রষ্টব্য II: পূর্ববর্তী জাভা সংস্করণগুলিতে একটি java.lang
বা java.util
প্যাকেজগুলির মধ্যে একটি বেস 64 অন্তর্ভুক্ত নয় । তবে অ্যাপাচি কমন্স কোডেক , বাউন্সি ক্যাসেল বা পেয়ারা থেকে কোডেক ব্যবহার করা সম্ভব ।
স্ট্রিং থেকে সিক্রেটকি:
// CREATE NEW KEY
// GET ENCODED VERSION OF KEY (THIS CAN BE STORED IN A DB)
SecretKey secretKey;
String stringKey;
try {secretKey = KeyGenerator.getInstance("AES").generateKey();}
catch (NoSuchAlgorithmException e) {/* LOG YOUR EXCEPTION */}
if (secretKey != null) {stringKey = Base64.encodeToString(secretKey.getEncoded(), Base64.DEFAULT)}
স্ট্রিং টু সিক্রেটকে:
// DECODE YOUR BASE64 STRING
// REBUILD KEY USING SecretKeySpec
byte[] encodedKey = Base64.decode(stringKey, Base64.DEFAULT);
SecretKey originalKey = new SecretKeySpec(encodedKey, 0, encodedKey.length, "AES");
String
জাভাতে উদাহরণগুলি ধ্বংস করার জন্য কোনও সুস্পষ্ট পদ্ধতি নেই যখন মূল বিষয়গুলি এবং বাইট অ্যারেগুলি সাফ করা যেতে পারে। এর অর্থ হ'ল চাবিগুলি দীর্ঘ সময়ের জন্য মেমরির মধ্যে উপলব্ধ থাকতে পারে। একটি (পাসওয়ার্ড সুরক্ষিত) ব্যবহারKeyStore
করে, রানটাইম সিস্টেম / ওএস বা এমনকি হার্ডওয়্যার দ্বারা সমর্থিত একটিকে পছন্দ করা উচিত।