2013-07-23 12 views
5

ile CMS'de şifrelenmiş içeriği değiştirmeden Asimetrik Anahtar Çiftini değiştirme X.509 sertifikam ve ilgili PrivateKey'im var. Bir PDF belgesini CMSEnvelopedData ile java BouncyCastle ile şifrelemeye çalışıyorum.Simetrik Anahtar ve Bouncy Castle

Şifreleyebilir ve şifrelenmiş bir dosyaya dönüşür. Şifreyi çözebilirim ve her şey. Ama şimdi anahtar çiftini değiştirmek istiyorum, ancak simetrik anahtar ve sonuç olarak, şifreli belge.

Bunu neden yapıyorum? Çünkü bir uygulamanın bazı asimetrik algoritmaları değiştirebileceği bazı durumlar vardır ve tüm belgeleri yeniden şifrelemek gerekli değildir, sadece simetrik anahtarlar.

ben şifrelenmiş içeriği elde edebilirsiniz biliyorum: Ben tam olarak şifrelenmiş simetrik anahtarı almak için ne yapmamız gerektiğini bilmiyoruz Bundan sonra

CMSEnvelopedData encryptedData = new CMSEnvelopedData(new FileInputStream("FILE")); 
ContentInfo dataInfo= encryptedData .toASN1Structure(); 

. Bundan sonra, şifresini çözmek, başka bir anahtar çifti ile şifrelemek ve daha sonra aynı simetrik anahtar ve yeni anahtar çifti ile aynı şifreli verilerle başka bir CMS oluşturmak istiyorum.

Herhangi bir yardım için teşekkür ederiz. Teşekkürler.

+2

Bakım görevlilerinin BÖÖ'nün spesifik sorularını yanıtladığı Bouncy Castle geliştirme postaları hakkında daha fazla başarı elde edebilirsiniz. Mod'lar, bu geçerli bir soru gibi görünüyor, bazen Crypto API'sı ile nerede başlamak gerektiğini bilmek zordur. –

cevap

0

Standart Java kripto kütüphaneleri aslında son birkaç yıldır Bouncy Castle IMHO'ya yakalandı. Java kriptosunun eksik olduğu bir zamanda birkaç projede BC kullanmıştım, ancak o zamandan beri dahil edilen sınıfları kullanarak tüm güvenlik ürününü uygulamaya koymuştum.

(1. öneri - standart Java kripto - iyi örnekler, adil belgeler kullanın) bunu söyledikten sonra, 2 öneriyi iki bileşenden çıkarmak olacaktır (özür dilerim ama Bouncy Castle'a özel bir bilgi yok. simetrik düz metin şifrelemek ve ayrı ayrı şifre metin BLOB'u depolamak, gizli bir anahtar kullanarak

  1. : 't yıllarda bu özel kütüphaneler) kullanılmıştır.

  2. Asimetrik şifrelemeyi (kaynak özel anahtar ve hedef genel anahtar) kullanarak, gizli anahtarı şifreleyin ve ayrı olarak saklayın; kullanılan anahtar çifti, algoritma, vb. Ilgili başvuruya ve ilişkili şifrelere başvuruya bakın. metin BLOB/s.

(güvenli), yukarıdaki 2. kayıtlar arasında hedef için PKI özel anahtar arama gidin, anahtar çiftini ya da diğer asimetrik güncelleştirme (algoritma, vs) gerçekleştirmek ve gizli-anahtarın şifresini için . Sonra asimetrik olarak yeni bir çift veya diğer parametreler (algoritma, vb) kullanarak gizli anahtarı yeniden şifreleyin. Kayıt # 2'deki şifreli gizli anahtarın üzerine yaz.

+0

Sorunun cevabı gerçekten değil. OP, belgeleri yeniden şifrelemek istemediğini zaten söyledi. – Syon

+0

Kütüphanede ayrılması mümkün olmayan iki şey var: 1. Simetrik şifreleme bir sır kullanır. Düz metin bu tuşla şifrelenir. 2. Asimetrik şifreleme daha sonra belirli bir PKI anahtar çifti kullanarak bu şifreyi şifreler. Hedef PKI özel anahtarına sahip olmak, gizli şifrenin çözülmesine ve ardından (simetrik olarak) kaynak belgeye izin verebilir. Bununla birlikte, kütüphane, bayt bloğunun BLOB içerisindeki sırrı içerdiğini bilmek için bunu desteklemelidir. Sırrın yeni bir anahtar çifti kullanılarak yeniden şifrelenmesi gerekiyordu, ancak evet, kavramsal olarak şifre metni kalıyordu. –