FinalCrypt - The No¹ One-Time Pad Encryption
Révision | 7e01e02b78cb9924a12f2baa81cb5ff5812cc042 (tree) |
---|---|
l'heure | 2019-12-03 01:27:26 |
Auteur | ron <ronuitzaandam@gmai...> |
Commiter | ron |
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
@@ -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 | + | |
1 | 8 | Date: 2019-11-27 Version: 5.6.7 |
2 | 9 | |
3 | 10 | Fixed (non-latin) UTF8 Font rendering in File Managers |
@@ -1,9 +1,9 @@ | ||
1 | 1 | Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ |
2 | 2 | Upstream-Name: FinalCrypt |
3 | -Source: https://github.com/ron-from-nl/FinalCrypt/releases | |
3 | +Source: http://www.finalcrypt.org/ | |
4 | 4 | |
5 | 5 | Files: * |
6 | -Copyright: 2017 Ron de Jong <ronuitzaandam@gmail.com> | |
6 | +Copyright: 2017 Ron de Jong <ron@finalcrypt.org> | |
7 | 7 | License: Creative Commons License (CC BY-NC-ND 4.0) |
8 | 8 | as published by https://creativecommons.org/licenses/by-nc-nd/4.0/; |
9 | 9 | either version 4.0 of the License, or (at your option) any later version. |
@@ -1,7 +1,7 @@ | ||
1 | 1 | <#if licenseFirst??> |
2 | 2 | ${licenseFirst} |
3 | 3 | </#if> |
4 | -${licensePrefix}Copyright © 2017 Ron de Jong (ronuitzaandam@gmail.com). | |
4 | +${licensePrefix}Copyright © 2017 Ron de Jong (ron@finalcrypt.org). | |
5 | 5 | ${licensePrefix} |
6 | 6 | ${licensePrefix}This is free software; you can redistribute it |
7 | 7 | ${licensePrefix}under the terms of the Creative Commons License |
@@ -62,4 +62,4 @@ Parameters: | ||
62 | 62 | <[-t "file/dir"]> Target items (files or directories) you want to encrypt (recursive). |
63 | 63 | <[-b "batchfile"]> Batchfile with targetfiles you want to encrypt (only files). |
64 | 64 | |
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 |
@@ -76,4 +76,4 @@ Key Device Examples (Linux): | ||
76 | 76 | java -cp finalcrypt.jar rdj/CLUI --encrypt -k /dev/sdc1 -t myfile |
77 | 77 | java -cp finalcrypt.jar rdj/CLUI --decrypt -k /dev/sdc1 -t myfile |
78 | 78 | |
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 |
@@ -155,18 +155,6 @@ is divided into following sections: | ||
155 | 155 | <istrue value="${not.archive.disabled}"/> |
156 | 156 | </or> |
157 | 157 | </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> | |
170 | 158 | <condition property="do.archive+manifest.available"> |
171 | 159 | <and> |
172 | 160 | <isset property="manifest.available"/> |
@@ -1194,13 +1182,27 @@ is divided into following sections: | ||
1194 | 1182 | <attribute name="SplashScreen-Image" value="META-INF/${splashscreen.basename}"/> |
1195 | 1183 | </manifest> |
1196 | 1184 | </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"> | |
1198 | 1200 | <j2seproject3:copylibs manifest="${tmp.manifest.file}"/> |
1199 | 1201 | <echo level="info">To run this application from the command line without Ant, try:</echo> |
1200 | 1202 | <property location="${dist.jar}" name="dist.jar.resolved"/> |
1201 | 1203 | <echo level="info">java -jar "${dist.jar.resolved}"</echo> |
1202 | 1204 | </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"> | |
1204 | 1206 | <j2seproject1:jar manifest="${tmp.manifest.file}"/> |
1205 | 1207 | <property location="${build.classes.dir}" name="build.classes.dir.resolved"/> |
1206 | 1208 | <property location="${dist.jar}" name="dist.jar.resolved"/> |
@@ -1,8 +1,8 @@ | ||
1 | 1 | build.xml.data.CRC32=a2f9d86e |
2 | 2 | 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 | |
4 | 4 | # This file is used by a NetBeans-based IDE to track changes in generated files such as build-impl.xml. |
5 | 5 | # Do not edit this file. You may delete it but then the IDE will never regenerate such files for you. |
6 | 6 | 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 |
@@ -8,7 +8,7 @@ application.homepage=http://www.finalcrypt.org/ | ||
8 | 8 | application.splash= |
9 | 9 | application.title=FinalCrypt |
10 | 10 | application.vendor=FinalCrypt |
11 | -application.implementation.version=5.6.7 | |
11 | +application.implementation.version=5.6.8 | |
12 | 12 | auxiliary.org-netbeans-modules-editor-indent.CodeStyle.project.expand-tabs=false |
13 | 13 | auxiliary.org-netbeans-modules-editor-indent.CodeStyle.project.indent-shift-width=4 |
14 | 14 | auxiliary.org-netbeans-modules-editor-indent.CodeStyle.project.spaces-per-tab=4 |
@@ -60,6 +60,7 @@ build.generated.sources.dir=${build.dir}/generated-sources | ||
60 | 60 | build.sysclasspath=ignore |
61 | 61 | build.test.classes.dir=${build.dir}/test/classes |
62 | 62 | build.test.results.dir=${build.dir}/test/results |
63 | +copylibs.excludes=${javafx.classpath.extension} | |
63 | 64 | # Uncomment to specify the preferred debugger connection transport: |
64 | 65 | #debug.transport=dt_socket |
65 | 66 | debug.classpath=\ |
@@ -78,14 +79,30 @@ dist.jar=${dist.dir}/FinalCrypt.jar | ||
78 | 79 | dist.javadoc.dir=${dist.dir}/javadoc |
79 | 80 | endorsed.classpath= |
80 | 81 | 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 | |
81 | 90 | includes=** |
82 | 91 | jar.archive.disabled=${jnlp.enabled} |
83 | 92 | jar.compress=true |
84 | 93 | 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} | |
86 | 103 | # Space-separated list of extra javac options |
87 | -javac.compilerargs=-Xlint:unchecked | |
88 | -javac.deprecation=false | |
104 | +javac.compilerargs= | |
105 | +javac.deprecation=true | |
89 | 106 | javac.external.vm=true |
90 | 107 | javac.modulepath= |
91 | 108 | javac.processormodulepath= |
@@ -123,6 +140,7 @@ jnlp.signed=false | ||
123 | 140 | jnlp.signing= |
124 | 141 | jnlp.signing.alias= |
125 | 142 | jnlp.signing.keystore= |
143 | +keep.javafx.runtime.on.classpath=true | |
126 | 144 | main.class=rdj.GUIFX |
127 | 145 | # Optional override of default Application-Library-Allowable-Codebase attribute identifying the locations where your signed RIA is expected to be found. |
128 | 146 | manifest.custom.application.library.allowable.codebase= |
@@ -134,17 +152,13 @@ manifest.custom.codebase= | ||
134 | 152 | manifest.custom.permissions= |
135 | 153 | manifest.file=manifest.mf |
136 | 154 | meta.inf.dir=${src.dir}/META-INF |
137 | -mkdist.disabled=false | |
155 | +mkdist.disabled=true | |
138 | 156 | native.bundling.enabled=true |
139 | 157 | platform.active=default_platform |
140 | 158 | project.license=default |
141 | 159 | run.classpath=\ |
142 | 160 | ${javac.classpath}:\ |
143 | 161 | ${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= | |
148 | 162 | run.modulepath=\ |
149 | 163 | ${javac.modulepath} |
150 | 164 | run.test.classpath=\ |
@@ -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 | - |
@@ -1031,8 +1031,8 @@ public class CLUI implements UI | ||
1031 | 1031 | |
1032 | 1032 | public void status(String message) { } |
1033 | 1033 | 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); } } | |
1036 | 1036 | public void print(String message, boolean err) { if ( ! err ) { System.out.print(message); } else { System.err.print(message); } } |
1037 | 1037 | |
1038 | 1038 | public static void main(String[] args) { new CLUI(args); } |
@@ -217,8 +217,8 @@ public class CreateOTPKey extends Application implements Initializable | ||
217 | 217 | |
218 | 218 | @FXML private void increaseButtonOnAction(ActionEvent event) { changeSize(1); } |
219 | 219 | @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); } | |
222 | 222 | @FXML private void increaseButtonOnMouseReleased(MouseEvent event) { changeSizeRepeaterOff(); } |
223 | 223 | @FXML private void decreaseButtonOnMouseReleased(MouseEvent event) { changeSizeRepeaterOff(); } |
224 | 224 |
@@ -246,7 +246,8 @@ public class CreateOTPKey extends Application implements Initializable | ||
246 | 246 | filesizeNumber = Long.valueOf(filesizeTextField.getText()); |
247 | 247 | Integer selectedIndexAsPower = unitChoiceBox.getSelectionModel().getSelectedIndex(); |
248 | 248 | double interimFactor = Math.pow(1024, selectedIndexAsPower); |
249 | - factor = (new Double(interimFactor)).longValue(); | |
249 | +// factor = (new Double(interimFactor)).longValue(); | |
250 | + factor = (Double.doubleToLongBits(interimFactor)); | |
250 | 251 | filesizeInBytes = filesizeNumber * factor; |
251 | 252 | if (( filesizeInBytes > 0 ) && ( filesizeInBytes <= Long.MAX_VALUE )) { createButton.setDisable(false); } else { createButton.setDisable(true); } |
252 | 253 |
@@ -274,7 +275,7 @@ public class CreateOTPKey extends Application implements Initializable | ||
274 | 275 | @FXML |
275 | 276 | private void createButtonAction(ActionEvent event) |
276 | 277 | { |
277 | - new Sound().play(guifx, Audio.SND_BUTTON,Audio.AUDIO_CODEC);; | |
278 | + new Sound().play(guifx, Audio.SND_BUTTON,Audio.AUDIO_CODEC); | |
278 | 279 | filenameTextField.setDisable(true); |
279 | 280 | filesizeLabel.setDisable(true); |
280 | 281 | filesizeTextField.setDisable(true); |
@@ -342,7 +343,7 @@ public class CreateOTPKey extends Application implements Initializable | ||
342 | 343 | }; updateProgressTaskTimer = new java.util.Timer(); updateProgressTaskTimer.schedule(updateProgressTask, 0L, 200L); |
343 | 344 | |
344 | 345 | |
345 | - new Sound().play(guifx, Audio.SND_ENCRYPTFILES,Audio.AUDIO_CODEC);; | |
346 | + new Sound().play(guifx, Audio.SND_ENCRYPTFILES,Audio.AUDIO_CODEC); | |
346 | 347 | |
347 | 348 | write1loop: while ( (totalTranfered < filesizeInBytes) && (! inputEnded )) |
348 | 349 | { |
@@ -404,13 +405,13 @@ public class CreateOTPKey extends Application implements Initializable | ||
404 | 405 | @FXML |
405 | 406 | private void cancelButtonAction(ActionEvent event) |
406 | 407 | { |
407 | - new Sound().play(guifx, Audio.SND_BUTTON,Audio.AUDIO_CODEC);; | |
408 | + new Sound().play(guifx, Audio.SND_BUTTON,Audio.AUDIO_CODEC); | |
408 | 409 | Platform.runLater(new Runnable(){ @Override public void run() |
409 | 410 | { |
410 | 411 | if (repeaterTimeline != null) { repeaterTimeline.stop(); statusLabel1.setText("Canceled"); } else { statusLabel1.setText("Closing"); } |
411 | 412 | statusLabel1.setVisible(true); |
412 | 413 | |
413 | - new Sound().play(guifx, Audio.SND_INPUT_FAIL,Audio.AUDIO_CODEC);; | |
414 | + new Sound().play(guifx, Audio.SND_INPUT_FAIL,Audio.AUDIO_CODEC); | |
414 | 415 | |
415 | 416 | repeaterTimeline = new Timeline(new KeyFrame( Duration.millis(100), ae -> closeWindow() )); |
416 | 417 | repeaterTimeline.setCycleCount(1); |
@@ -443,8 +444,8 @@ public class CreateOTPKey extends Application implements Initializable | ||
443 | 444 | |
444 | 445 | @FXML private void complianceLabelOnMouseClicked(MouseEvent event) |
445 | 446 | { |
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); | |
448 | 449 | Thread otpKeyURLThread; |
449 | 450 | otpKeyURLThread = new Thread(() -> |
450 | 451 | { |
@@ -460,8 +461,8 @@ public class CreateOTPKey extends Application implements Initializable | ||
460 | 461 | @FXML |
461 | 462 | private void otpRulesOnMouseClicked(MouseEvent event) |
462 | 463 | { |
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); | |
465 | 466 | Thread otpKeyURLThread; |
466 | 467 | otpKeyURLThread = new Thread(() -> |
467 | 468 | { |
@@ -163,7 +163,17 @@ public class FinalCrypt extends Thread | ||
163 | 163 | private long realtimeBytesProcessed; |
164 | 164 | private long totalBytesProcessed; |
165 | 165 | |
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 | |
167 | 177 | |
168 | 178 | public FinalCrypt(UI ui) |
169 | 179 | { |
@@ -62,31 +62,6 @@ import javafx.scene.control.Tooltip; | ||
62 | 62 | import javafx.scene.input.MouseEvent; |
63 | 63 | import javafx.scene.shape.Rectangle; |
64 | 64 | 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; | |
90 | 65 | import javafx.animation.Animation; |
91 | 66 | import javafx.animation.FadeTransition; |
92 | 67 | import javafx.animation.Interpolator; |
@@ -120,6 +95,31 @@ import javafx.scene.text.FontWeight; | ||
120 | 95 | import javafx.scene.text.TextAlignment; |
121 | 96 | import javafx.stage.*; |
122 | 97 | 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; | |
123 | 123 | import javax.management.InstanceNotFoundException; |
124 | 124 | import javax.management.MalformedObjectNameException; |
125 | 125 | import javax.management.ReflectionException; |
@@ -487,14 +487,16 @@ public class GUIFX extends Application implements UI, Initializable | ||
487 | 487 | |
488 | 488 | // try { UIManager.setLookAndFeel("javax.swing.plaf.nimbus.NimbusLookAndFeel"); }catch(Exception e){ System.out.println("Exception: setLookAndFeel: " + e.getMessage()); } |
489 | 489 | // 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 | |
492 | 493 | |
493 | 494 | this.stage.setScene(scene); |
494 | 495 | this.stage.setTitle(Version.getProductName()); |
495 | 496 | this.stage.setMinWidth(1366); |
496 | 497 | this.stage.setMinHeight(700); |
497 | 498 | this.stage.setMaximized(true); |
499 | + this.stage.initStyle(StageStyle.DECORATED); | |
498 | 500 | |
499 | 501 | this.stage.show(); |
500 | 502 |
@@ -509,7 +511,7 @@ public class GUIFX extends Application implements UI, Initializable | ||
509 | 511 | else if (val.equals("Yes")) { } |
510 | 512 | else { prefs.put("Shared", "No"); openSupport(); } |
511 | 513 | }); |
512 | - | |
514 | + | |
513 | 515 | Platform.runLater(() -> |
514 | 516 | { |
515 | 517 | version = new Version(ui); |
@@ -1481,7 +1483,6 @@ public class GUIFX extends Application implements UI, Initializable | ||
1481 | 1483 | content += "This is a development version: (" + Version.getProductName() + " v" +version.getCurrentlyInstalledOverallVersionString() + ")\r\n\r\n"; |
1482 | 1484 | content += version.getCurrentReleaseString() + "\r\n"; |
1483 | 1485 | content += "=====================================================\r\n\r\n"; |
1484 | - content += "The latest online stable release: (" + Version.getProductName() + " v" +version.getLatestOnlineOverallVersionString() + ")\r\n"; | |
1485 | 1486 | content += "Would you like to download (" + Version.getProductName() + " v" + version.getLatestOnlineOverallVersionString() + ") ?\r\n"; |
1486 | 1487 | alert.setContentText(content); |
1487 | 1488 | alert.getDialogPane().setMinHeight(Region.USE_PREF_SIZE); |
@@ -2906,29 +2907,32 @@ public class GUIFX extends Application implements UI, Initializable | ||
2906 | 2907 | |
2907 | 2908 | synchronized private void openSupport() |
2908 | 2909 | { |
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; | |
2912 | 2915 | |
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() | |
2920 | 2921 | { |
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 | + }); | |
2932 | 2936 | } |
2933 | 2937 | |
2934 | 2938 | // ================================================= BEGIN UPDATE PROGRESS =========================================================== |
@@ -3094,6 +3098,9 @@ public class GUIFX extends Application implements UI, Initializable | ||
3094 | 3098 | { |
3095 | 3099 | fileProgressBar.setProgress(100.0); filesProgressBar.setProgress(100.0); |
3096 | 3100 | |
3101 | + megaBytesPerSecond = 0; | |
3102 | + UPDATE_CLOCKS_TIMELINE.stop(); | |
3103 | + | |
3097 | 3104 | if ( processRunningMode == ENCRYPT_MODE ) { userGuidanceMessage(FINISHED_ENCRYPTING, 64, false, false, false, false, Voice.VOI_FINISHED_ENCRYPTING, 0); } |
3098 | 3105 | if ( processRunningMode == DECRYPT_MODE ) { userGuidanceMessage(FINISHED_DECRYPTING, 64, false, false, false, false, Voice.VOI_FINISHED_DECRYPTING, 0); } |
3099 | 3106 |
@@ -3101,13 +3108,8 @@ public class GUIFX extends Application implements UI, Initializable | ||
3101 | 3108 | { |
3102 | 3109 | fileProgressBar.setVisible(false);filesProgressBar.setVisible(false); |
3103 | 3110 | |
3104 | - megaBytesPerSecond = 0; | |
3105 | 3111 | updateSystemMonitor(); |
3106 | 3112 | |
3107 | - // Clocks | |
3108 | - // if ((processRunningMode == ENCRYPT_MODE) || (processRunningMode == DECRYPT_MODE)) { UPDATE_CLOCKS_TIMELINE.stop(); } | |
3109 | - UPDATE_CLOCKS_TIMELINE.stop(); | |
3110 | - | |
3111 | 3113 | targetFCPathList = new FCPathList<FCPath>(); |
3112 | 3114 | updateDashboard(targetFCPathList); |
3113 | 3115 |
@@ -3764,8 +3766,8 @@ public class GUIFX extends Application implements UI, Initializable | ||
3764 | 3766 | |
3765 | 3767 | public void status(String message) { Platform.runLater(() -> { statusLabel.setText(message.replace("\r\n", "")); }); } |
3766 | 3768 | 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); } }); } | |
3769 | 3771 | public void print(String message,boolean err) { if ( ! err ) { System.out.print(message); } else { System.err.print(message); } } |
3770 | 3772 | |
3771 | 3773 | public static void main(String[] args) { launch(args); } |
@@ -1 +1 @@ | ||
1 | -5.6.7 | |
\ No newline at end of file | ||
1 | +5.6.8 | |
\ No newline at end of file |
@@ -1,4 +1,4 @@ | ||
1 | -[Version] = {5.6.7} | |
1 | +[Version] = {5.6.8} | |
2 | 2 | [] = {} ================================================================ |
3 | 3 | [Release Notes] = {You are using a very old version of FinalCrypt} |
4 | 4 | [Release Message] = {Please visit the website and download the latest} |
@@ -19,10 +19,12 @@ | ||
19 | 19 | [Upgrade Notes] = {Brute Force only works on the Command Line Interface} |
20 | 20 | [Upgrade Notes] = {} |
21 | 21 | [] = {} ---------------------------------------------------------------- |
22 | -[Update Notes] = {Update 7} | |
22 | +[Update Notes] = {Update 8} | |
23 | 23 | [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} | |
26 | 28 | [] = {} -------------------------------------------------------------------------------------------------------- |
27 | 29 | [Alert Subject_] = {} |
28 | 30 | [Alert Notes_] = {} |
@@ -180,6 +180,7 @@ public class Version | ||
180 | 180 | env += "User Name: " + USER_NAME + "\r\n"; |
181 | 181 | env += "User Home: " + USER_HOME + "\r\n"; |
182 | 182 | env += "User Dir: " + USER_DIR + "\r\n"; |
183 | + env += "User Agent: " + getUserAgent("") + "\r\n"; | |
183 | 184 | env += "\r\n"; |
184 | 185 | env += "Action Symbols "; |
185 | 186 | env += FinalCrypt.UTF8_CREATE_SYMBOL + " = " + FinalCrypt.UTF8_CREATE_DESC + " | "; |
@@ -289,10 +290,10 @@ public class Version | ||
289 | 290 | return returnValue; |
290 | 291 | } |
291 | 292 | |
292 | - private static String getUserAgent(UI ui, String connType) | |
293 | + private static String getUserAgent(String connType) | |
293 | 294 | { |
294 | 295 | String userAgent = ""; |
295 | - userAgent += Version.getProductName() + "/" + Version.getCurrentlyInstalledOverallVersionString() + " " + fcInterface + " " + connType; | |
296 | + userAgent += getProductName() + "/" + getCurrentlyInstalledOverallVersionString() + " " + fcInterface + " " + connType; | |
296 | 297 | userAgent += " (" + OS_NAME + " " + OS_VERSION + "; " + OS_ARCH + "; "; |
297 | 298 | userAgent += JAVA_VENDOR + " " + JAVA_VERSION + " " + CLASS_VERSION;// + "; "; |
298 | 299 | // userAgent += JAVA_VM_NAME + " " + JAVA_VM_VERSION + ")"; |
@@ -303,7 +304,7 @@ public class Version | ||
303 | 304 | |
304 | 305 | public static String httpGetRequest(UI ui, String urlString) |
305 | 306 | { |
306 | - String userAgent = getUserAgent(ui, "(HTTP)"); | |
307 | + String userAgent = getUserAgent("(HTTP)"); | |
307 | 308 | |
308 | 309 | URL url = null; |
309 | 310 | 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 | ||
337 | 338 | |
338 | 339 | public static String httpsGetRequest(UI ui, String urlString) |
339 | 340 | { |
340 | - String userAgent = getUserAgent(ui, "(HTTPS)"); | |
341 | + String userAgent = getUserAgent("(HTTPS)"); | |
341 | 342 | |
342 | 343 | URL url = null; |
343 | 344 | 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); } |