XOR Memperkenalkan secara singkat: XOR adalah operasi bit berbasis biner, diwakili oleh simbol XOR atau ^. Algoritme -nya adalah menggunakan nilai yang sama ke 0 dan 1 untuk setiap bit biner dari angka di kedua sisi operator.
Pemahaman sederhana adalah menambahkan tanpa membawa, seperti 1+1 = 0, 0+0 = 0, 1+0 = 1.
Deskripsi persyaratan
Mengenkripsi data dalam era informasi adalah topik yang sangat penting. Selama proses melakukan proyek, saya juga menerapkan algoritma enkripsi yang relatif kompleks. Namun, karena teknologi yang terlibat bersifat rahasia, saya mengimplementasikan versi yang relatif sederhana di sini, menggunakan aliran input dan output file dan operasi XOR untuk mengenkripsi file yang sewenang -wenang. Mengenai algoritma dekripsi, itu sangat sederhana dan dapat diselesaikan dengan memikirkannya sendiri.
Prinsip Matematika
Algoritma enkripsi ini menggunakan fungsi dua angka XOR. Mari kita bicara secara singkat tentang prinsip XOR. XOR sebenarnya adalah pengoperasian pengkodean biner dari suatu file. Sederhananya, ketika dua bit biner sama, itu adalah 0 dan bukan 1 pada saat yang sama. Lihat contoh berikut:
// Representasi biner 7: 00000111 // Representasi biner 2: 00000010 // Hasil yang diperoleh oleh XOR keduanya: 00000101 // Hasil yang diperoleh dengan angka tersebut 5 // ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Implementasi Kode
import java.io.*;class FileSecret{public static void main(String[] args) throws Exception {//Find the file to be encrypted, specify the drive letter yourself, and the input and output do not need to be in the same drive letter File inFile = new File("Drive letter://encrypted file");//Output the file to be encrypted to the specified drive letter File outFile = new File ("Drive Letter: // File Dekripsi"); // Buat saluran data untuk memungkinkan data biner dari gambar mengalir ke fileInputStream input = new FileInputStream (Infile); FileOutputStream Output = FileOutputStream baru (OutFile); // Dalam proses membaca, data baca XOR adalah angka. Jumlah ini harus dihasilkan oleh semacam algoritma enkripsi. Di sini saya cukup menyusun nomor 928 (ulang tahun saya), kemudian melakukan eksklusif atau, dan output data int yang diperoleh konten = 0; // variabel ini digunakan untuk menyimpan data baca. Tentu saja, tipe data yang lebih lama seperti yang lama dapat digunakan di sini. Tentu saja, kami juga dapat menggunakan tipe data lainnya. Cukup memenuhi tipe data di kedua ujung ^ yang dapat dikonversi satu sama lain, setidaknya dapat dilemparkan sementara ((content = input.read ())! =-1) // Jika akhir file tidak tercapai, maka terus membaca data, dan data yang dibaca telah disimpan dalam variabel konten. -1 adalah karakter akhir dari file {output.write (konten^928); // tulis ke aliran file output} // tutup input.close (); output.close ();}}}Evaluasi Fungsi Kode
Untuk kode ini, fungsi pada dasarnya dapat memenuhi kebutuhan, tetapi ada kekurangan. Pertama, algoritma enkripsi tidak digunakan untuk menghasilkan ujung lain dari nomor XOR, dan kedua, saya tidak menerapkan dekripsi file. Faktanya, dekripsi sangat sederhana. Harap baca bagian prinsip matematika dengan hati -hati dan Anda dapat tahu cara menulis algoritma dekripsi. Faktanya, enkripsi dan dekripsi tidak diimplementasikan pada saat yang sama di tempat yang sama, tetapi enkripsi dihitung menggunakan algoritma enkripsi yang sama.
Algoritma yang ditingkatkan menggunakan angka acak
Dalam proses di atas, kami benar -benar menggunakan nilai yang diberikan untuk melakukan XOR dengan file biner yang kami baca. Jadi bisakah kita menggunakan nomor acak untuk mengganti konvensi ini? Jawabannya adalah ya. Pertama -tama, kami menggunakan variabel tipe int untuk menyimpannya. Kisaran yang dapat diwakili adalah: plus atau minus 2,1 miliar angka yang dapat diwakili. Kode spesifiknya adalah sebagai berikut:
// Metode untuk menghasilkan angka acak mengimpor java.util.*; Kelas publik randomtest {public static void main (string [] args) {acak acak = acak baru (); int num = random.nextInt (11); // menunjukkan bahwa angka acak antara 0-10 dihasilkan. Kita harus dapat menyimpan nomor acak yang dihasilkan untuk enkripsi dan dekriptor untuk menggunakan system.out.println ("Nomor acak adalah:"+num); }}Algoritma enkripsi yang ditingkatkan
Kode Enkripsi:
import java.io.*;import java.util.*;class FileSecret{public static void main(String[] args) throws Exception {//Find the file to be encrypted, specify the drive letter yourself, and the input and output do not need to be in the same drive letter File inFile = new File("Driver://encrypted file");//Output the file to be encrypted to the specified drive letter File outFile = new File("Driver://decrypted file");//Create a data channel to allow the binary data of the picture to flow into FileInputStream input = new FileInputStream(inFile);FileOutputStream output = new FileOutputStream(outFile);//Another number that generates encrypted XOR Random random = new Random();int num = random.nextint(11);//Denotes that a Nomor acak antara 0 dan 10 dihasilkan. Kita harus dapat menyimpan nomor acak yang dihasilkan untuk enkripsi dan dekriptor untuk menggunakan System.out.println ("Nomor acak adalah:"+num); // Dalam proses membaca, data yang dibaca akan menjadi angka xor, yang harus dihasilkan oleh semacam algoritma enkripsi. Di sini saya cukup menyusun nomor 928 (ulang tahun saya), dan kemudian melakukan XOR, dan output data int yang diperoleh Konten = 0; // Variabel ini digunakan untuk menyimpan data baca. Tentu saja, tipe data yang lebih lama seperti yang lama dapat digunakan di sini. Tentu saja, kami juga dapat menggunakan tipe data lainnya. Kita hanya perlu memenuhi tipe data di kedua ujung ^ untuk saling mengonversi, dan setidaknya konversi tipe cast dapat dilakukan saat ((content = input.read ())! =-1) // Jika tidak tercapai akhir file, kemudian terus membaca data, dan data baca telah disimpan dalam variabel konten. -1 adalah karakter akhir dari file {output.write (konten^num); // Tulis ke aliran file output} // Tutup input.close (); output.close ();}}}}Sisi enkripsi perlu menginformasikan sisi dekripsi NUM yang dihasilkan dalam kode di atas, jika tidak, dekripsi file tidak dapat diimplementasikan.
Kode Dekripsi:
import java.io.*;class FileSecret{public static void main(String[] args) throws Exception {//Find the file to be encrypted, specify the drive letter yourself, and the input and output do not need to be in the same drive letter File inFile = new File("Drive letter://encrypted file");//Output the file to be encrypted to the specified drive letter File outFile = new File ("Drive Letter: // File Dekripsi"); // Buat saluran data untuk memungkinkan data biner dari gambar mengalir ke fileInputStream input = new FileInputStream (Infile); FileOutputStream Output = FileOutputStream baru (OutFile); // Dalam proses membaca, data baca XOR adalah angka. Jumlah ini harus dihasilkan oleh semacam algoritma enkripsi. Di sini saya cukup menyusun nomor 928 (ulang tahun saya), kemudian melakukan eksklusif atau, dan output data int yang diperoleh konten = 0; // variabel ini digunakan untuk menyimpan data baca. Tentu saja, tipe data yang lebih lama seperti yang lama dapat digunakan di sini. Tentu saja, kami juga dapat menggunakan tipe data lainnya. Cukup memenuhi tipe data di kedua ujung ^ yang dapat dikonversi satu sama lain, setidaknya dapat dilemparkan sementara ((content = input.read ())! =-1) // Jika akhir file tidak tercapai, maka terus membaca data, dan data yang dibaca telah disimpan dalam variabel konten. -1 adalah karakter akhir dari file {output.write (konten^ nomor terenkripsi yang dikirimkan dari ujung enkripsi); // Tulis ke stream file output} // Tutup input sumber daya.close (); output.close ();}}Membaik lagi
Bahkan, dalam kode kami, kode enkripsi standar harus dihasilkan secara acak dan berisi berbagai simbol seperti huruf dan angka. Jadi bagaimana kita menghasilkan string enkripsi seperti itu? Bagaimana cara mengubah string enkripsi seperti itu menjadi kode biner setelah menghasilkannya? Berikan ide: Menggunakan ekspresi reguler Java dapat menghasilkan string apa pun yang Anda inginkan, dan kemudian gunakan metode konversi string untuk menghasilkan kode biner yang sesuai. Saya telah menerapkan metode pembuatan enkripsi yang sangat kompleks sendiri, tetapi tidak dapat diungkapkan. Ini melibatkan informasi proyek laboratorium, dan ada banyak bidang kriptografi dan banyak algoritma enkripsi klasik yang juga dapat digunakan.
Meringkaskan
Di atas adalah semua konten dari artikel ini tentang penjelasan terperinci tentang prinsip enkripsi dan penggunaan file apa pun dalam operasi Java Xor. Saya harap ini akan membantu semua orang. Teman yang tertarik dapat terus merujuk ke situs ini:
Java menggunakan operasi XOR untuk mengimplementasikan kode instance enkripsi dan dekripsi yang sederhana
Contoh Kode Implementasi Pemrograman Java Contoh Exor atau Operasi pada string heksadesimal
Analisis kode masalah xor di java
Jika ada kekurangan, silakan tinggalkan pesan untuk menunjukkannya. Terima kasih teman atas dukungan Anda untuk situs ini!