您好,登錄后才能下訂單哦!
今天就跟大家聊聊有關(guān)使用Java怎么實(shí)現(xiàn)文本的加密和解密,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結(jié)了以下內(nèi)容,希望大家根據(jù)這篇文章可以有所收獲。
Java的基本數(shù)據(jù)類型分為:1、整數(shù)類型,用來表示整數(shù)的數(shù)據(jù)類型。2、浮點(diǎn)類型,用來表示小數(shù)的數(shù)據(jù)類型。3、字符類型,字符類型的關(guān)鍵字是“char”。4、布爾類型,是表示邏輯值的基本數(shù)據(jù)類型。
編寫一個Java程序,實(shí)現(xiàn)一個文本信息的加密。
可視化界面,友好的輸入和輸出,文件的存取。
所謂數(shù)據(jù)加密(Data Encryption)技術(shù)是指將一個信息(或稱明文,plain text)經(jīng)過加密鑰匙(Encryption key)及加密函數(shù)轉(zhuǎn)換,變成無意義的密文(cipher text),而接收方則將此密文經(jīng)過解密函數(shù)、解密鑰匙(Decryption key)還原成明文。
登錄驗(yàn)證界面
建立基本框架,基于Swing中Frame
各組件的屬性
組件編號/類型 | 名稱/屬性 |
1 /JLabel | lblNewLabel/用戶名 |
2/JPasswordField | passwordField/ |
3 /JButton | btnNewButton/確定 |
4 /JTextField | textField/ |
5 /JPasswordField | passwordField/ |
6 /JButton | btnNewButton_1/退出 |
(左邊一列從上到下依次為1-2,右邊一列從上到下依次為3-5)
當(dāng)use_name和password都正確時,跳轉(zhuǎn)到下一界面,否則按下正確按鈕時,將輸入的字符串重置為空。
String use_name=textField.getText(); String password; password=String.valueOf(passwordField.getPassword()); if(use_name.equals("DJC期待")&&password.equals("1234")) { SignUp.this.setVisible(false); Jia_mi d=new Jia_mi();//加密和解密類 d.setVisible(true); } else { String nl=""; textField.setText(nl); passwordField.setText(nl); }
正常退出,程序正常執(zhí)行結(jié)束退出
System.exit(0);
建立基本框架,基于Swing中Frame
各組件的屬性
組件編號/類型 | 名稱/屬性 |
1 /JButton | btnNewButton_2/<<翻譯 |
2/JTextArea | textArea/ |
3 /JButton | btnNewButton_1/打開密文 |
4/JTextArea | textArea_1/ |
5 /JButton | btnNewButton/保存文本 |
(左邊一列從上到下依次為1-2,右邊一列從上到下依次為3-5)
多行文本輸入框的功能與單行文本輸入框的功能相同,只是它能顯示更多的文字。因?yàn)閱涡形谋据斎肟蛑荒茌斎胍恍械奈淖?,所以需要輸入和顯示較多的文字時,就要用到多行文本輸入框。多行文本輸入框是由 JTextArea 類實(shí)現(xiàn)的。
在caretUpdate()函數(shù)中,先取到用戶輸入的字符然后依次將這些字符轉(zhuǎn)為Unicode編碼加999重新以字符的編碼賦值輸出,顯示在右邊Jtextarea中。
String str1=textArea.getText(); String str2=""; char c; for(int i=0;i<str1.length();i++) { c=str1.charAt(i); c=(char)(c+999); str2+=c; } textArea_1.setText(str2);
JFileChooser jfchooser=new JFileChooser(); if(jfchooser.showSaveDialog(null)== JFileChooser.APPROVE_OPTION) { File f=jfchooser.getSelectedFile(); try { FileWriter fw=new FileWriter(f); String str=textArea_1.getText(); fw.write(str); fw.close(); } catch(IOException e1) { e1.printStackTrace(); } }
public void actionPerformed(ActionEvent e) { JFileChooser fchooser=new JFileChooser(); if(fchooser.showOpenDialog(null)== JFileChooser.APPROVE_OPTION) { File f=fchooser.getSelectedFile(); try { FileReader fr=new FileReader(f); try { int n=fr.read(); String str=""; char c; while(n!=-1) { c=(char)n; str+=c; n=fr.read(); } textArea_1.setText(str); fr.close(); } catch(IOException e1) { e1.printStackTrace(); } } catch(FileNotFoundException e1) { e1.printStackTrace(); } }
加密過程的反過程。
String str2=textArea_1.getText(); String str1=""; for(int i=0;i<str2.length();i++) { char c=str2.charAt(i); c=(char)(c-999); str1+=c; } textArea.setText(str1); }
登錄
賬號和密碼不同時為對時,賬號框和密碼框重置。
密碼和賬號同時為對時,進(jìn)入加密和解密界面。
文本與加密文本的轉(zhuǎn)換。
保存的文件。
打開密文方法與以上相同。
將密文(Unicode編碼)轉(zhuǎn)換明文。
將程序?qū)С鰹橐粋€可執(zhí)行的Java軟件
桌面可執(zhí)行軟件。
步驟:File-Export-選擇main函數(shù)所在類-選擇導(dǎo)出的位置。
package 文本信息的加密與解密; import java.awt.BorderLayout; import java.awt.EventQueue; import java.awt.Frame; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.border.EmptyBorder; import javax.swing.JLabel; import javax.swing.JTextField; import javax.swing.JButton; import java.awt.event.ActionListener; import java.awt.event.ActionEvent; import javax.swing.JPasswordField; public class SignUp extends JFrame { private JPanel contentPane; private JTextField textField; private JPasswordField passwordField; /** * Launch the application. */ public static void main(String[] args) { EventQueue.invokeLater(new Runnable() { public void run() { try { SignUp frame = new SignUp(); frame.setVisible(true); } catch (Exception e) { e.printStackTrace(); } } }); } /** * Create the frame. */ public SignUp() { setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setBounds(100, 100, 450, 300); contentPane = new JPanel(); contentPane.setBorder(new EmptyBorder(5, 5, 5, 5)); setContentPane(contentPane); contentPane.setLayout(null); JLabel lblNewLabel = new JLabel("\u7528\u6237\u540D"); lblNewLabel.setBounds(34, 27, 69, 26); contentPane.add(lblNewLabel); JLabel lblNewLabel_1 = new JLabel("\u5BC6\u7801"); lblNewLabel_1.setBounds(34, 104, 69, 26); contentPane.add(lblNewLabel_1); textField = new JTextField(); textField.setBounds(153, 30, 164, 35); contentPane.add(textField); textField.setColumns(10); JButton btnNewButton = new JButton("\u786E\u5B9A"); btnNewButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { String use_name=textField.getText(); String password; password=String.valueOf(passwordField.getPassword()); if(use_name.equals("DJC期待")&&password.equals("1234")) { SignUp.this.setVisible(false); Jia_mi d=new Jia_mi(); d.setVisible(true); } else { String nl=""; textField.setText(nl); passwordField.setText(nl); } } }); btnNewButton.setBounds(53, 194, 93, 23); contentPane.add(btnNewButton); JButton btnNewButton_1 = new JButton("\u9000\u51FA"); btnNewButton_1.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { System.exit(0); } }); btnNewButton_1.setBounds(234, 194, 93, 23); contentPane.add(btnNewButton_1); passwordField = new JPasswordField(); passwordField.setBounds(153, 104, 164, 24); contentPane.add(passwordField); } }
package 文本信息的加密與解密; import java.awt.EventQueue; import java.awt.Frame; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.border.EmptyBorder; import java.awt.event.ActionListener; import java.io.File; import java.io.FileNotFoundException; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; import java.awt.event.ActionEvent; import javax.swing.JTextArea; import javax.swing.JButton; import javax.swing.JFileChooser; import javax.swing.event.CaretListener; import javax.swing.event.CaretEvent; public class Jia_mi extends JFrame { private JPanel contentPane; /** * Launch the application. */ public static void main(String[] args) { EventQueue.invokeLater(new Runnable() { public void run() { try { Jia_mi frame = new Jia_mi(); frame.setVisible(true); } catch (Exception e) { e.printStackTrace(); } } }); } /** * Create the frame. */ public Jia_mi() { setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setBounds(100, 100, 630, 404); contentPane = new JPanel(); contentPane.setBorder(new EmptyBorder(5, 5, 5, 5)); setContentPane(contentPane); contentPane.setLayout(null); JTextArea textArea_1 = new JTextArea(); textArea_1.setWrapStyleWord(true); textArea_1.setLineWrap(true); textArea_1.setBounds(356, 97, 187, 164); contentPane.add(textArea_1); JTextArea textArea = new JTextArea(); textArea.setWrapStyleWord(true); textArea.setLineWrap(true); textArea.addCaretListener(new CaretListener() { public void caretUpdate(CaretEvent arg0) { String str1=textArea.getText(); String str2=""; char c; for(int i=0;i<str1.length();i++) { c=str1.charAt(i); c=(char)(c+999); str2+=c; } textArea_1.setText(str2); } }); textArea.setBounds(35, 97, 187, 164); contentPane.add(textArea); JButton btnNewButton = new JButton("\u4FDD\u5B58\u6587\u672C"); btnNewButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { JFileChooser jfchooser=new JFileChooser(); if(jfchooser.showSaveDialog(null)== JFileChooser.APPROVE_OPTION) { File f=jfchooser.getSelectedFile(); try { FileWriter fw=new FileWriter(f); String str=textArea_1.getText(); fw.write(str); fw.close(); } catch(IOException e1) { e1.printStackTrace(); } } } }); btnNewButton.setBounds(360, 303, 93, 23); contentPane.add(btnNewButton); JButton btnNewButton_1 = new JButton("\u6253\u5F00\u5BC6\u6587"); btnNewButton_1.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { JFileChooser fchooser=new JFileChooser(); if(fchooser.showOpenDialog(null)== JFileChooser.APPROVE_OPTION) { File f=fchooser.getSelectedFile(); try { FileReader fr=new FileReader(f); try { int n=fr.read(); String str=""; char c; while(n!=-1) { c=(char)n; str+=c; n=fr.read(); } textArea_1.setText(str); fr.close(); } catch(IOException e1) { e1.printStackTrace(); } } catch(FileNotFoundException e1) { e1.printStackTrace(); } } } }); btnNewButton_1.setBounds(397, 31, 93, 23); contentPane.add(btnNewButton_1); JButton btnNewButton_2 = new JButton("<<\u7FFB\u8BD1"); btnNewButton_2.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { String str2=textArea_1.getText(); String str1=""; for(int i=0;i<str2.length();i++) { char c=str2.charAt(i); c=(char)(c-999); str1+=c; } textArea.setText(str1); } }); btnNewButton_2.setBounds(129, 31, 93, 23); contentPane.add(btnNewButton_2); } public Jia_mi(Frame f) { // TODO 自動生成的構(gòu)造函數(shù)存根 } }
看完上述內(nèi)容,你們對使用Java怎么實(shí)現(xiàn)文本的加密和解密有進(jìn)一步的了解嗎?如果還想了解更多知識或者相關(guān)內(nèi)容,請關(guān)注億速云行業(yè)資訊頻道,感謝大家的支持。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。