इस विषय के साथ बहुत सारे प्रश्न हैं, एक ही समाधान है, लेकिन यह मेरे लिए काम नहीं करता है। मेरे पास एक एन्क्रिप्शन के साथ एक सरल परीक्षण है। एन्क्रिप्शन/डिक्रिप्शन स्वयं काम करता है (जब तक मैं इस परीक्षण को बाइट सरणी के साथ ही संभालता हूं) स्ट्रिंग्स के रूप में नहीं। समस्या यह है कि इसे बाइट सरणी के रूप में संभालना नहीं चाहते हैं, लेकिन स्ट्रिंग के रूप में, लेकिन जब मैं बाइट सरणी को स्ट्रिंग और बैक करने के लिए एन्कोड करता हूं, परिणामी बाइट सरणी मूल बाइट सरणी से अलग होती है, इसलिए डिक्रिप्शन अब और काम नहीं करता है। मैंने संबंधित स्ट्रिंग विधियों में निम्नलिखित पैरामीटरों का प्रयास किया: यूटीएफ -8, यूटीएफ 8, यूटीएफ -16, यूटीएफ 8। उनमें से कोई भी काम नहीं करता है। परिणामी बाइट सरणी मूल से अलग है। कोई विचार क्यों ऐसा है?बाइट सरणी को स्ट्रिंग और बैट सरणी पर वापस करने में समस्याएं
encrypter:
public class NewEncrypterTest
{
@Test
public void canEncryptAndDecrypt() throws Exception
{
String toEncrypt = "FOOBAR";
NewEncrypter encrypter = new NewEncrypter();
byte[] encryptedByteArray = encrypter.encrypt(toEncrypt);
System.out.println("encryptedByteArray:" + encryptedByteArray);
String decoded = new String(encryptedByteArray, "UTF-16");
System.out.println("decoded:" + decoded);
byte[] encoded = decoded.getBytes("UTF-16");
System.out.println("encoded:" + encoded);
String decryptedText = encrypter.decrypt(encoded); //Exception here
System.out.println("decryptedText:" + decryptedText);
assertEquals(toEncrypt, decryptedText);
}
}
आपको पहले बाइट को किसी स्ट्रिंग के रूप में प्रस्तुत करने की आवश्यकता है। आमतौर पर हेक्स या बेस 64 में परिवर्तित करके। –
स्ट्रिंग में कनवर्ट करने से पहले और बाद में बाइट एरे में आप क्या वास्तविक अंतर देखते हैं? – Herms
@Roger Lindsjö: टिप के लिए धन्यवाद। मैं इसे तुरंत कोशिश करूंगा। – Bevor