Coder Social home page Coder Social logo

vanitasvitae / enigmandroid Goto Github PK

View Code? Open in Web Editor NEW
15.0 3.0 8.0 26.73 MB

Android implementation of the famous Enigma machine

Home Page: https://blog.jabberhead.tk/enigmandroid/

License: GNU General Public License v3.0

Java 99.76% Shell 0.24%
android enigma crypto simulator

enigmandroid's People

Contributors

afmachado avatar mimi89999 avatar vanitasvitae avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

enigmandroid's Issues

Persistence of ring settings (ringstellung)

This is a potential issue: using lineage OS android 7.1.2 the ring settings reset to 111 after the dialog is closed.

Also the numbers in the drop down menus are in black on a dark grey background and can be hard to read.

Great application! Keep up the good work. Best wishes

Al from UK

Description on fdroid

Hi, you are wrong, Polish mathematics broke enigma, read wikipedia and edit your description please. Thanks

Not compatible to online Enigma Simulator, when historical turnover points implemented

I have a new Issue with the Rotors. When I implement the historical turnover notches, the Enigma machine isn't compatible to the online simulator anymore. It seems to me, that the simulator turns over the next Rotor when turning from Z to A, no matter which rotor is selected. That is not historical correct according to Wikipedia.
Quote:

Rotor Turnover position(s) BP mnemonic
I R Royal
II F Flags
III W Wave
IV K Kings
V A Above

How should I deal with it?

Online Enigma Simulator: http://people.physik.hu-berlin.de/~palloks/js/enigma/enigma-u_v20.html

Don't know what "rings" are for.

Hello

Maybe somebody knows, where the Rings of the enigma machine are for? I know how everything works, except for the rings. There are the rotors which can rotate and there is the plugboard, but on wikipedia there is mentioned some rings and (in german) "Ringstellung" (in english: ring settings, ring position). Unfortunately im not able to propper interpret the wikipedia article. Maybe the ring settings are used to configure the point where one rotor kicks of the next?

Would be cool if someone could help me on this.

Edit: I think I understood, how the Ringstellung should work in theorie.
Quote from Wikipedia:
"A later improvement was the ability to adjust the alphabet ring relative to the rotor disk. The position of the ring was known as the Ringstellung ("ring setting"), and was a part of the initial setting prior to an operating session."
So the Ringstellung is nothing but the rotation of the labeling of the rotors. I think I can implement this.

Crash at startup on Android 5

The program runs fine on my Android 10 and 6 devices, but on an Android 5 device (Sony M4 Aqua) it crashes at startup:

--------- beginning of crash
02-16 02:04:57.047 E/AndroidRuntime(9380): FATAL EXCEPTION: main
02-16 02:04:57.047 E/AndroidRuntime(9380): Process: de.vanitasvitae.enigmandroid, PID: 9380
02-16 02:04:57.047 E/AndroidRuntime(9380): java.lang.NoSuchMethodError: No virtual method setDropDownViewTheme(Landroid/content/res/Resources$Theme;)V in class Landroid/widget/ArrayAdapter; or its super classes (declaration of 'android.widget.ArrayAdapter' appears in /system/framework/framework.jar)
02-16 02:04:57.047 E/AndroidRuntime(9380): 	at de.vanitasvitae.enigmandroid.layout.LayoutContainer.prepareSpinnerAdapter(LayoutContainer.java:147)
02-16 02:04:57.047 E/AndroidRuntime(9380): 	at de.vanitasvitae.enigmandroid.layout.LayoutContainer_I.assembleLayout(LayoutContainer_I.java:78)
02-16 02:04:57.047 E/AndroidRuntime(9380): 	at de.vanitasvitae.enigmandroid.layout.LayoutContainer.<init>(LayoutContainer.java:68)
02-16 02:04:57.047 E/AndroidRuntime(9380): 	at de.vanitasvitae.enigmandroid.layout.LayoutContainer_I.<init>(LayoutContainer_I.java:46)
02-16 02:04:57.047 E/AndroidRuntime(9380): 	at de.vanitasvitae.enigmandroid.layout.LayoutContainer.createLayoutContainer(LayoutContainer.java:104)
02-16 02:04:57.047 E/AndroidRuntime(9380): 	at de.vanitasvitae.enigmandroid.layout.LayoutContainer.createLayoutContainer(LayoutContainer.java:97)
02-16 02:04:57.047 E/AndroidRuntime(9380): 	at de.vanitasvitae.enigmandroid.MainActivity.onCreate(MainActivity.java:78)
02-16 02:04:57.047 E/AndroidRuntime(9380): 	at android.app.Activity.performCreate(Activity.java:5976)
02-16 02:04:57.047 E/AndroidRuntime(9380): 	at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1105)
02-16 02:04:57.047 E/AndroidRuntime(9380): 	at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2297)
02-16 02:04:57.047 E/AndroidRuntime(9380): 	at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2404)
02-16 02:04:57.047 E/AndroidRuntime(9380): 	at android.app.ActivityThread.access$800(ActivityThread.java:145)
02-16 02:04:57.047 E/AndroidRuntime(9380): 	at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1323)
02-16 02:04:57.047 E/AndroidRuntime(9380): 	at android.os.Handler.dispatchMessage(Handler.java:102)
02-16 02:04:57.047 E/AndroidRuntime(9380): 	at android.os.Looper.loop(Looper.java:135)
02-16 02:04:57.047 E/AndroidRuntime(9380): 	at android.app.ActivityThread.main(ActivityThread.java:5319)
02-16 02:04:57.047 E/AndroidRuntime(9380): 	at java.lang.reflect.Method.invoke(Native Method)
02-16 02:04:57.047 E/AndroidRuntime(9380): 	at java.lang.reflect.Method.invoke(Method.java:372)
02-16 02:04:57.047 E/AndroidRuntime(9380): 	at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1016)
02-16 02:04:57.047 E/AndroidRuntime(9380): 	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:811)
02-16 02:04:57.059 W/ActivityManager(889):   Force finishing activity de.vanitasvitae.enigmandroid/.MainActivity
02-16 02:04:57.089 D/ForegroundUtils(1740): Foreground changed, PID: 1808 UID: 10091 foreground: true
02-16 02:04:57.089 D/ForegroundUtils(1740): Foreground UID/PID combinations:
02-16 02:04:57.089 D/ForegroundUtils(1740): UID: 10091 PID: 1808
02-16 02:04:57.089 D/ForegroundUtils(1740): UID: 10310 PID: 9380
02-16 02:04:57.090 I/Process (9380): Sending signal. PID: 9380 SIG: 9

ArrayIndexOutOfBoundsException on Numerical Input as PlugBoard

EnigmAndroid crashes if the user inserts a number as "PlugBoard".
The StackTrace:

E/AndroidRuntime( 1930): FATAL EXCEPTION: main
E/AndroidRuntime( 1930): java.lang.IllegalStateException: Could not execute method of the activity
E/AndroidRuntime( 1930): at android.view.View$1.onClick(View.java:3591)
E/AndroidRuntime( 1930): at android.view.View.performClick(View.java:4084)
E/AndroidRuntime( 1930): at android.view.View$PerformClick.run(View.java:16966)
E/AndroidRuntime( 1930): at android.os.Handler.handleCallback(Handler.java:615)
E/AndroidRuntime( 1930): at android.os.Handler.dispatchMessage(Handler.java:92)
E/AndroidRuntime( 1930): at android.os.Looper.loop(Looper.java:137)
E/AndroidRuntime( 1930): at android.app.ActivityThread.main(ActivityThread.java:4745)
E/AndroidRuntime( 1930): at java.lang.reflect.Method.invokeNative(Native Method)
E/AndroidRuntime( 1930): at java.lang.reflect.Method.invoke(Method.java:511)
E/AndroidRuntime( 1930): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
E/AndroidRuntime( 1930): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
E/AndroidRuntime( 1930): at dalvik.system.NativeStart.main(Native Method)
E/AndroidRuntime( 1930): Caused by: java.lang.reflect.InvocationTargetException
E/AndroidRuntime( 1930): at java.lang.reflect.Method.invokeNative(Native Method)
E/AndroidRuntime( 1930): at java.lang.reflect.Method.invoke(Method.java:511)
E/AndroidRuntime( 1930): at android.view.View$1.onClick(View.java:3586)
E/AndroidRuntime( 1930): ... 11 more
E/AndroidRuntime( 1930): Caused by: java.lang.ArrayIndexOutOfBoundsException: length=26; index=-9
E/AndroidRuntime( 1930): at de.vanitasvitae.enigmandroid.Plugboard.setPlugPair(Plugboard.java:64)
E/AndroidRuntime( 1930): at de.vanitasvitae.enigmandroid.Enigma.setPlugboard(Enigma.java:203)
E/AndroidRuntime( 1930): at de.vanitasvitae.enigmandroid.MainActivity.updateEnigma(MainActivity.java:117)
E/AndroidRuntime( 1930): at de.vanitasvitae.enigmandroid.MainActivity.doCrypto(MainActivity.java:134)
E/AndroidRuntime( 1930): ... 14 more

Improve interface by displaying ringstellung numbers

In the same way that the rotor numbers (I-II-III etc.) are displayed, showing the ringstellung numbers would improve the interface. If this display seems too crowded, a toggle to display/hide them could be used.

Also white on black for the drop down ringstellung menus would make them easier to see.

Great piece of software, keep up the good work!

F-Droid Summary

F-Droid will update how we display summary text in our next app release. Summary text will now always be highlighted and prepended to the long app description.

Your long description text starts with the same text you've got in your summary. This will look redundant. I recommend to remove the summary text from your long description.

here are more infos/screenshots about this update: fdroidclient!855

API Compatibility Issues

Dear developers,

We have recently developed a state-of-the-art static analysis tool for uncovering API compatibility issues in Android apps. Applying this tool to open source apps on F-droid, we have exposed a few instances of compatibility issues and submitting them to development teams for a fix.

For your app, we have found that this project has accessed the following APIs which are available only on an API level higher than the declared minSdkVersion and which are accessed without proper protection. In other words, if those APIs get called at runtime, it will trigger a NoSuchMethodError and thus result in a crash of the running application.

<android.app.Fragment: void startActivityForResult(android.content.Intent,int)>:[11,25]
<android.app.Fragment: android.app.Activity getActivity()>:[11,25]
<android.app.Fragment: void startActivity(android.content.Intent)>:[11,25]

Note that, because of the nature of the static analysis, we cannot confirm whether the flagged APIs would actually be called at runtime (e.g., unreachable code). However, we still believe that those APIs, which may cause compatibility issues, should not be accessed or at least be accessed with proper protections.

In addition to the aforementioned APIs (i.e., backward-compatibility), which could cause app crashes if accessed, we have also identified that this project has also accessed some APIs that have been removed from the latest public SDK, making the app possibly suffer from forward-compatibility issues.

NONE

We would be very much appreciated if you can acknowledge to us that those reported APIs are indeed problematic for the project’s long-term stability. please let us know if you need any more information relating to this issue report.

A confusing widget on "EnigmAndroid" 's UI

Hello @vanitasvitae , I enjoy using this app, it is very useful for me! However, I found a misleading widget in this app. Maybe because I'm used to the "settings" button in other apps, I thought this widget would take me to a new page with various options. But I found a dialog popped up. I thought I had made some mistakes at first and it is confusing for me.
So, just as a personal suggestion, the "options" can be put on a new page so users will not be confused. To improve the user experience, could you try to redesign the widget? And thanks for your useful app!

Change license to GPLv3+

@afmachado since you contributed to the app by translating it to brazil, I'd like to ask, whether you would mind if I change the apps license from GPLv2-only to GPLv3+.

I think this would benefit the user, as well as developers since it would become easier to combine the software with other licenses such as Apache License v2 (see here).

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.