8 Порядок контролю та прийому.
До прийому і захисту курсового проекту подається:
-
остаточний звіт (пояснювальна записка);
-
код програми;
-
спеціалізований апаратний засіб для односторонньої автентифікації користувачів з використанням вдосконаленого алгоритму Wide-mounted Frog. Схема електрична структурна.
-
програмний засіб для реалізації криптоалгоритму Wide-mounted Frog з рандомізацією чисел. Блок-схема.
Початок розробки 1.02.2019.
Крайній термін виконання курсового проекту 19.04.2019.
Розробив студент групи 1БС-16 б ____________ Тітов О.А.
Додаток б Текст програми
import java.io.UnsupportedEncodingException;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.Arrays;
import java.util.Base64;
import javax.crypto.Cipher;
import javax.crypto.spec.SecretKeySpec;
import javax.swing.JOptionPane;
public class MainFrame extends javax.swing.JFrame {
private String RndNumBob() {
String RndNumBob = "";
int[] RndNumBobInt = new int [16];
for(int i=0; i<16; i++) {
RndNumBobInt[i] = (int) (Math.random()*9);
RndNumBob += Integer.toString(RndNumBobInt[i]);
}
return RndNumBob;
}
private final String AlisaTrendKey = "6a857a3055376c8c4320f9fdcce0a67b";
private final String TrendBobKey = "eb02b5d52350ea68352518648007843a";
private final String RndNumBob_ = RndNumBob();
/**
* Creates new form MainFrame
*/
public MainFrame() {
initComponents();
}
private static SecretKeySpec secretKey;
private static byte[] key;
public static void setKey(String myKey)
{
MessageDigest sha = null;
try {
key = myKey.getBytes("UTF-8");
sha = MessageDigest.getInstance("SHA-1");
key = sha.digest(key);
key = Arrays.copyOf(key, 16);
secretKey = new SecretKeySpec(key, "AES");
}
catch (NoSuchAlgorithmException e) {
e.printStackTrace();
}
catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
}
public static String encrypt(String strToEncrypt, String secret)
{
try
{
setKey(secret);
Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding");
cipher.init(Cipher.ENCRYPT_MODE, secretKey);
return Base64.getEncoder().encodeToString(cipher.doFinal(strToEncrypt.getBytes("UTF-8")));
}
catch (Exception e)
{
System.out.println("Error while encrypting: " + e.toString());
}
return null;
}
public static String decrypt(String strToDecrypt, String secret)
{
try
{
setKey(secret);
Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5PADDING");
cipher.init(Cipher.DECRYPT_MODE, secretKey);
return new String(cipher.doFinal(Base64.getDecoder().decode(strToDecrypt)));
}
catch (Exception e)
{
System.out.println("Error while decrypting: " + e.toString());
JOptionPane.showMessageDialog(null,"Помилка при розшифруванні","Error",JOptionPane.ERROR_MESSAGE);
}
return null;
}
/**
* This method is called from within the constructor to initialize the form.
* WARNING: Do NOT modify this code. The content of this method is always
* regenerated by the Form Editor.
*/
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {
bindingGroup = new org.jdesktop.beansbinding.BindingGroup();
jLabel1 = new javax.swing.JLabel();
jLabel2 = new javax.swing.JLabel();
jLabel3 = new javax.swing.JLabel();
jScrollPane3 = new javax.swing.JScrollPane();
jTextArea_AlisaMsg = new javax.swing.JTextArea();
jScrollPane4 = new javax.swing.JScrollPane();
jTextArea_TrendFromAlisaMsg = new javax.swing.JTextArea();
jScrollPane5 = new javax.swing.JScrollPane();
jTextArea_BobEncrMsg = new javax.swing.JTextArea();
jTextField_seansKey = new javax.swing.JTextField();
jButton_AlisaGen = new javax.swing.JButton();
jTextField_BobRndAlisa = new javax.swing.JTextField();
jButton_AlisaEncr = new javax.swing.JButton();
jScrollPane6 = new javax.swing.JScrollPane();
jTextArea_AlisaEncrMsg = new javax.swing.JTextArea();
jButton_AlisaSend = new javax.swing.JButton();
jButton_TrendDecr = new javax.swing.JButton();
jScrollPane7 = new javax.swing.JScrollPane();
jTextArea_TrendDecrMsg = new javax.swing.JTextArea();
jTextField_seanskeyTrand = new javax.swing.JTextField();
jTextField_TrandRndBob = new javax.swing.JTextField();
jButton_TrendEncr = new javax.swing.JButton();
jScrollPane8 = new javax.swing.JScrollPane();
jTextArea_TrandToBobMsg = new javax.swing.JTextArea();
jButton_TrandSend = new javax.swing.JButton();
jButton_BobDecr = new javax.swing.JButton();
jScrollPane9 = new javax.swing.JScrollPane();
jTextArea_BobDecrMsg = new javax.swing.JTextArea();
jTextField_seanskeyBob = new javax.swing.JTextField();
jTextField_BobRnd = new javax.swing.JTextField();
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
jLabel1.setText("Аліса");
jLabel2.setText("Тренд");
jLabel3.setText("Боб");
jTextArea_AlisaMsg.setColumns(20);
jTextArea_AlisaMsg.setRows(5);
org.jdesktop.beansbinding.Binding binding = org.jdesktop.beansbinding.Bindings.createAutoBinding(org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ_WRITE, jTextArea_AlisaMsg, org.jdesktop.beansbinding.ELProperty.create("true"), jTextArea_AlisaMsg, org.jdesktop.beansbinding.BeanProperty.create("lineWrap"));
bindingGroup.addBinding(binding);
jScrollPane3.setViewportView(jTextArea_AlisaMsg);
jTextArea_TrendFromAlisaMsg.setEditable(false);
jTextArea_TrendFromAlisaMsg.setColumns(20);
jTextArea_TrendFromAlisaMsg.setRows(5);
jTextArea_TrendFromAlisaMsg.setEnabled(false);
binding = org.jdesktop.beansbinding.Bindings.createAutoBinding(org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ_WRITE, jTextArea_TrendFromAlisaMsg, org.jdesktop.beansbinding.ELProperty.create("true"), jTextArea_TrendFromAlisaMsg, org.jdesktop.beansbinding.BeanProperty.create("lineWrap"));
bindingGroup.addBinding(binding);
jScrollPane4.setViewportView(jTextArea_TrendFromAlisaMsg);
jTextArea_BobEncrMsg.setEditable(false);
jTextArea_BobEncrMsg.setColumns(20);
jTextArea_BobEncrMsg.setRows(5);
jTextArea_BobEncrMsg.setEnabled(false);
binding = org.jdesktop.beansbinding.Bindings.createAutoBinding(org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ_WRITE, jTextArea_BobEncrMsg, org.jdesktop.beansbinding.ELProperty.create("true"), jTextArea_BobEncrMsg, org.jdesktop.beansbinding.BeanProperty.create("lineWrap"));
bindingGroup.addBinding(binding);
jScrollPane5.setViewportView(jTextArea_BobEncrMsg);
jButton_AlisaGen.setText("Згенерувати");
jButton_AlisaGen.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton_AlisaGenActionPerformed(evt);
}
});
jButton_AlisaEncr.setText("Зашифрувати");
jButton_AlisaEncr.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton_AlisaEncrActionPerformed(evt);
}
});
jTextArea_AlisaEncrMsg.setColumns(20);
jTextArea_AlisaEncrMsg.setRows(5);
binding = org.jdesktop.beansbinding.Bindings.createAutoBinding(org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ_WRITE, jTextArea_AlisaEncrMsg, org.jdesktop.beansbinding.ELProperty.create("true"), jTextArea_AlisaEncrMsg, org.jdesktop.beansbinding.BeanProperty.create("lineWrap"));
bindingGroup.addBinding(binding);
jScrollPane6.setViewportView(jTextArea_AlisaEncrMsg);
jButton_AlisaSend.setText("Відправити");
jButton_AlisaSend.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton_AlisaSendActionPerformed(evt);
}
});
jButton_TrendDecr.setText("Розшифрувати");
jButton_TrendDecr.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton_TrendDecrActionPerformed(evt);
}
});
jTextArea_TrendDecrMsg.setColumns(20);
jTextArea_TrendDecrMsg.setRows(5);
jTextArea_TrendDecrMsg.setEnabled(false);
binding = org.jdesktop.beansbinding.Bindings.createAutoBinding(org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ_WRITE, jTextArea_TrendDecrMsg, org.jdesktop.beansbinding.ELProperty.create("true"), jTextArea_TrendDecrMsg, org.jdesktop.beansbinding.BeanProperty.create("lineWrap"));
bindingGroup.addBinding(binding);
jScrollPane7.setViewportView(jTextArea_TrendDecrMsg);
jButton_TrendEncr.setText("Зашифрувати");
jButton_TrendEncr.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton_TrendEncrActionPerformed(evt);
}
});
jTextArea_TrandToBobMsg.setColumns(20);
jTextArea_TrandToBobMsg.setRows(5);
jTextArea_TrandToBobMsg.setEnabled(false);
binding = org.jdesktop.beansbinding.Bindings.createAutoBinding(org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ_WRITE, jTextArea_TrandToBobMsg, org.jdesktop.beansbinding.ELProperty.create("true"), jTextArea_TrandToBobMsg, org.jdesktop.beansbinding.BeanProperty.create("lineWrap"));
bindingGroup.addBinding(binding);
jScrollPane8.setViewportView(jTextArea_TrandToBobMsg);
jButton_TrandSend.setText("Відправити");
jButton_TrandSend.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton_TrandSendActionPerformed(evt);
}
});
jButton_BobDecr.setText("Розшифрувати");
jButton_BobDecr.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton_BobDecrActionPerformed(evt);
}
});
jTextArea_BobDecrMsg.setColumns(20);
jTextArea_BobDecrMsg.setRows(5);
jTextArea_BobDecrMsg.setEnabled(false);
binding = org.jdesktop.beansbinding.Bindings.createAutoBinding(org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ_WRITE, jTextArea_BobDecrMsg, org.jdesktop.beansbinding.ELProperty.create("true"), jTextArea_BobDecrMsg, org.jdesktop.beansbinding.BeanProperty.create("lineWrap"));
bindingGroup.addBinding(binding);
jScrollPane9.setViewportView(jTextArea_BobDecrMsg);
jTextField_seanskeyBob.setEnabled(false);
jTextField_BobRnd.setEnabled(false);
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
.addComponent(jButton_AlisaSend, javax.swing.GroupLayout.PREFERRED_SIZE, 140, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false)
.addComponent(jButton_AlisaEncr, javax.swing.GroupLayout.PREFERRED_SIZE, 140, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jTextField_BobRndAlisa, javax.swing.GroupLayout.DEFAULT_SIZE, 214, Short.MAX_VALUE)
.addComponent(jTextField_seansKey)
.addComponent(jLabel1, javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jButton_AlisaGen, javax.swing.GroupLayout.PREFERRED_SIZE, 140, javax.swing.GroupLayout.PREFERRED_SIZE)))
.addComponent(jScrollPane6, javax.swing.GroupLayout.PREFERRED_SIZE, 214, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jScrollPane3, javax.swing.GroupLayout.PREFERRED_SIZE, 214, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
.addComponent(jLabel2)
.addComponent(jScrollPane4, javax.swing.GroupLayout.DEFAULT_SIZE, 214, Short.MAX_VALUE)
.addComponent(jButton_TrendDecr, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.PREFERRED_SIZE, 140, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jScrollPane7)
.addComponent(jTextField_seanskeyTrand)
.addComponent(jTextField_TrandRndBob)
.addComponent(jScrollPane8))
.addComponent(jButton_TrendEncr, javax.swing.GroupLayout.PREFERRED_SIZE, 140, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jButton_TrandSend, javax.swing.GroupLayout.PREFERRED_SIZE, 140, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
.addGap(0, 74, Short.MAX_VALUE)
.addComponent(jButton_BobDecr, javax.swing.GroupLayout.PREFERRED_SIZE, 140, javax.swing.GroupLayout.PREFERRED_SIZE))
.addComponent(jTextField_seanskeyBob)
.addGroup(layout.createSequentialGroup()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
.addComponent(jLabel3)
.addComponent(jScrollPane5, javax.swing.GroupLayout.DEFAULT_SIZE, 214, Short.MAX_VALUE)
.addComponent(jScrollPane9, javax.swing.GroupLayout.DEFAULT_SIZE, 214, Short.MAX_VALUE)
.addComponent(jTextField_BobRnd))
.addGap(0, 0, Short.MAX_VALUE)))
.addContainerGap())
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel1)
.addComponent(jLabel2)
.addComponent(jLabel3))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
.addComponent(jScrollPane4, javax.swing.GroupLayout.PREFERRED_SIZE, 172, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jScrollPane5, javax.swing.GroupLayout.PREFERRED_SIZE, 172, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jScrollPane3, javax.swing.GroupLayout.PREFERRED_SIZE, 172, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jButton_AlisaGen)
.addComponent(jButton_TrendDecr)
.addComponent(jButton_BobDecr))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
.addComponent(jTextField_seansKey, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jTextField_BobRndAlisa, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jButton_AlisaEncr)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jScrollPane6))
.addGroup(layout.createSequentialGroup()
.addComponent(jScrollPane7, javax.swing.GroupLayout.PREFERRED_SIZE, 110, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jTextField_seanskeyTrand, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jTextField_TrandRndBob, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jButton_TrendEncr)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jScrollPane8, javax.swing.GroupLayout.PREFERRED_SIZE, 110, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGroup(layout.createSequentialGroup()
.addComponent(jTextField_seanskeyBob, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jTextField_BobRnd, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jScrollPane9, javax.swing.GroupLayout.PREFERRED_SIZE, 214, javax.swing.GroupLayout.PREFERRED_SIZE)))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jButton_AlisaSend)
.addComponent(jButton_TrandSend))
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
);
bindingGroup.bind();
pack();
}// </editor-fold>
private void jButton_AlisaGenActionPerformed(java.awt.event.ActionEvent evt) {
int[] keynum = new int[16];
for(int i=0; i<16; i++){
keynum[i]= (int) (Math.random()*255);
}
char [] keySymbol = new char[16];
for (int i=0;i<16;i++) {
keySymbol[i] = (char) keynum[i];
}
String SeansKey = "";
for (int i=0; i<16; i++) {
SeansKey+=keySymbol[i];
}
jTextField_seansKey.setText(SeansKey);
jTextField_BobRndAlisa.setText(RndNumBob_);
}
private void jButton_AlisaEncrActionPerformed(java.awt.event.ActionEvent evt) {
String SeansKey = jTextField_seansKey.getText();
String MsgAlisa = jTextArea_AlisaMsg.getText();
if (!"".equals(MsgAlisa)) {
String EncrMsgAlisa;
String RndNumBob = jTextField_BobRndAlisa.getText();
EncrMsgAlisa = encrypt(MsgAlisa + SeansKey + RndNumBob, AlisaTrendKey);
jTextArea_AlisaEncrMsg.setText(EncrMsgAlisa);
} else JOptionPane.showMessageDialog(null,"Введіть повідомлення","Error",JOptionPane.ERROR_MESSAGE);
}
private void jButton_AlisaSendActionPerformed(java.awt.event.ActionEvent evt) {
String MSG = jTextArea_AlisaEncrMsg.getText();
jTextArea_TrendFromAlisaMsg.setText(MSG);
}
private void jButton_TrendDecrActionPerformed(java.awt.event.ActionEvent evt) {
String EncrMsgAlisa = jTextArea_TrendFromAlisaMsg.getText();
String TrendDecrMsg = "";
String ReverseTrandRndBob = "";
String ReverseSeanseKey = "";
String Msg = "";
if(!"".equals(EncrMsgAlisa)){
TrendDecrMsg = decrypt(EncrMsgAlisa,AlisaTrendKey);
char[] TrendDecrMsgArr = TrendDecrMsg.toCharArray();
int j = 0;
for(int i = TrendDecrMsg.length() - 1; i >= 0; i--){
if(j<=31) {
if(j<16){
ReverseTrandRndBob += TrendDecrMsgArr[i];
}else {
ReverseSeanseKey += TrendDecrMsgArr[i];
}
}else break;
j++;
}
for (int i = 0; i<TrendDecrMsg.length() - 32; i++) {
Msg += TrendDecrMsgArr[i];
}
StringBuilder Buff1 = new StringBuilder(ReverseTrandRndBob);
StringBuilder Buff2 = new StringBuilder(ReverseSeanseKey);
jTextField_seanskeyTrand.setText(Buff2.reverse().toString());
jTextField_TrandRndBob.setText(Buff1.reverse().toString());
jTextArea_TrendDecrMsg.setText(Msg);
} else JOptionPane.showMessageDialog(null,"Повідомлення не надійшло.","Error",JOptionPane.ERROR_MESSAGE);
String RndToBob = jTextField_TrandRndBob.getText();
if(!RndToBob.equals(RndNumBob_)) {
jButton_TrandSend.setVisible(false);
jButton_TrendEncr.setVisible(false);
JOptionPane.showMessageDialog(null,"Числа не співпвдвють.","Error",JOptionPane.ERROR_MESSAGE);
} else {
jButton_TrandSend.setVisible(true);
jButton_TrendEncr.setVisible(true);
}
}
private void jButton_TrendEncrActionPerformed(java.awt.event.ActionEvent evt) {
String RndToBob = jTextField_TrandRndBob.getText();
String SeansKey = jTextField_seanskeyTrand.getText();
String Msg = jTextArea_TrendDecrMsg.getText();
if (!"".equals(Msg)) {
String EncrTrendToBob = encrypt(Msg + SeansKey + RndToBob, TrendBobKey);
jTextArea_TrandToBobMsg.setText(EncrTrendToBob);
} else JOptionPane.showMessageDialog(null,"Повідомлення не надійшло або не розшифровано.","Error",JOptionPane.ERROR_MESSAGE);
}
private void jButton_TrandSendActionPerformed(java.awt.event.ActionEvent evt) {
String Msg = jTextArea_TrandToBobMsg.getText();
jTextArea_BobEncrMsg.setText(Msg);
}
private void jButton_BobDecrActionPerformed(java.awt.event.ActionEvent evt) {
String EncrMsgBob = jTextArea_BobEncrMsg.getText();
String BobDecrMsg = "";
String ReverseRndBob = "";
String ReverseSeanseKey = "";
String Msg = "";
if(!"".equals(EncrMsgBob)){
BobDecrMsg = decrypt(EncrMsgBob,TrendBobKey);
char[] BobDecrMsgArr = BobDecrMsg.toCharArray();
int j = 0;
for(int i = BobDecrMsg.length() - 1; i >= 0; i--){
if(j<=31) {
if(j<16){
ReverseRndBob += BobDecrMsgArr[i];
}else {
ReverseSeanseKey += BobDecrMsgArr[i];
}
}else break;
j++;
}
for (int i = 0; i<BobDecrMsg.length() - 32; i++) {
Msg += BobDecrMsgArr[i];
}
StringBuilder Buff1 = new StringBuilder(ReverseRndBob);
StringBuilder Buff2 = new StringBuilder(ReverseSeanseKey);
jTextField_seanskeyBob.setText(Buff2.reverse().toString());
jTextField_BobRnd.setText(Buff1.reverse().toString());
jTextArea_BobDecrMsg.setText(Msg);
} else JOptionPane.showMessageDialog(null,"Повідомлення не надійшло.","Error",JOptionPane.ERROR_MESSAGE);
String BobRnd = jTextField_BobRnd.getText();
if(!BobRnd.equals(RndNumBob_))JOptionPane.showMessageDialog(null,"Числа не співпвдвють.","Error",JOptionPane.ERROR_MESSAGE);
}
/**
* @param args the command line arguments
*/
public static void main(String args[]) {
/* Set the Nimbus look and feel */
//<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">
/* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.
* For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html
*/
try {
for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
if ("Nimbus".equals(info.getName())) {
javax.swing.UIManager.setLookAndFeel(info.getClassName());
break;
}
}
} catch (ClassNotFoundException ex) {
java.util.logging.Logger.getLogger(MainFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (InstantiationException ex) {
java.util.logging.Logger.getLogger(MainFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (IllegalAccessException ex) {
java.util.logging.Logger.getLogger(MainFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (javax.swing.UnsupportedLookAndFeelException ex) {
java.util.logging.Logger.getLogger(MainFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
}
//</editor-fold>
/* Create and display the form */
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new MainFrame().setVisible(true);
}
});
}
// Variables declaration - do not modify
private javax.swing.JButton jButton_AlisaEncr;
private javax.swing.JButton jButton_AlisaGen;
private javax.swing.JButton jButton_AlisaSend;
private javax.swing.JButton jButton_BobDecr;
private javax.swing.JButton jButton_TrandSend;
private javax.swing.JButton jButton_TrendDecr;
private javax.swing.JButton jButton_TrendEncr;
private javax.swing.JLabel jLabel1;
private javax.swing.JLabel jLabel2;
private javax.swing.JLabel jLabel3;
private javax.swing.JScrollPane jScrollPane3;
private javax.swing.JScrollPane jScrollPane4;
private javax.swing.JScrollPane jScrollPane5;
private javax.swing.JScrollPane jScrollPane6;
private javax.swing.JScrollPane jScrollPane7;
private javax.swing.JScrollPane jScrollPane8;
private javax.swing.JScrollPane jScrollPane9;
private javax.swing.JTextArea jTextArea_AlisaEncrMsg;
private javax.swing.JTextArea jTextArea_AlisaMsg;
private javax.swing.JTextArea jTextArea_BobDecrMsg;
private javax.swing.JTextArea jTextArea_BobEncrMsg;
private javax.swing.JTextArea jTextArea_TrandToBobMsg;
private javax.swing.JTextArea jTextArea_TrendDecrMsg;
private javax.swing.JTextArea jTextArea_TrendFromAlisaMsg;
private javax.swing.JTextField jTextField_BobRnd;
private javax.swing.JTextField jTextField_BobRndAlisa;
private javax.swing.JTextField jTextField_TrandRndBob;
private javax.swing.JTextField jTextField_seansKey;
private javax.swing.JTextField jTextField_seanskeyBob;
private javax.swing.JTextField jTextField_seanskeyTrand;
private org.jdesktop.beansbinding.BindingGroup bindingGroup;
// End of variables declaration
}
ГРАФІЧНА ЧАСТИНА