2016-03-28 19 views
0

Bir dize şifreleyen kendi java şifreleme programımı oluşturmaya çalışıyorum: Bir dizge alır ve her karakteri onaltılı ascii temsiline dönüştürür. Şifrem, her karakter için onaltılık ascii temsil eden iki sayının her bir tarafında rastgele bir sayı ve rastgele bir harf eklemektir. Bu, şifrelenen her karakter için bir 6 karakter dizgisi döndürecektir. Örneğin. (yardım -> h -> 68 -> 3 + 6 + g + 1 + 8 + f) Dört işlevi kullanarak uygulamaya çalışıyorum (encryptMessage, encryptCharacter, decryptMessage, decryptCharacter). Siteyi aradım ve bana yardımcı olan herhangi bir gönderi bulamadım. Mesajımı decryptCharacter/decryptMessage yöntemlerini kullanarak neden başarıyla çözemediğimi belirlememe yardımcı olabilir misiniz? Şu an sadece bir karakter çalışıyorum ve başlangıçta girdiğim karakteri geri döndürmüyor. 1. Benim için döngülerimi decryptMessage ve decryptCharacter yöntemlerinde doğru olarak mı kullanıyorum? 2. decryptCharacter yönteminde ascii onaltılık gösterimi ilgili karaktere doğru olarak dönüştürüyor muyum? Eğer birisi kodumu nasıl düzeltebileceğimi açıklayamaz mı?Onaltılık ascii kod karakter için döngü, substring ve dönüştürme için doğru kullanımı?

programımın pastebin attılar: http://pastebin.com/6QMFYrKD

Herhangi bir yardım takdir! Java'ya yeni geldim ve ana program tarafından çağrılan bu yöntemleri nasıl kullanacağımı daha iyi anlamak için programı yazmaya çalışıyorum!

+2

Macunu kullanmayın. İlgili kodu buraya gönderin. Sadece sorunu göstermek için yeterli verin. –

+0

Lütfen [Minimal, Tam ve Doğrulanabilir örnek oluşturma] bölümünü okuyun (http://stackoverflow.com/help/mcve). Şifreleme çalışırsa (bunu manuel olarak doğrulayabilirsiniz), şifrelenmiş dize * (tam) * kullanarak bir çağrı ile * (minimal) * şifresini çözmek için basitleştirilmiş bir program ve beklenen çıktıdır. *(doğrulanabilir)*. Ayrıca, metninizdeki paragrafları kullanın. Bu büyük metin bloğu kasvetli. – Andreas

+0

Üzgünüm! Gelecekte bu yönergeleri basitleştirip takip edeceğim. –

cevap

0

Kodunuzda, DecryptCharacter yöntemi düzgün bir şekilde şifresini çözmüyor. Rastgele karakter ve sayıyı, karakterin onaltılık temsilinin her basamağına ekliyorsunuz. böylece , yerine Ayrıca

String hexRep = encryptedCharacter.substring(1, 4); 

bu

String hexRep = encryptedCharacter.substring(1, 2) + encryptedCharacter.substring(4, 5) 

,

DecryptMessage yöntemle

bir hata vardır yapıyor olması gerekmediğini koşul if (i >= encryptedText.length() - 6) { alışkanlık iş o olacak çünkü şifreli mesajın son 6 karakterine kadar her zaman false değerini döndür, , böylece deneyebilirsiniz aşağıdaki gibi mething.

if (encryptedText.length() > 0 && encryptedText.length() % 6 == 0) { 
+0

Çok teşekkür ederim! Bu çok yardımcı oldu. Asla altyazıları kullanmam ve eğer ifade koşulları çok kötü olursa tekrar! –