'u kullanarak büyük dizeyi şifreleyin ve şifreyi çözün PKI'yı uygulamaya çalışıyorum. Ben boğa kalesi kullanmadan java'da RSA kullanarak büyük dize şifrelemek istiyorum. Sorun şu ki, veri 117 bayttan daha uzun olmamalıdır. Başarısız olduğum çözüm için ağartma denedim. Bu şifrelemede yeniyim. Lütfen örnek olarak geniş bir dize vererek bana yardımcı olun ve açıklayın.RSA
RSA
cevap
Bir seferde yaklaşık 128 bayttan fazla bir RSA şifreleme şifre çözme kullanamazsınız. Verileri bölmeniz ve hemen hemen baytları dizgiyi String/Array olarak yazarken yapmalısınız. Tek sorunun, veri büyüklüğü ise, muhtemelen daha fazla gitmek için daha fazla yok. Sadece verileri bölüyorum.
büyük bir örnek, 128 bayttan büyük dizeleri ile ilgili sizin için muhtemelen daha tam: Genel olarak bir RSA şifreleme hakkında daha fazla açıklama gerekiyorsa http://coding.westreicher.org/?p=23
:
Aşağıdaki kod nasıl gösteriyor
// Get an instance of the RSA key generator
KeyPairGenerator kpg = KeyPairGenerator.getInstance("RSA");
// Generate the keys — might take sometime on slow computers
KeyPair myPair = kpg.generateKeyPair();
Bu, iki anahtar tutan bir keypair nesnesini verecektir: Java RSA anahtar çiftini oluşturmak için KeyPairGenerator kullanmak özel ve gecen neşriyata müracaat ic. Bu anahtarlardan yararlanmak için, ağ üzerinde sona erdireceğiniz verileri şifrelemek için SealedObject ile birlikte kullanılacak bir Cipher nesnesi oluşturmanız gerekecektir.
// Get an instance of the Cipher for RSA encryption/decryption
Cipher c = Cipher.getInstance("RSA");
// Initiate the Cipher, telling it that it is going to Encrypt, giving it the public key
c.init(Cipher.ENCRYPT_MODE, myPair.getPublic());
Cipher başlatılıyor sonra verileri şifrelemek için hazırsınız: Bunu şekli aşağıdaki gibidir. Şifrelemeden sonra ortaya çıkan veriler onları “çıplak” görürseniz pek bir anlam ifade etmeyecek, onları başka bir Nesnede saklamak zorundayız. Java, SealedObject sınıfı tarafından bunu sağlar. SealedObjects, bir Cipher nesnesi yardımıyla içeriklerini şifreleyen ve şifreleyen şifrelenmiş nesneler için konteynırlardır.
// Create a secret message
String myMessage = new String("Secret Message");
// Encrypt that message using a new SealedObject and the Cipher we created before
SealedObject myEncryptedMessage= new SealedObject(myMessage, c);
elde edilen nesne korkmadan ağ üzerinden gönderilebilir, bu şifreli tarihi:
Aşağıdaki örnek oluşturmak ve bir SealedObject içeriğini şifrelemek için gösterir. Şifreyi çözebilen ve verileri alabilen tek kişi, özel anahtarı tutan kişidir. Normalde bu sunucu olmalı. İletinin şifresini çözmek için, Cipher nesnesini yeniden başlatmamız gerekecek, ancak bu kez farklı bir modla şifresini çözmemiz ve ortak anahtar yerine özel anahtarı kullanmamız gerekecektir.
Bu Java ile bunun nasıl olduğunu:
// Get an instance of the Cipher for RSA encryption/decryption
Cipher dec = Cipher.getInstance("RSA");
// Initiate the Cipher, telling it that it is going to Decrypt, giving it the private key
dec.init(Cipher.DECRYPT_MODE, myPair.getPrivate());
Şimdi Şifreleme şifresini çözmek için hazır olduğunu, biz tutulan verilerin şifresini çözmek için SealedObject söylemek gerekir. getObject yöntemini kullanarak zaman değil, o şifreleme önce olduğu sınıfın bir örneği (aslında bir dize örneği olsa bile) bir nesne örneğini döndürür beri
// Tell the SealedObject we created before to decrypt the data and return it
String message = (String) myEncryptedMessage.getObject(dec);
System.out.println("foo = "+message);
', sana böylece dikkat Onu önceki formuna dökmek zorundayım. http://andreas.louca.org/2008/03/20/java-rsa-encryption-an-example/
RSA toplu veri şifreleme için uygun değildir: 'den
üzerindedir. Bunun yerine, "büyük dizginizi" şifrelemek için AES gibi bir simetrik şifreyi kullanın. Ardından, AES için kullanılan simetrik anahtarı RSA anahtarıyla şifreleyin.
BouncyCastle bunu yapmak için iki protokolü destekler: S/MIME ve PGP. Tüm hassas gizlilik protokolleri, bu şekilde anahtar taşıma veya anahtar değişimi için asimetrik algoritmalar kullanır.
RSA ile şifrelenebilecek mesaj boyutu, tuşun modülüne bağlıdır, bu mesajın güvenli bir şekilde doldurulması için gereken daha az bayttır.
Hibrit şifreleme böyle devam etmenin yoludur. – CodesInChaos
Bir API örneği veya ilgili API'ye bağlantı zarar vermez. – CodesInChaos
- 1. RSA ortak anahtarını RSA DER
- 2. Java'da RSA şifreleme
- 3. RSA şifrelemek/şifresini çözmek
- 4. RSA/ECB/OAEPWITHSHA-256ANDMGF1PADDING
- 5. Java RSA Şifreleme
- 6. RSA Şifreleme: PHP to PHP
- 7. RSA Özel Anahtarını Kaydetme Android
- 8. RSA Şifreleme-Şifre çözme, iPhone
- 9. Qt, RSA şifrelemesini destekliyor mu?
- 10. RSA: neden phi (phi (n)) çalışır?
- 11. XML RSA anahtarını PEM dosyasına nasıl dönüştürebilirim?
- 12. Yönlendirici ile RSA-SHA1 imzaları oluşturma
- 13. Port .Net RSA xml anahtarları Java'ya
- 14. SELinux ssh ile RSA anahtarını engeller
- 15. RSA Eclipse Remote Systems Explorer Kullanıyor mu?
- 16. NET'te basit rsa şifreleme/şifre çözme?
- 17. Özel anahtar RSA özel anahtarına nasıl dönüştürülür?
- 18. Java'da bilinen parametrelerden RSA anahtarları oluşturma
- 19. .. RSA anahtarları üretebilir ve şifreleyebilir/şifresini çözebilir?
- 20. RSA C büyük veri şifreleme C#
- 21. Java'da RSA Şifreleme: Çapraz Platform Sorunları?
- 22. Java'da RSA anahtar nesnesini XML'ye dışa aktarma
- 23. RSA Archer - Tarih alanına göre hesaplanmış alan
- 24. Subversion ile Pratik RSA SecurID kimlik doğrulaması?
- 25. RSA için, gizli üssü nasıl hesaplarım?
- 26. Java RSA anahtar boyutunu anlamaya çalışmak
- 27. Ruby'den bir özel RSA anahtarı açma
- 28. System.IO.IOException: ----- END RSA ÖZEL ANAHTARI bulunamadı
- 29. PEM + PKCS # bir RSA ortak anahtarı I PEM biçimi + PKCS # 1 (sanırım) bir RSA ortak anahtara sahip
- 30. Kriptografi: Modül ve Bileşeni Kullanarak RSA Özel Anahtarının Oluşturulması
Güvenlik ve özellikle kriptografi, ** sert **. Ham kripto API'leri yerine mevcut üst düzey paketleri kullanmalı veya nasıl çalıştıklarını öğrenmelisiniz. Aksi halde, güvensiz kod yazmanız muhtemeldir. – SLaks
üst düzey paketler ne anlama geliyor? –
Lütfen kodunuzu gönderin. Buradan çalışabiliriz. – Frank