Bu, dökümanın eski bir sürümüdür!
6.2 Veri Şifreleme Bir veriyi şifrelemek için CmsEnvelopeGenerator veya CmsEnvelopeStreamGenerator sınıfları kullanılmalıdır. Büyük verilerin şifrelenmesi için CmsEnvelopeStreamGenerator sınıfı kullanılmalıdır. CmsEnvelopeGenerator sınıfı bellek üzerindeki bir veriyi şifrelediginden, şifreleyebilecegi dosyanın boyutu JRE'nin bellek sınırı kadardır. Bir doküman bir kişiye veya daha fazla kisiye şifrelenebilir. Eger şifrelenmis dokümanının şifresi çözülebiliyorsa, bu dokümana yeni alıcılar eklenebilir. Sifreli veri göndermek için, verinin gönderilecegi kişi veya kişilerin sertifikalarının elimizde olması gerekmektedir. Java CmsEnvelopeStreamGenerator cmsGenerator = new CmsEnvelopeStreamGenerator(plainInputStream ); cmsGenerator.addRecipientInfos(new ECertificate [] {cert}); cmsGenerator.generate(encryptedOutputStream);
C# CmsEnvelopeStreamGenerator cmsGenerator = new CmsEnvelopeStreamGenerator(plainInputStream ); cmsGenerator.addRecipientInfos(new ECertificate [] {cert}); cmsGenerator.generate(encryptedOutputStream);
6.3 Şifreli Verinin Çözülmesi Sifreli verinin çözülmesi için CmsEnvelopeParser veya CmsEnvelopeStreamParser sınıfı kullanılmalıdır. Büyük sifreli verilerin çözülmesi için CmsEnvelopeStreamParser sınıfı kullanılmalıdır. Sifrelenmis verinin çözülmesi için hangi sertifika için sifrelenmis ise o sertifika ve o sertifikaya ait sifre çözücünün elimizde olması gerekmektedir. Sifre çözücü olarak akıllı kart veya bellek kullanılabilir. Asagıda akıllı kart ile sifreli veriyi çözen örnek kod blogu verilmistir.
Java ByteArrayOutputStream decryptedOutputStream = new ByteArrayOutputStream();
SmartCard sc = new SmartCard(CardType.AKIS); long slot = sc.getSlotList()[0]; long session = sc.openSession(slot); sc.login(session, “12345”);
CmsEnvelopeStreamParser cmsParser = new CmsEnvelopeStreamParser(encryptedInputStream); IDecryptorStore decryptor = new SCDecryptor(sc, session); cmsParser.open(decryptedOutputStream, decryptor);
C# MemoryStream decryptedOutputStream = new MemoryStream();
SmartCard sc = new SmartCard(CardType.AKIS); long slot = sc.getSlotList()[0]; long session = sc.openSession(slot); sc.login(session, “12345”);
CmsEnvelopeStreamParser cmsParser = new CmsEnvelopeStreamParser(encryptedInputStream); IDecryptorStore decryptor = new SCDecryptor(sc, session); cmsParser.open(decryptedOutputStream, decryptor);