Java’yı Şifreleme: GroupDocs ile Özel XOR Şifreleme
Giriş
Belirli bir iş akışı için how to encrypt java koduna ihtiyaç duyduysanız, yerleşik seçeneklerin eski protokolünüzle veya performans hedefinizle eşleşmemesinin yarattığı hayal kırıklığını biliyorsunuz. Yeni bir imzalama modülünü, basit bir XOR‑maskeli yük bekleyen eski bir ERP sistemine entegre ettiğinizi hayal edin. Tüm ERP’yi yeniden yazabilirsiniz, ancak daha hızlı bir yol, Java uygulamanıza hafif bir özel şifreleme katmanı eklemektir.
Bu rehberde, özel bir XOR şifreleme mekanizması oluşturmayı, GroupDocs.Signature for Java ile entegre etmeyi ve bu yaklaşımın ne zaman mantıklı olduğuna, endüstri standardı algoritmalara ne zaman yönelmeniz gerektiğine değineceğiz. Sonunda imza meta verilerini koruyabilecek, garip entegrasyon sözleşmelerini karşılayabilecek ve üretim‑düzeyi kodda XOR kullanmanın ödünleşimlerini anlayabileceksiniz.
Öğrenecekleriniz:
- Eski sistem ve performans senaryoları için özel şifrelemenin önemi
- XOR şifrelemesinin nasıl çalıştığı (basit İngilizce + Java örneği)
- GroupDocs.Signature for Java ile adım‑adım entegrasyon
- Gerçek dünya kullanım durumları, güvenlik hususları ve yaygın tuzaklar
- XOR uygulamasını daha güçlü bir algoritma ile nasıl değiştirebileceğiniz
Hızlı Yanıtlar
- XOR şifrelemesi nedir? Aynı anahtarı kullanan bir bit tersleme işlemi; aynı anahtarla iki kez şifrelemek orijinal veriyi geri getirir.
- Özel şifreleme ne zaman kullanılmalı? Eski sistem uyumluluğu, performans‑kritik gizleme veya öğrenme amaçları için—hassas verileri korumak için değil.
- Bu öğreticide hangi kütüphane kullanılıyor? GroupDocs.Signature for Java (v23.12 veya sonrası).
- Lisans gerekli mi? Test için ücretsiz deneme yeterlidir; üretim için tam lisans gerekir.
- XOR’ı daha sonra AES ile değiştirebilir miyim? Evet—
encrypt/decryptmantığını aynıIDataEncryptionarayüzünü koruyarak değiştirmeniz yeterlidir.
Java’da özel şifreleme nedir?
IDataEncryption GroupDocs.Signature arayüzü olup veri şifreleme ve şifre çözme yöntemlerini tanımlar. Özel şifreleme, verinin depolanmadan veya iletilmeden önce tam olarak nasıl dönüştürüleceğini belirlemenizi sağlar. GroupDocs.Signature ile IDataEncryption arayüzünün bir uygulamasını sağlarsınız ve kütüphane, imza verilerini koruması gerektiğinde otomatik olarak kodunuzu çağırır. Bu eklenti modeli, kanıt‑konsepti için basit bir XOR rutinine başlayıp, daha sonra AES‑256 ile değiştirebilmenizi sağlar; imzalama iş akışınızın geri kalanına dokunmanız gerekmez.
Neden Özel Şifreleme Önemlidir
Özel şifreleme, mevcut algoritmaların eski protokol formatları, katı performans bütçeleri veya özel sözleşme gereksinimleri gibi belirli kısıtlamaları karşılayamadığı durumlarda değerlidir. Kendi rutininizi uygulayarak veri dönüşümü üzerinde tam kontrol elde eder, yükü azaltır ve dış sistemleri yeniden yazmadan uyumluluğu sağlarsınız; aynı zamanda GroupDocs’un genişletilebilirliğinden yararlanırsınız.
Eski Sistem Entegrasyonu
Eski sistemler bazen çok belirli bir bayt‑düzeyi dönüşüm ister—genellikle tek‑baytlı bir XOR anahtarıyla. Bu sistemleri yeniden mühendislik yapmak maliyetli olduğundan, beklentilerini karşılayan özel bir şifreleyici kullanmak pragmatik bir yoldur.
Performans Optimizasyonu
AES‑256 gibi standart algoritmalar kriptografik olarak güçlüdür ancak düşük‑güç cihazlarda veya milyonlarca küçük yük işlenirken belirgin CPU döngüleri tüketebilir. XOR, bayt başına tek bir CPU talimatı ile çalışır ve hassas olmayan veri için neredeyse sıfır ek yük sağlar.
Özel Gereksinimler
Bazı sözleşmeler veya sektör standartları özel bir algoritma (ör. devlet‑mandated “XOR‑mask”) zorunlu kılar. Gerekli mantığı kendiniz uygulamak, modern yığını korurken uyumluluğu sağlar.
Öğrenme ve Esneklik
Özel bir şifreleyici oluşturmak, bayt‑düzeyi işlemleri, anahtar yönetimini ve IDataEncryption arayüzünün sözleşme‑tabanlı tasarımını anlamanızı sağlar. Bu bilgi, daha karmaşık kriptografi benimseyince size büyük fayda sağlar.
Pro ipucu: Özel şifrelemeyi yalnızca başka katmanlar (TLS, VPN veya veritabanı şifrelemesi) tarafından zaten korunan veriler için kullanın. Kişisel veya finansal bilgiler için XOR’a tek başına güvenmeyin.
XOR’ı Anlamak: Temeller
XOR (exclusive OR) iki biti karşılaştırır ve 1 farklıysa, 0 aynıysa döndürür:
- 0 XOR 0 = 0
- 0 XOR 1 = 1
- 1 XOR 0 = 1
- 1 XOR 1 = 0
İşlem kendi tersidir; aynı anahtarı ikinci kez uygulamak orijinal değeri geri getirir. Java’da iki baytı ^ operatörüyle XORlayabilirsiniz:
byte encrypted = (byte)(plainByte ^ key);
Bir bayt dizisini tek‑baytlı bir anahtarla XORladığınızda hızlı, geri döndürülebilir bir dönüşüm elde edersiniz. Tek‑baytlı bir anahtar yalnızca 255 olası varyasyon üretir; bu yüzden bir miktar şifreli metinle herkes anahtarı anında brute‑force edebilir. Bunu yalnızca gizleme amaçlı, gizli veri koruması için kullanmayın.
Önkoşullar
GroupDocs.Signature for Java ile özel şifreleme uygulamaya başlamadan önce şunlara sahip olduğunuzdan emin olun:
Gerekli Kütüphaneler ve Bağımlılıklar
- GroupDocs.Signature for Java – sürüm 23.12 veya sonrası (rehber boyunca kullanacağımız API).
- Java Development Kit – JDK 8 veya daha yeni; uzun vadeli destek için JDK 11 önerilir.
Ortam Kurulum Gereksinimleri
- IntelliJ IDEA, Eclipse veya Java uzantılı VS Code gibi bir IDE.
- Maven veya Gradle (her ikisi de desteklenir) bağımlılık yönetimi için.
Bilgi Önkoşulları
- Java sınıfları, arayüzleri ve bayt‑dizisi manipülasyonu konusunda rahat olmak.
- Simetrik şifreleme kavramlarına temel bir anlayış (XOR bölümünde ele alınmıştır).
Bu kutuları işaretlediyseniz, GroupDocs’u projenize eklemeye hazırsınız.
GroupDocs.Signature for Java’ı Kurma
Kütüphaneyi derleme sisteminize eklemek tek bir XML veya Groovy satırı kadar basittir.
Maven
<dependency>
<groupId>com.groupdocs</groupId>
<artifactId>groupdocs-signature</artifactId>
<version>23.12</version>
</dependency>
Gradle
implementation 'com.groupdocs:groupdocs-signature:23.12'
Direct Download
Manuel yönetimi tercih ediyorsanız, JAR dosyasını GroupDocs.Signature for Java releases adresinden indirin ve sınıf yolunuza ekleyin.
Lisans Edinme Adımları
- Ücretsiz Deneme – deneme JAR dosyasını indirin; çıktı dosyalarında görünür bir filigran bulunur.
- Geçici Lisans – tam özellikli test için 30‑günlük değerlendirme anahtarı isteyin.
- Satın Al – üretim dağıtımları için kalıcı lisans alın.
Temel Başlatma ve Kurulum
Signature signature = new Signature("sample.pdf");
Signature nesnesi, GroupDocs.Signature içinde tüm imzalama, doğrulama ve şifreleme işlemlerinin giriş noktasıdır.
Uygulama Kılavuzu
Özel XOR Şifreleme Özelliği
IDataEncryption arayüzünü uygulayan bir sınıf oluşturacağız, ardından bunu Signature nesnesiyle kaydedeceğiz.
Adım 1: IDataEncryption Arayüzünü Uygula
IDataEncryption GroupDocs.Signature arayüzü olup veri şifreleme ve şifre çözme yöntemlerini tanımlar.
public class CustomXOREncryption implements IDataEncryption {
private byte auto_Key = 0x5A; // example key
@Override
public byte[] encrypt(byte[] data) { /* implementation below */ }
@Override
public byte[] decrypt(byte[] data) { /* implementation below */ }
public void setKey(byte key) { this.auto_Key = key; }
public byte getKey() { return this.auto_Key; }
}
Ne oluyor: Sınıf iki temel işlemi (encrypt ve decrypt) vaat eder. auto_Key alanı, yükün her baytına uygulanacak XOR anahtarını saklar.
Adım 2: Şifreleme ve Şifre Çözme Yöntemlerini Tanımla
XOR simetrik olduğundan, iki yöntem aynı bayt‑düzey dönüşümü gerçekleştirir.
public byte[] encrypt(byte[] data) {
if (auto_Key == 0 || data == null) return data;
byte[] result = new byte[data.length];
for (int i = 0; i < data.length; i++) {
result[i] = (byte)(data[i] ^ auto_Key);
}
return result;
}
public byte[] decrypt(byte[] data) {
return encrypt(data); // XOR decryption is identical to encryption
}
Açıklama:
- Guard clause’ları sıfır anahtar (hiçbir işlem yapmaz) ve
nullgirdileri korur. - Yeni bir bayt dizisi, orijinal tamponu değiştirmemek için dönüşmüş veriyi tutar.
- Döngü, her baytı
auto_Keyile XORlar. - Şifre çözme, aynı XOR’u tekrar çağırdığı için sadece
encryptmetodunu tekrar çalıştırır.
Anahtar Yapılandırma Seçenekleri
- auto_Key 1 ile 255 arasında sıfır olmayan bir değer olmalıdır. 255’in üzerindeki değerler düşük 8 bit’e kırpılır.
- Anahtarı güvenli bir şekilde saklayın—ortam değişkenleri, şifreli yapılandırma dosyaları veya ayrı bir gizli yönetici önerilir.
- Üretimde bu basit baytı çok‑baytlı bir anahtara veya tam bir AES şifreleyicisine yükseltmeniz muhtemeldir, ancak arayüz aynı kalır.
Anahtar Ayarlama Örneği
CustomXOREncryption xor = new CustomXOREncryption();
xor.setKey((byte)0x3C); // set a custom key at runtime
signature.setDataEncryption(xor);
Yaygın Uygulama Hataları
| Hata | Neden Zararlı | Nasıl Düzeltilir |
|---|---|---|
| Anahtar ayarlamayı unuttum | Şifreleme etkisiz kalır, veri düz metin olarak kalır. | encryptor kullanmadan önce her zaman setKey() çağırın veya yapıcıda sıfır olmayan bir varsayılan anahtar sağlayın. |
| null veriyi göz ardı ettim | İmzalama sırasında NullPointerException oluşur. | Her iki yöntemin başına if (data == null) return data; ekleyin. |
| XOR’un güvenli olduğunu varsaydım | Tek‑baytlı anahtar milisaniyeler içinde brute‑force edilebilir. | XOR’u yalnızca gizleme amaçlı kullanın; gizli yükler için AES‑256’ya geçin. |
| Şifre çözmede anahtar eşleşmedi | Veri geri alınamaz hâle gelir. | Şifreli yükle birlikte anahtarı saklayın veya anahtar‑kimlik eşlemesi kullanın. |
Güvenlik Hususları
Neden XOR Hassas Veri İçin Yeterli Değildir
Tek‑baytlı bir XOR, pratikte hiçbir kriptografik güç sağlamaz; saldırgan 255 olası anahtarı anında tarayabilir. İşlem aynı zamanda istatistiksel desenleri sızdırır, bu da frekans ve bilinen‑metin saldırılarını triviyal hâle getirir. Bu nedenle XOR, kişisel, finansal veya herhangi bir gizli bilgi için tek başına koruma sağlamamalıdır.
XOR Ne Zaman Kabul Edilebilir
XOR, veri zaten TLS, VPN veya veritabanı şifrelemesi gibi daha güçlü katmanlarla korunuyorsa ve maske yalnızca sıradan incelemeyi caydırmak veya eski bir formatı karşılamak için kullanılıyorsa güvenli bir şekilde kullanılabilir. Geçici tanımlayıcılar, önbellek anahtarları veya güvenilir ortam içinde kalacak iç bayraklar için uygundur.
Önerilen Güçlü Alternatifler
- AES‑256 – endüstri standardı,
javax.cryptoüzerinden yerel destek. - RSA‑2048 – küçük simetrik anahtarları şifrelemek için kullanışlı.
- ChaCha20 – mobil CPU’larda yüksek performans sağlar.
IDataEncryption sözleşmesi algoritmadan bağımsız olduğundan, AES’e geçmek sadece encrypt/decrypt gövdesini uygun şifreleme çağrılarıyla değiştirmeyi gerektirir.
Pratik Uygulamalar
1. Güvenli Belge İmzalama İş Akışı
İmzalayan meta verilerini (ID, zaman damgası, departman) sıradan incelemeyi önleyecek bir şekilde saklamanız gerekebilir. XOR şifreleyicimizi kullanarak meta veriler bayt dizisi olarak imza paketine eklenir, PDF’in geri kalanı dokunulmaz kalır.
Signature signature = new Signature("contract.pdf");
signature.setDataEncryption(new CustomXOREncryption());
SignatureResult result = signature.sign("output.pdf", options);
2. Hafif Bütünlük Kontrolü
Bilinen bir sabiti şifreleyin ve belgeyle birlikte saklayın. Daha sonra şifreyi çözerek karşılaştırın; böylece dosyanın aktarım sırasında bozulmadığını doğrulayabilirsiniz.
3. Eski Sistem Köprüsü
Eski bir mainframe, her baytı 0x7F ile XOR‑maskeli bir yük bekliyor. CustomXOREncryption içinde aynı anahtarı ayarlayarak ayrı bir dönüşüm hizmeti yazmadan veri alışverişi yapabilirsiniz.
Performans Hususları
Ham Hız
XOR, modern bir x86 çekirdeğinde yaklaşık 1 ns/bayt hızla çalışır; 10 MB yük 10 ms’nin çok altında şifrelenir. Buna karşılık AES‑256 CBC modu aynı boyutta 3‑4 kat daha uzun sürer.
Bellek Ayak İzi
Uygulamamız giriş dizisinin bir kopyasını oluşturur, bu da geçici olarak bellek kullanımını ikiye katlar. 50 MB bir dosya için şifreleme sırasında yaklaşık 100 MB yığın gerekir. Daha büyük dosyalarla çalışmanız gerekiyorsa, akışı 4 KB parçalar halinde işleyin:
InputStream in = new FileInputStream(source);
OutputStream out = new FileOutputStream(target);
byte[] buffer = new byte[4096];
int read;
while ((read = in.read(buffer)) != -1) {
for (int i = 0; i < read; i++) {
buffer[i] ^= key;
}
out.write(buffer, 0, read);
}
Java Bellek Yönetimi için En İyi Uygulamalar
- Anahtarı kullanımdan sonra sıfırlayın:
Arrays.fill(keyArray, (byte)0); - try‑with‑resources kullanarak akışların kapanmasını garantileyin.
- Şifreli baytları
Stringe dönüştürmeyin; hambyte[]olarak tutun. - Birçok büyük belgeyi aynı anda işlerken VisualVM gibi araçlarla yığını izleyin.
Yaygın Sorunları Giderme
Sorun 1 – “Şifre çözülmüş veri çöp gibi görünüyor”
Doğrudan yanıt: Aynı XOR anahtarının hem şifreleme hem de şifre çözme için kullanıldığından emin olun, veriyi bütün süreçte bayt dizisi olarak tutun ve baytları bozan karakter kodlaması dönüşümlerinden kaçının.
Neden olur: Anahtar uyuşmazlığı, veri kesintisi veya istemsiz String dönüşümü bayt desenini değiştirir, çıktıyı okunamaz hâle getirir.
Sorun 2 – “Şifreleme sırasında NullPointerException”
Doğrudan yanıt: encrypt metodu null girdileri kontrol eder; hâlâ bir istisna alıyorsanız, kaynak bayt dizisinin şifreleyiciye geçmeden doğru şekilde başlatıldığını doğrulayın.
Düzeltme: Çağıran kodunuzda savunma kontrolleri ekleyin veya imzanın veri kısmını signature.getSignatureData() ile yüklediğinizden emin olun.
Sorun 3 – “Şifreleme hiçbir şey yapmıyor gibi görünüyor”
Doğrudan yanıt: Bu genellikle XOR anahtarının 0 olarak ayarlandığını gösterir. Sıfırla XOR, orijinal baytı değiştirmez; bu yüzden çıktı girişle aynı olur.
Çözüm: setKey() ile sıfır olmayan bir anahtar atayın veya yapıcıda varsayılan bir anahtar tanımlayın.
Sorun 4 – “Büyük PDF’lerde OutOfMemoryError”
Doğrudan yanıt: Tüm PDF’i şifrelemeden önce belleğe yüklemek JVM yığınını aşabilir. Bölüm‑bazlı akışa geçin; performans bölümünde gösterildiği gibi dosyayı parçalar halinde işleyin.
İpucu: -Xmx2g gibi maksimum yığını geçici olarak artırabilirsiniz, ancak ölçeklenebilirlik için kesinlikle bölümlü işleme geçin.
Sıkça Sorulan Sorular
S: Uygun bir XOR anahtarı nasıl seçilir?
A: 1 ile 255 arasında herhangi bir sıfır olmayan tamsayı yeterlidir, ancak anahtar kendisi güvenlik sağlamaz. Gerçek koruma için XOR’u AES‑256 ile değiştirin ve anahtarı güvenli bir kasada tutun.
S: XOR anahtarını çalışma zamanında değiştirebilir miyim?
A: Evet—setKey() ile yeni bir değer atayın. Eski anahtarla şifrelenmiş veriyi yeni anahtarla şifrelemeden önce çözmeniz gerektiğini unutmayın; aksi takdirde veri kaybı yaşarsınız.
S: XOR şifrelemesine alternatifler nelerdir?
A: Öğrenme amaçlı Caesar cipher veya Base64 (yalnızca kodlama) deneyebilirsiniz. Üretim için Java’nın javax.crypto paketi üzerinden AES‑256, RSA‑2048 veya ChaCha20 kullanın.
S: GroupDocs.Signature büyük dosyaları şifrelerken nasıl davranır?
A: Kütüphane mümkün olduğunda PDF içeriğini akış olarak işler, ancak özel IDataEncryption uygulamanız verinin nasıl işlendiğini belirler. Bellek aşımını önlemek için bölümlü şifreleme uygulayın.
S: Bu özelliği bir web uygulamasına entegre edebilir miyim?
A: Kesinlikle. Şifreleyiciyi bir Spring Bean olarak kaydedin, Signature servisini enjekte edin ve anahtarı ortam değişkeni veya gizli yönetici içinde tutun. Her isteğin ayrı bir iş parçacığında veri işlediğinden emin olun, böylece yarış koşulları önlenir.
XOR Şifreleme Java’da Nasıl Çalışır?
Java’da XOR, bayt değerleri üzerinde ^ operatörüyle gerçekleştirilir. Düz metni bir bayt dizisine yükler, her elemanı döngüyle iterasyon yapar ve byte ^ key uygularsınız. XOR kendi tersidir; aynı anahtarla aynı rutini tekrar çalıştırmak orijinal baytları geri getirir, bu da şifreleme ve şifre çözmeyi simetrik hâle getirir.
GroupDocs ile Özel Şifreleme Uygulama Adımları Nelerdir?
Özel şifreleme eklemek için önce IDataEncryption arayüzünü uygulayan bir sınıf oluşturursunuz, ardından algoritmanızı encrypt ve decrypt metodlarında kodlarsınız. Daha sonra bu örneği Signature nesnesi üzerinden setDataEncryption ile kaydedersiniz. Bundan sonra GroupDocs, imza verilerini koruması gerektiğinde otomatik olarak sizin mantığınızı çağırır.
Sonuç
how to encrypt java kodunu özel bir XOR rutiniyle nasıl şifreleyeceğinizi, GroupDocs.Signature ile entegrasyonunu ve bu hafif yaklaşımın ne zaman değer kattığını ele aldık. Unutmayın:
- XOR’u yalnızca gizleme amaçlı, kişisel veya finansal verileri korumak için kullanmayın.
IDataEncryptionarayüzü, daha güçlü algoritmalara geçiş için temiz bir takas noktası sunar.- Üretim stabilitesi için doğru anahtar yönetimi, bellek kullanımı ve akış işleme şarttır.
Sonraki adımlar:
- Gerçek güvenlik için XOR mantığını AES‑256 ile değiştirin.
- Anahtar rotasyonu ve güvenli depolamayı uygulayın.
- GroupDocs’un çok‑imza iş akışları, doğrulama ve belge damgalama gibi diğer özelliklerini keşfedin.
Artık herhangi bir Java imzalama çözümünde şifrelemeyi özelleştirmek için sağlam bir temele sahipsiniz—iş ihtiyaçlarınıza tam olarak uyarlayın!
Son Güncelleme: 2026-06-26
Test Edilen: GroupDocs.Signature 23.12 for Java
Yazar: GroupDocs
İlgili Kaynaklar:
- GroupDocs.Signature for Java Belgeleri
- API Referansı
- En Son Sürüm İndir
- Lisans Satın Al
- Ücretsiz Deneme
- Geçici Lisans Talebi
- GroupDocs Destek Forumu
Original data: 5 (binary: 0101)
Key: 3 (binary: 0011)
Encrypted: 5 XOR 3 = 6 (binary: 0110)
Decrypted: 6 XOR 3 = 5 (binary: 0101) ← We're back!
<dependency>
<groupId>com.groupdocs</groupId>
<artifactId>groupdocs-signature</artifactId>
<version>23.12</version>
</dependency>
implementation 'com.groupdocs:groupdocs-signature:23.12'
import com.groupdocs.signature.Signature;
class InitializeGroupDocs {
public static void main(String[] args) {
Signature signature = new Signature("path/to/your/document");
// Additional setup and operations can be performed here.
}
}
import com.groupdocs.signature.domain.extensions.encryption.IDataEncryption;
class CustomXOREncryption implements IDataEncryption {
private int auto_Key;
public final int getKey() {
return auto_Key;
}
// Additional methods for encryption and decryption will be implemented here.
}
class CustomXOREncryption {
private int auto_Key;
public byte[] encrypt(byte[] data) {
if (auto_Key == 0 || data == null) return data;
byte[] result = new byte[data.length];
for (int i = 0; i < data.length; i++) {
result[i] = (byte) (data[i] ^ auto_Key);
}
return result;
}
public byte[] decrypt(byte[] encryptedData) {
// Since XOR is symmetric, use the same method as encryption
return encrypt(encryptedData);
}
}
CustomXOREncryption encryption = new CustomXOREncryption();
encryption.setKey(42); // Any non-zero value works
CustomXOREncryption encryption = new CustomXOREncryption();
// Oops! Never called setKey(), so auto_Key is 0
byte[] encrypted = encryption.encrypt(myData); // Returns data unchanged!
Signature signature = new Signature("contract.pdf");
CustomXOREncryption encryption = new CustomXOREncryption();
encryption.setKey(73); // Configure your key
// GroupDocs will use your encryption for signature data
// (Actual integration depends on specific GroupDocs API methods)
String integrityToken = "VALID_SIGNATURE_2025";
byte[] encrypted = encryption.encrypt(integrityToken.getBytes());
// Store encrypted with document...
// Later, decrypt and compare to verify nothing changed
// Old system expects data encrypted with XOR key 42
CustomXOREncryption legacyEncryption = new CustomXOREncryption();
legacyEncryption.setKey(42);
// Encrypt data before sending to legacy system
byte[] dataForOldSystem = legacyEncryption.encrypt(modernData);
sendToLegacyAPI(dataForOldSystem);
// More memory‑efficient for large data
public void encryptInPlace(byte[] data) {
if (auto_Key == 0 || data == null) return;
for (int i = 0; i < data.length; i++) {
data[i] = (byte) (data[i] ^ auto_Key);
}
}
Arrays.fill(decryptedData, (byte) 0); // Overwrite with zeros
try (FileInputStream fis = new FileInputStream("encrypted.dat")) {
// Process data
} // Automatically closed
assert auto_Key != 0 : "Encryption key must be set!";
try (FileInputStream in = new FileInputStream(path);
FileOutputStream out = new FileOutputStream(encryptedPath)) {
byte[] buffer = new byte[4096];
int bytesRead;
while ((bytesRead = in.read(buffer)) != -1) {
encryptInPlace(buffer, 0, bytesRead);
out.write(buffer, 0, bytesRead);
}
}
@Component
public class EncryptionService {
private CustomXOREncryption encryption;
public EncryptionService(@Value("${app.encryption.key}") int key) {
this.encryption = new CustomXOREncryption();
this.encryption.setKey(key);
}
// Use in your controllers...
}