2011-05-09 4 views
6

javax.crypto.IllegalBlockSizeException: Veriler 53 bayt i için, sadece bit RSA anahtar uzunluğunun maksimum bayt uzunluğu veri şifrelemek RSA algoritması olduğunu biliyoruz daha uzun olmamalıdır sekiz eksi onbir dolgu ile bölünmüş bayt, yani maksimum bayt sayısı = bit sayısı anahtar uzunluğu/8 - 11.javax.crypto.IllegalBlockSizeException

Burada 512 anahtar boyutu kullanıyorum, bu yüzden 53'ten fazla alana izin vermiyor. bit anahtar ama 53 bayttan fazla şifrelemek için herhangi bir olasılık var.

cevap

7

Evet ve hayır. Sen RSA şifreleme olamaz, ancak aşağıdakilerden biri ile gidebilirsiniz:

  1. simetrik algoritma ile şifreleme ve RSA ile şifrelenmiş anahtar geçme zamanki yaklaşımı yapın. Örneğin, kamu anahtar PK ile başka birine veri D göndermek için:

    1. gönderme
    2. Epk (K) gönderme (anahtar K simetrik algoritma ile şifrelenmiş D) Ek (D) 'de (K ile şifrelenmiş PK ile RSA algoritması)

    diğer tarafı açık PK (K) K elde etmek için, ve açık K (d) D

  2. küçük parçalar halinde veri bölme olsun her birinin ayrı ayrı şifrelenir.

    1. Sen (şifreleme kendisinin hariç) verilerine aşık atamazsın:

    Birinci yaklaşım iki ana nedenden dolayı çok daha iyi bir tanesidir.

  3. Simetrik şifreleme/şifre çözme, genel şifrelemeden çok daha hızlıdır, örneğin, RC4, verilerin basit bir XOR'u iken, RSA büyük bir güç kullanır.

+0

DSA – Lalchand

+0

gibi diğer asimetrik algoritma kriptografik verilerle büyük miktarda veri şifrelemeyi mümkün kılar DSA, şifreleme algoritması değil, imza algoritmasıdır ve hayır, çünkü bildiğim tüm şifreleme algoritmaları aynı matematiksel prensiplere dayalıdır. mümkün değil, lütfen düzenlenmiş cevabımı yaklaşık iki dakika içinde görün. Önceki Yorum ile ilgili – MByD

+0

- Yazmayı unuttum - hepsi ** public ** şifreleme algoritmaları .. – MByD

1

Neden sarmalıyor istihdam yok (3. PGP çok yaygın olmasının bir nedeni ... olmalı)? Simetrik anahtar (AES) oluşturun, verilerinizi bu AES anahtarıyla şifreleyin, ardından AES anahtarını bir ortak RSA anahtarı ile şifreleyin. Şifreli verileri şifreli AES Anahtarı ile birlikte gönderin. Ardından AES anahtarını özel RSA anahtarı ile deşifre edin ve verilerin geri kalanını şifresini çözmek için kullanın. Bu, herhangi bir boyuttaki verileri şifrelemenize izin verecektir.