• R/O
  • HTTP
  • SSH
  • HTTPS

Commit

Tags
Aucun tag

Frequently used words (click to add to your profile)

javac++androidlinuxc#windowsobjective-ccocoa誰得qtpythonphprubygameguibathyscaphec計画中(planning stage)翻訳omegatframeworktwitterdomtestvb.netdirectxゲームエンジンbtronarduinopreviewer

FinalCrypt - The No¹ One-Time Pad Encryption


Commit MetaInfo

Révision7e01e02b78cb9924a12f2baa81cb5ff5812cc042 (tree)
l'heure2019-12-03 01:27:26
Auteurron <ronuitzaandam@gmai...>
Commiterron

Message de Log

Date: 2019-12-02 Version: 5.6.8

Major performance improvement on file encryption
Much faster user interface responses and display
Performance increase 700% encrypting small files
Non critical I/O cache enabled on logging system

Change Summary

Modification

--- a/changelog.txt
+++ b/changelog.txt
@@ -1,3 +1,10 @@
1+Date: 2019-12-02 Version: 5.6.8
2+
3+Major performance improvement on file encryption
4+Much faster user interface responses and display
5+Performance increase 700% encrypting small files
6+Non critical I/O cache enabled on logging system
7+
18 Date: 2019-11-27 Version: 5.6.7
29
310 Fixed (non-latin) UTF8 Font rendering in File Managers
--- a/license-default.txt
+++ b/license-default.txt
@@ -1,7 +1,7 @@
11 <#if licenseFirst??>
22 ${licenseFirst}
33 </#if>
4-${licensePrefix}Copyright © 2017 Ron de Jong (ronuitzaandam@gmail.com).
4+${licensePrefix}Copyright © 2017 Ron de Jong (ron@finalcrypt.org).
55 ${licensePrefix}
66 ${licensePrefix}This is free software; you can redistribute it
77 ${licensePrefix}under the terms of the Creative Commons License
--- a/manpage.txt
+++ b/manpage.txt
@@ -62,4 +62,4 @@ Parameters:
6262 <[-t "file/dir"]> Target items (files or directories) you want to encrypt (recursive).
6363 <[-b "batchfile"]> Batchfile with targetfiles you want to encrypt (only files).
6464
65-FinalCrypt 5.6.7 - Author: Ron de Jong <info@finalcrypt.org> - Copyright: © 2017-2019
\ No newline at end of file
65+FinalCrypt 5.6.8 - Author: Ron de Jong <info@finalcrypt.org> - Copyright: © 2017-2019
\ No newline at end of file
--- a/manpage_examples.txt
+++ b/manpage_examples.txt
@@ -76,4 +76,4 @@ Key Device Examples (Linux):
7676 java -cp finalcrypt.jar rdj/CLUI --encrypt -k /dev/sdc1 -t myfile
7777 java -cp finalcrypt.jar rdj/CLUI --decrypt -k /dev/sdc1 -t myfile
7878
79-FinalCrypt 5.6.7 - Author: Ron de Jong <info@finalcrypt.org> - Copyright: © 2017-2019
\ No newline at end of file
79+FinalCrypt 5.6.8 - Author: Ron de Jong <info@finalcrypt.org> - Copyright: © 2017-2019
\ No newline at end of file
--- a/nbproject/build-impl.xml
+++ b/nbproject/build-impl.xml
@@ -155,18 +155,6 @@ is divided into following sections:
155155 <istrue value="${not.archive.disabled}"/>
156156 </or>
157157 </condition>
158- <condition property="do.mkdist">
159- <and>
160- <isset property="do.archive"/>
161- <isset property="libs.CopyLibs.classpath"/>
162- <not>
163- <istrue value="${mkdist.disabled}"/>
164- </not>
165- <not>
166- <istrue value="${modules.supported.internal}"/>
167- </not>
168- </and>
169- </condition>
170158 <condition property="do.archive+manifest.available">
171159 <and>
172160 <isset property="manifest.available"/>
@@ -1194,13 +1182,27 @@ is divided into following sections:
11941182 <attribute name="SplashScreen-Image" value="META-INF/${splashscreen.basename}"/>
11951183 </manifest>
11961184 </target>
1197- <target depends="init,-init-macrodef-copylibs,compile,-pre-pre-jar,-pre-jar,-do-jar-create-manifest,-do-jar-copy-manifest,-do-jar-set-mainclass,-do-jar-set-profile,-do-jar-set-splashscreen" if="do.mkdist" name="-do-jar-copylibs">
1185+ <target depends="init,compile" name="-check-do-mkdist">
1186+ <condition property="do.mkdist">
1187+ <and>
1188+ <isset property="do.archive"/>
1189+ <isset property="libs.CopyLibs.classpath"/>
1190+ <not>
1191+ <istrue value="${mkdist.disabled}"/>
1192+ </not>
1193+ <not>
1194+ <available file="${build.classes.dir}/module-info.class"/>
1195+ </not>
1196+ </and>
1197+ </condition>
1198+ </target>
1199+ <target depends="init,-init-macrodef-copylibs,compile,-pre-pre-jar,-pre-jar,-do-jar-create-manifest,-do-jar-copy-manifest,-do-jar-set-mainclass,-do-jar-set-profile,-do-jar-set-splashscreen,-check-do-mkdist" if="do.mkdist" name="-do-jar-copylibs">
11981200 <j2seproject3:copylibs manifest="${tmp.manifest.file}"/>
11991201 <echo level="info">To run this application from the command line without Ant, try:</echo>
12001202 <property location="${dist.jar}" name="dist.jar.resolved"/>
12011203 <echo level="info">java -jar "${dist.jar.resolved}"</echo>
12021204 </target>
1203- <target depends="init,compile,-pre-pre-jar,-pre-jar,-do-jar-create-manifest,-do-jar-copy-manifest,-do-jar-set-mainclass,-do-jar-set-profile,-do-jar-set-splashscreen" if="do.archive" name="-do-jar-jar" unless="do.mkdist">
1205+ <target depends="init,compile,-pre-pre-jar,-pre-jar,-do-jar-create-manifest,-do-jar-copy-manifest,-do-jar-set-mainclass,-do-jar-set-profile,-do-jar-set-splashscreen,-check-do-mkdist" if="do.archive" name="-do-jar-jar" unless="do.mkdist">
12041206 <j2seproject1:jar manifest="${tmp.manifest.file}"/>
12051207 <property location="${build.classes.dir}" name="build.classes.dir.resolved"/>
12061208 <property location="${dist.jar}" name="dist.jar.resolved"/>
--- a/nbproject/genfiles.properties
+++ b/nbproject/genfiles.properties
@@ -1,8 +1,8 @@
11 build.xml.data.CRC32=a2f9d86e
22 build.xml.script.CRC32=17ca4caa
3-build.xml.stylesheet.CRC32=f85dc8f2@1.91.1.48
3+build.xml.stylesheet.CRC32=f85dc8f2@1.93.0.48
44 # This file is used by a NetBeans-based IDE to track changes in generated files such as build-impl.xml.
55 # Do not edit this file. You may delete it but then the IDE will never regenerate such files for you.
66 nbproject/build-impl.xml.data.CRC32=a2f9d86e
7-nbproject/build-impl.xml.script.CRC32=d373c372
8-nbproject/build-impl.xml.stylesheet.CRC32=3a2fa800@1.91.1.48
7+nbproject/build-impl.xml.script.CRC32=99f50b1a
8+nbproject/build-impl.xml.stylesheet.CRC32=f89f7d21@1.93.0.48
--- a/nbproject/project.properties
+++ b/nbproject/project.properties
@@ -8,7 +8,7 @@ application.homepage=http://www.finalcrypt.org/
88 application.splash=
99 application.title=FinalCrypt
1010 application.vendor=FinalCrypt
11-application.implementation.version=5.6.7
11+application.implementation.version=5.6.8
1212 auxiliary.org-netbeans-modules-editor-indent.CodeStyle.project.expand-tabs=false
1313 auxiliary.org-netbeans-modules-editor-indent.CodeStyle.project.indent-shift-width=4
1414 auxiliary.org-netbeans-modules-editor-indent.CodeStyle.project.spaces-per-tab=4
@@ -60,6 +60,7 @@ build.generated.sources.dir=${build.dir}/generated-sources
6060 build.sysclasspath=ignore
6161 build.test.classes.dir=${build.dir}/test/classes
6262 build.test.results.dir=${build.dir}/test/results
63+copylibs.excludes=${javafx.classpath.extension}
6364 # Uncomment to specify the preferred debugger connection transport:
6465 #debug.transport=dt_socket
6566 debug.classpath=\
@@ -78,14 +79,30 @@ dist.jar=${dist.dir}/FinalCrypt.jar
7879 dist.javadoc.dir=${dist.dir}/javadoc
7980 endorsed.classpath=
8081 excludes=
82+file.reference.javafx-swt.jar=/home/ron/javafx-sdk-13.0.1/lib/javafx-swt.jar
83+file.reference.javafx.base.jar=/home/ron/javafx-sdk-13.0.1/lib/javafx.base.jar
84+file.reference.javafx.controls.jar=/home/ron/javafx-sdk-13.0.1/lib/javafx.controls.jar
85+file.reference.javafx.fxml.jar=/home/ron/javafx-sdk-13.0.1/lib/javafx.fxml.jar
86+file.reference.javafx.graphics.jar=/home/ron/javafx-sdk-13.0.1/lib/javafx.graphics.jar
87+file.reference.javafx.media.jar=/home/ron/javafx-sdk-13.0.1/lib/javafx.media.jar
88+file.reference.javafx.swing.jar=/home/ron/javafx-sdk-13.0.1/lib/javafx.swing.jar
89+file.reference.javafx.web.jar=/home/ron/javafx-sdk-13.0.1/lib/javafx.web.jar
8190 includes=**
8291 jar.archive.disabled=${jnlp.enabled}
8392 jar.compress=true
8493 jar.index=${jnlp.enabled}
85-javac.classpath=
94+javac.classpath=\
95+ ${file.reference.javafx-swt.jar}:\
96+ ${file.reference.javafx.base.jar}:\
97+ ${file.reference.javafx.controls.jar}:\
98+ ${file.reference.javafx.fxml.jar}:\
99+ ${file.reference.javafx.graphics.jar}:\
100+ ${file.reference.javafx.media.jar}:\
101+ ${file.reference.javafx.swing.jar}:\
102+ ${file.reference.javafx.web.jar}
86103 # Space-separated list of extra javac options
87-javac.compilerargs=-Xlint:unchecked
88-javac.deprecation=false
104+javac.compilerargs=
105+javac.deprecation=true
89106 javac.external.vm=true
90107 javac.modulepath=
91108 javac.processormodulepath=
@@ -123,6 +140,7 @@ jnlp.signed=false
123140 jnlp.signing=
124141 jnlp.signing.alias=
125142 jnlp.signing.keystore=
143+keep.javafx.runtime.on.classpath=true
126144 main.class=rdj.GUIFX
127145 # Optional override of default Application-Library-Allowable-Codebase attribute identifying the locations where your signed RIA is expected to be found.
128146 manifest.custom.application.library.allowable.codebase=
@@ -134,17 +152,13 @@ manifest.custom.codebase=
134152 manifest.custom.permissions=
135153 manifest.file=manifest.mf
136154 meta.inf.dir=${src.dir}/META-INF
137-mkdist.disabled=false
155+mkdist.disabled=true
138156 native.bundling.enabled=true
139157 platform.active=default_platform
140158 project.license=default
141159 run.classpath=\
142160 ${javac.classpath}:\
143161 ${build.classes.dir}
144-# Space-separated list of JVM arguments used when running the project.
145-# You may also define separate properties like run-sys-prop.name=value instead of -Dname=value.
146-# To set system properties for unit tests define test-sys-prop.name=value:
147-run.jvmargs=
148162 run.modulepath=\
149163 ${javac.modulepath}
150164 run.test.classpath=\
--- a/scripts/create_voices.bash
+++ /dev/null
@@ -1,32 +0,0 @@
1-#!/bin/bash
2-echo "Select Key Directory" | pico2wave -w /tmp/rontmp.wav; play /tmp/rontmp.wav
3-
4-export IFS=",";
5-export reverb=20; # %
6-export hfdamping=96; # %
7-export roomscale=97; # %
8-export stereodepth=98; # %
9-export predelay=99; # ms
10-export wetgain=0; # 0dB
11-
12-cat << EOF | while read file speech; do echo "File: ${file} - Speech: ${speech}"; echo "${speech}" | pico2wave -w "${file}.wav" -l en-US; sox "${file}.wav" "${file}.aiff" reverb "${reverb}" "${hfdamping}" "${roomscale}" "${stereodepth}" "${predelay}" "${wetgain}"; rm "${file}.wav"; play "${file}.aiff"; done
13-clone_key_device,Clone Key Device
14-confirm_password_with_enter,Confirm Password With Enter
15-create_key,Create Key
16-create_key_device,Create Key Device
17-decrypt_files,Dee crypt Files
18-decrypting_files,Dee crypting Files
19-encrypt_files,Encrypt Files
20-encrypting_files,Encrypting Files
21-encrypt_or_decrypt_files,Encrypt or Deecrypt Files
22-scanning_files,Scanning Files
23-select_files,Select Files
24-select_key,Select Key
25-select_key_directory,Select Key Directory
26-voice_disabled,Voice Disabled
27-voice_enabled,Voice Enabled
28-wrong key or password,Wrong Key or Password
29-finished_encrypting,finished encrypting
30-finished_decrypting,finished deecrypting
31-EOF
32-
--- a/src/rdj/CLUI.java
+++ b/src/rdj/CLUI.java
@@ -1031,8 +1031,8 @@ public class CLUI implements UI
10311031
10321032 public void status(String message) { }
10331033 public void log(String message, boolean err) { if ( ! err ) { System.out.print(message); } else { System.err.print(message); } }
1034- public void logfile(String message) { try { Files.write(configuration.getLogFilePath(), message.getBytes(), StandardOpenOption.CREATE, StandardOpenOption.APPEND, StandardOpenOption.SYNC); } catch (IOException ex) { log("Files.write(" + configuration.getLogFilePath() + ")..));", false, true, true, false, false); } }
1035- public void errfile(String message) { try { Files.write(configuration.getErrFilePath(), message.getBytes(), StandardOpenOption.CREATE, StandardOpenOption.APPEND, StandardOpenOption.SYNC); } catch (IOException ex) { log("Files.write(" + configuration.getErrFilePath() + ")..));", false, true, true, false, false); } }
1034+ public void logfile(String message) { try { Files.write(configuration.getLogFilePath(), message.getBytes(), StandardOpenOption.CREATE, StandardOpenOption.APPEND); } catch (IOException ex) { log("Files.write(" + configuration.getLogFilePath() + ")..));", false, true, true, false, false); } }
1035+ public void errfile(String message) { try { Files.write(configuration.getErrFilePath(), message.getBytes(), StandardOpenOption.CREATE, StandardOpenOption.APPEND); } catch (IOException ex) { log("Files.write(" + configuration.getErrFilePath() + ")..));", false, true, true, false, false); } }
10361036 public void print(String message, boolean err) { if ( ! err ) { System.out.print(message); } else { System.err.print(message); } }
10371037
10381038 public static void main(String[] args) { new CLUI(args); }
--- a/src/rdj/CreateOTPKey.java
+++ b/src/rdj/CreateOTPKey.java
@@ -217,8 +217,8 @@ public class CreateOTPKey extends Application implements Initializable
217217
218218 @FXML private void increaseButtonOnAction(ActionEvent event) { changeSize(1); }
219219 @FXML private void decreaseButtonOnAction(ActionEvent event) { changeSize(-1); }
220- @FXML private void increaseButtonOnMousePressed(MouseEvent event) { new Sound().play(guifx, Audio.SND_BUTTON,Audio.AUDIO_CODEC);; changeSizeRepeaterOn(1); }
221- @FXML private void decreaseButtonOnMousePressed(MouseEvent event) { new Sound().play(guifx, Audio.SND_BUTTON,Audio.AUDIO_CODEC);; changeSizeRepeaterOn(-1); }
220+ @FXML private void increaseButtonOnMousePressed(MouseEvent event) { new Sound().play(guifx, Audio.SND_BUTTON,Audio.AUDIO_CODEC); changeSizeRepeaterOn(1); }
221+ @FXML private void decreaseButtonOnMousePressed(MouseEvent event) { new Sound().play(guifx, Audio.SND_BUTTON,Audio.AUDIO_CODEC); changeSizeRepeaterOn(-1); }
222222 @FXML private void increaseButtonOnMouseReleased(MouseEvent event) { changeSizeRepeaterOff(); }
223223 @FXML private void decreaseButtonOnMouseReleased(MouseEvent event) { changeSizeRepeaterOff(); }
224224
@@ -246,7 +246,8 @@ public class CreateOTPKey extends Application implements Initializable
246246 filesizeNumber = Long.valueOf(filesizeTextField.getText());
247247 Integer selectedIndexAsPower = unitChoiceBox.getSelectionModel().getSelectedIndex();
248248 double interimFactor = Math.pow(1024, selectedIndexAsPower);
249- factor = (new Double(interimFactor)).longValue();
249+// factor = (new Double(interimFactor)).longValue();
250+ factor = (Double.doubleToLongBits(interimFactor));
250251 filesizeInBytes = filesizeNumber * factor;
251252 if (( filesizeInBytes > 0 ) && ( filesizeInBytes <= Long.MAX_VALUE )) { createButton.setDisable(false); } else { createButton.setDisable(true); }
252253
@@ -274,7 +275,7 @@ public class CreateOTPKey extends Application implements Initializable
274275 @FXML
275276 private void createButtonAction(ActionEvent event)
276277 {
277- new Sound().play(guifx, Audio.SND_BUTTON,Audio.AUDIO_CODEC);;
278+ new Sound().play(guifx, Audio.SND_BUTTON,Audio.AUDIO_CODEC);
278279 filenameTextField.setDisable(true);
279280 filesizeLabel.setDisable(true);
280281 filesizeTextField.setDisable(true);
@@ -342,7 +343,7 @@ public class CreateOTPKey extends Application implements Initializable
342343 }; updateProgressTaskTimer = new java.util.Timer(); updateProgressTaskTimer.schedule(updateProgressTask, 0L, 200L);
343344
344345
345- new Sound().play(guifx, Audio.SND_ENCRYPTFILES,Audio.AUDIO_CODEC);;
346+ new Sound().play(guifx, Audio.SND_ENCRYPTFILES,Audio.AUDIO_CODEC);
346347
347348 write1loop: while ( (totalTranfered < filesizeInBytes) && (! inputEnded ))
348349 {
@@ -404,13 +405,13 @@ public class CreateOTPKey extends Application implements Initializable
404405 @FXML
405406 private void cancelButtonAction(ActionEvent event)
406407 {
407- new Sound().play(guifx, Audio.SND_BUTTON,Audio.AUDIO_CODEC);;
408+ new Sound().play(guifx, Audio.SND_BUTTON,Audio.AUDIO_CODEC);
408409 Platform.runLater(new Runnable(){ @Override public void run()
409410 {
410411 if (repeaterTimeline != null) { repeaterTimeline.stop(); statusLabel1.setText("Canceled"); } else { statusLabel1.setText("Closing"); }
411412 statusLabel1.setVisible(true);
412413
413- new Sound().play(guifx, Audio.SND_INPUT_FAIL,Audio.AUDIO_CODEC);;
414+ new Sound().play(guifx, Audio.SND_INPUT_FAIL,Audio.AUDIO_CODEC);
414415
415416 repeaterTimeline = new Timeline(new KeyFrame( Duration.millis(100), ae -> closeWindow() ));
416417 repeaterTimeline.setCycleCount(1);
@@ -443,8 +444,8 @@ public class CreateOTPKey extends Application implements Initializable
443444
444445 @FXML private void complianceLabelOnMouseClicked(MouseEvent event)
445446 {
446- new Sound().play(guifx, Audio.SND_BUTTON,Audio.AUDIO_CODEC);;
447- new Sound().play(guifx, Audio.SND_OPEN,Audio.AUDIO_CODEC);;
447+ new Sound().play(guifx, Audio.SND_BUTTON,Audio.AUDIO_CODEC);
448+ new Sound().play(guifx, Audio.SND_OPEN,Audio.AUDIO_CODEC);
448449 Thread otpKeyURLThread;
449450 otpKeyURLThread = new Thread(() ->
450451 {
@@ -460,8 +461,8 @@ public class CreateOTPKey extends Application implements Initializable
460461 @FXML
461462 private void otpRulesOnMouseClicked(MouseEvent event)
462463 {
463- new Sound().play(guifx, Audio.SND_BUTTON,Audio.AUDIO_CODEC);;
464- new Sound().play(guifx, Audio.SND_OPEN,Audio.AUDIO_CODEC);;
464+ new Sound().play(guifx, Audio.SND_BUTTON,Audio.AUDIO_CODEC);
465+ new Sound().play(guifx, Audio.SND_OPEN,Audio.AUDIO_CODEC);
465466 Thread otpKeyURLThread;
466467 otpKeyURLThread = new Thread(() ->
467468 {
--- a/src/rdj/FinalCrypt.java
+++ b/src/rdj/FinalCrypt.java
@@ -163,7 +163,17 @@ public class FinalCrypt extends Thread
163163 private long realtimeBytesProcessed;
164164 private long totalBytesProcessed;
165165
166- public static boolean sync = true;
166+ public static boolean sync = false; // false = Best performance
167+
168+// blend e 25.8MBps d 48.9MBps sync false
169+// shell e 7.1MBps d 6.7MBps sync false
170+// googl e 19.1MBps d 28.8MBps sync false
171+// oracl e 22.8MBps d 34.6MBps sync false
172+//
173+// blend e 21.9MBps d 34.6MBps sync true
174+// shell e 1.6MBps d 2.0MBps sync true
175+// googl e 12.5MBps d 16.7MBps sync true
176+// oracl e 14.9MBps d 20.6MBps sync true
167177
168178 public FinalCrypt(UI ui)
169179 {
--- a/src/rdj/GUIFX.java
+++ b/src/rdj/GUIFX.java
@@ -62,31 +62,6 @@ import javafx.scene.control.Tooltip;
6262 import javafx.scene.input.MouseEvent;
6363 import javafx.scene.shape.Rectangle;
6464 import javafx.stage.Stage;
65-import javax.management.Attribute;
66-import javax.management.AttributeList;
67-import javax.management.MBeanServer;
68-import javax.management.ObjectName;
69-import javax.swing.JFileChooser;
70-import javax.swing.JToggleButton;
71-import javax.swing.filechooser.FileNameExtensionFilter;
72-import java.lang.management.ManagementFactory;
73-import java.nio.ByteBuffer;
74-import java.nio.channels.SeekableByteChannel;
75-import java.nio.file.LinkOption;
76-import java.nio.file.Paths;
77-import java.nio.file.StandardOpenOption;
78-import java.nio.file.attribute.PosixFilePermission;
79-import java.security.MessageDigest;
80-import java.security.NoSuchAlgorithmException;
81-import java.util.Calendar;
82-import java.util.EnumSet;
83-import java.util.HashSet;
84-import java.util.Iterator;
85-import java.util.List;
86-import java.util.Locale;
87-import java.util.Set;
88-import java.util.function.Predicate;
89-import java.util.stream.Collectors;
9065 import javafx.animation.Animation;
9166 import javafx.animation.FadeTransition;
9267 import javafx.animation.Interpolator;
@@ -120,6 +95,31 @@ import javafx.scene.text.FontWeight;
12095 import javafx.scene.text.TextAlignment;
12196 import javafx.stage.*;
12297 import javafx.util.Duration;
98+import javax.management.Attribute;
99+import javax.management.AttributeList;
100+import javax.management.MBeanServer;
101+import javax.management.ObjectName;
102+import javax.swing.JFileChooser;
103+import javax.swing.JToggleButton;
104+import javax.swing.filechooser.FileNameExtensionFilter;
105+import java.lang.management.ManagementFactory;
106+import java.nio.ByteBuffer;
107+import java.nio.channels.SeekableByteChannel;
108+import java.nio.file.LinkOption;
109+import java.nio.file.Paths;
110+import java.nio.file.StandardOpenOption;
111+import java.nio.file.attribute.PosixFilePermission;
112+import java.security.MessageDigest;
113+import java.security.NoSuchAlgorithmException;
114+import java.util.Calendar;
115+import java.util.EnumSet;
116+import java.util.HashSet;
117+import java.util.Iterator;
118+import java.util.List;
119+import java.util.Locale;
120+import java.util.Set;
121+import java.util.function.Predicate;
122+import java.util.stream.Collectors;
123123 import javax.management.InstanceNotFoundException;
124124 import javax.management.MalformedObjectNameException;
125125 import javax.management.ReflectionException;
@@ -487,14 +487,16 @@ public class GUIFX extends Application implements UI, Initializable
487487
488488 // try { UIManager.setLookAndFeel("javax.swing.plaf.nimbus.NimbusLookAndFeel"); }catch(Exception e){ System.out.println("Exception: setLookAndFeel: " + e.getMessage()); }
489489 // try { UIManager.setLookAndFeel("com.sun.java.swing.plaf.gtk.GTKLookAndFeel"); }catch(Exception e){ System.out.println("Exception: setLookAndFeel: " + e.getMessage()); } // dead lock on BSD
490- setUserAgentStylesheet(STYLESHEET_MODENA);
491-// setUserAgentStylesheet(STYLESHEET_CASPIAN);
490+
491+// setUserAgentStylesheet(STYLESHEET_CASPIAN); // JavaFX2 Stylesheet
492+ setUserAgentStylesheet(STYLESHEET_MODENA); // JavaFX8 Stylesheet
492493
493494 this.stage.setScene(scene);
494495 this.stage.setTitle(Version.getProductName());
495496 this.stage.setMinWidth(1366);
496497 this.stage.setMinHeight(700);
497498 this.stage.setMaximized(true);
499+ this.stage.initStyle(StageStyle.DECORATED);
498500
499501 this.stage.show();
500502
@@ -509,7 +511,7 @@ public class GUIFX extends Application implements UI, Initializable
509511 else if (val.equals("Yes")) { }
510512 else { prefs.put("Shared", "No"); openSupport(); }
511513 });
512-
514+
513515 Platform.runLater(() ->
514516 {
515517 version = new Version(ui);
@@ -1481,7 +1483,6 @@ public class GUIFX extends Application implements UI, Initializable
14811483 content += "This is a development version: (" + Version.getProductName() + " v" +version.getCurrentlyInstalledOverallVersionString() + ")\r\n\r\n";
14821484 content += version.getCurrentReleaseString() + "\r\n";
14831485 content += "=====================================================\r\n\r\n";
1484- content += "The latest online stable release: (" + Version.getProductName() + " v" +version.getLatestOnlineOverallVersionString() + ")\r\n";
14851486 content += "Would you like to download (" + Version.getProductName() + " v" + version.getLatestOnlineOverallVersionString() + ") ?\r\n";
14861487 alert.setContentText(content);
14871488 alert.getDialogPane().setMinHeight(Region.USE_PREF_SIZE);
@@ -2906,29 +2907,32 @@ public class GUIFX extends Application implements UI, Initializable
29062907
29072908 synchronized private void openSupport()
29082909 {
2909- // Needs Threading to early split off from the UI Event Dispatch Thread
2910- final GUIFX guifx = this;
2911- final UI ui = this;
2910+ Platform.runLater(() ->
2911+ {
2912+ // Needs Threading to early split off from the UI Event Dispatch Thread
2913+ final GUIFX guifx = this;
2914+ final UI ui = this;
29122915
2913- Thread pleaseShareThread = new Thread(new Runnable()
2914- {
2915- @Override
2916- @SuppressWarnings({"static-access"})
2917- public void run()
2918- {
2919- Platform.runLater(() ->
2916+ Thread pleaseShareThread = new Thread(new Runnable()
2917+ {
2918+ @Override
2919+ @SuppressWarnings({"static-access"})
2920+ public void run()
29202921 {
2921- new Sound().play(ui, Sound.SND_OPEN,Audio.AUDIO_CODEC);
2922- supportStage = new Stage();
2923- support = new Support();
2924- try { support.start(supportStage); } catch (Exception ex) { log("Error: Exception: \r\n", true, true, true, true, false); }
2925- support.controller.setGUI(guifx); // Parse parameters onto global controller references always through controller
2926- });
2927- }
2928- });
2929- pleaseShareThread.setName("pleaseShareThread");
2930- pleaseShareThread.setDaemon(true);
2931- pleaseShareThread.start();
2922+ Platform.runLater(() ->
2923+ {
2924+ new Sound().play(ui, Sound.SND_OPEN,Audio.AUDIO_CODEC);
2925+ supportStage = new Stage();
2926+ support = new Support();
2927+ try { support.start(supportStage); } catch (Exception ex) { log("Error: Exception: \r\n", true, true, true, true, false); }
2928+ support.controller.setGUI(guifx); // Parse parameters onto global controller references always through controller
2929+ });
2930+ }
2931+ });
2932+ pleaseShareThread.setName("pleaseShareThread");
2933+ pleaseShareThread.setDaemon(true);
2934+ pleaseShareThread.start();
2935+ });
29322936 }
29332937
29342938 // ================================================= BEGIN UPDATE PROGRESS ===========================================================
@@ -3094,6 +3098,9 @@ public class GUIFX extends Application implements UI, Initializable
30943098 {
30953099 fileProgressBar.setProgress(100.0); filesProgressBar.setProgress(100.0);
30963100
3101+ megaBytesPerSecond = 0;
3102+ UPDATE_CLOCKS_TIMELINE.stop();
3103+
30973104 if ( processRunningMode == ENCRYPT_MODE ) { userGuidanceMessage(FINISHED_ENCRYPTING, 64, false, false, false, false, Voice.VOI_FINISHED_ENCRYPTING, 0); }
30983105 if ( processRunningMode == DECRYPT_MODE ) { userGuidanceMessage(FINISHED_DECRYPTING, 64, false, false, false, false, Voice.VOI_FINISHED_DECRYPTING, 0); }
30993106
@@ -3101,13 +3108,8 @@ public class GUIFX extends Application implements UI, Initializable
31013108 {
31023109 fileProgressBar.setVisible(false);filesProgressBar.setVisible(false);
31033110
3104- megaBytesPerSecond = 0;
31053111 updateSystemMonitor();
31063112
3107- // Clocks
3108- // if ((processRunningMode == ENCRYPT_MODE) || (processRunningMode == DECRYPT_MODE)) { UPDATE_CLOCKS_TIMELINE.stop(); }
3109- UPDATE_CLOCKS_TIMELINE.stop();
3110-
31113113 targetFCPathList = new FCPathList<FCPath>();
31123114 updateDashboard(targetFCPathList);
31133115
@@ -3764,8 +3766,8 @@ public class GUIFX extends Application implements UI, Initializable
37643766
37653767 public void status(String message) { Platform.runLater(() -> { statusLabel.setText(message.replace("\r\n", "")); }); }
37663768 public void log(String message) { Platform.runLater(() -> { lineCounter++; logTextArea.appendText(message); if (lineCounter > 1000) { logTextArea.setText(message); lineCounter = 0; } }); }
3767- public void logfile(String message) { Platform.runLater(() -> { try { Files.write(configuration.getLogFilePath(), message.getBytes(), StandardOpenOption.CREATE, StandardOpenOption.APPEND, StandardOpenOption.SYNC); } catch (IOException ex) { log("Files.write(" + configuration.getLogFilePath() + ")..));", true, true, false, false, false); } }); }
3768- public void errfile(String message) { Platform.runLater(() -> { new Sound().play(this, Audio.SND_ERROR,Audio.AUDIO_CODEC); try { Files.write(configuration.getErrFilePath(), message.getBytes(), StandardOpenOption.CREATE, StandardOpenOption.APPEND, StandardOpenOption.SYNC); } catch (IOException ex) { log("Files.write(" + configuration.getErrFilePath() + ")..));", true, true, false, false, false); } }); }
3769+ public void logfile(String message) { Platform.runLater(() -> { try { Files.write(configuration.getLogFilePath(), message.getBytes(), StandardOpenOption.CREATE, StandardOpenOption.APPEND); } catch (IOException ex) { log("Files.write(" + configuration.getLogFilePath() + ")..));", true, true, false, false, false); } }); }
3770+ public void errfile(String message) { Platform.runLater(() -> { new Sound().play(this, Audio.SND_ERROR,Audio.AUDIO_CODEC); try { Files.write(configuration.getErrFilePath(), message.getBytes(), StandardOpenOption.CREATE, StandardOpenOption.APPEND); } catch (IOException ex) { log("Files.write(" + configuration.getErrFilePath() + ")..));", true, true, false, false, false); } }); }
37693771 public void print(String message,boolean err) { if ( ! err ) { System.out.print(message); } else { System.err.print(message); } }
37703772
37713773 public static void main(String[] args) { launch(args); }
--- a/src/rdj/VERSION
+++ b/src/rdj/VERSION
@@ -1 +1 @@
1-5.6.7
\ No newline at end of file
1+5.6.8
\ No newline at end of file
--- a/src/rdj/VERSION2
+++ b/src/rdj/VERSION2
@@ -1,4 +1,4 @@
1-[Version] = {5.6.7}
1+[Version] = {5.6.8}
22 [] = {} ================================================================
33 [Release Notes] = {You are using a very old version of FinalCrypt}
44 [Release Message] = {Please visit the website and download the latest}
@@ -19,10 +19,12 @@
1919 [Upgrade Notes] = {Brute Force only works on the Command Line Interface}
2020 [Upgrade Notes] = {}
2121 [] = {} ----------------------------------------------------------------
22-[Update Notes] = {Update 7}
22+[Update Notes] = {Update 8}
2323 [Update Notes] = {}
24-[Update Notes] = {Fixed (non-latin) UTF8 Font rendering in File Managers}
25-[Update Notes] = {Chinese chars now render properly on Ubuntu File Mngrs}
24+[Update Notes] = {Major performance improvement on file encryption}
25+[Update Notes] = {Much faster user interface responses and display}
26+[Update Notes] = {Performance increase 700% encrypting small files}
27+[Update Notes] = {Non critical I/O cache enabled on logging system}
2628 [] = {} --------------------------------------------------------------------------------------------------------
2729 [Alert Subject_] = {}
2830 [Alert Notes_] = {}
--- a/src/rdj/Version.java
+++ b/src/rdj/Version.java
@@ -180,6 +180,7 @@ public class Version
180180 env += "User Name: " + USER_NAME + "\r\n";
181181 env += "User Home: " + USER_HOME + "\r\n";
182182 env += "User Dir: " + USER_DIR + "\r\n";
183+ env += "User Agent: " + getUserAgent("") + "\r\n";
183184 env += "\r\n";
184185 env += "Action Symbols ";
185186 env += FinalCrypt.UTF8_CREATE_SYMBOL + " = " + FinalCrypt.UTF8_CREATE_DESC + " | ";
@@ -289,10 +290,10 @@ public class Version
289290 return returnValue;
290291 }
291292
292- private static String getUserAgent(UI ui, String connType)
293+ private static String getUserAgent(String connType)
293294 {
294295 String userAgent = "";
295- userAgent += Version.getProductName() + "/" + Version.getCurrentlyInstalledOverallVersionString() + " " + fcInterface + " " + connType;
296+ userAgent += getProductName() + "/" + getCurrentlyInstalledOverallVersionString() + " " + fcInterface + " " + connType;
296297 userAgent += " (" + OS_NAME + " " + OS_VERSION + "; " + OS_ARCH + "; ";
297298 userAgent += JAVA_VENDOR + " " + JAVA_VERSION + " " + CLASS_VERSION;// + "; ";
298299 // userAgent += JAVA_VM_NAME + " " + JAVA_VM_VERSION + ")";
@@ -303,7 +304,7 @@ public class Version
303304
304305 public static String httpGetRequest(UI ui, String urlString)
305306 {
306- String userAgent = getUserAgent(ui, "(HTTP)");
307+ String userAgent = getUserAgent("(HTTP)");
307308
308309 URL url = null;
309310 try { url = new URL(urlString); } catch (MalformedURLException ex) { checkOnlineFailed = true; ui.log("Error: httpGetRequest MalformedURLException: new URL(" + urlString +") (URL Typo?)\r\n", false, true, true, true, false); return null; }
@@ -337,7 +338,7 @@ public class Version
337338
338339 public static String httpsGetRequest(UI ui, String urlString)
339340 {
340- String userAgent = getUserAgent(ui, "(HTTPS)");
341+ String userAgent = getUserAgent("(HTTPS)");
341342
342343 URL url = null;
343344 try { url = new URL(urlString); } catch (MalformedURLException ex) { checkOnlineFailed = true; ui.log("Error: httpsGetRequest MalformedURLException: new URL(" + urlString +") (URL Typo?)\r\n", false, true, true, true, false); }