Skip to content
Dominik Schadow edited this page Nov 16, 2014 · 51 revisions

JCrypTool (JCT) is the most wide-spread platform independent e-learning program for cryptography and cryptanalysis. It runs under Windows, Mac OS X and Linux. It is supported and used by universities all over the world.

The following two lists contain smaller and larger projects for the JCrypTool platform. The first list contains crypto related project ideas, the second list non-crypto related project ideas. Each project is either in status idea, active or finished.

In case you are interested in an active project, do not hesitate to contact us; it might be possible to complete this project together with another team member. Projects with status idea are waiting for any interested developer or developers. Please contact us right away.

Finished projects are moved to our project archive page. But even a finished project may be extended with new features in a new project. Simply contact us.

Nothing of interest available for you but you do like the JCrypTool project and you want to be a part of it? Feel free to contact us: We might have some more ideas at an early stage that are not quite ready for our lists here; and of course we are open to any further ideas you might have!

If you have questions or need more information on a possible development task, don't hesitate to post a question in our developers group.

##Proceeding Please contact Dominik Schadow or Bernhard Esslinger in case you want to work on a project listed on this page. We will update its status and add your name to the selected task. At the same time, we will create a new entry in one of our issue trackers (core, crypto or incubator), in which you track your progress.

##Specifications The specifications given for each task are generally not very strict and not very extensive. This is on purpose. The main intention of these lists is to give you some project ideas. You can be creative and develop a solution with fancy cryptographic animations, easy to use wizards and lots of support for the user. Everything is up to you. The only important thing we strongly ask for is full Eclipse 4.x compatibility, which means the usage of Eclipse functionality like SWT and JFace and no deprecated methods.

##Knowledge Prerequisite Most projects listed below require at least some Eclipse plug-in and RCP development knowledge as well as cryptographic knowledge. This knowledge is of course not required from the beginning, you can learn this while developing your project! What is required from the beginning is Java knowledge and some practical experience developing in this language. What we expect is curiosity and a lot of interest in learning and experimenting with new technologies.

Normally, all JCrypTool plug-ins are available in English and German. In case you don't speak any German we will find somebody else to translate your plug-in. This is why German is an optional requirement most of the time in the following lists.

##Contact Options More information is available from the JCrypTool community which you may contact in the JCrypTool Developers Group or in our IRC channel #jcryptool on freenode.

##Crypto Related Projects

###[001] XML Security (active) Integrate the complete XML Security Tools plug-ins into JCrypTool to enable users to sign/verify/encrypt/decrypt XML documents in JCrypTool. The plug-in is already partially integrated in JCrypTool. Sources are included in our crypto repository, containing org.jcryptool.crypto.xml in the project name.

####Required Features

  • Plug-in for the Algorithm category
  • Integration of all XML Security wizards into the JCrypTool cryptographic extension points
  • Usage of the JCrypTool keystore, replace all proprietary keystore functionality in the XML Security Tools
  • Help update to match the new GUI/ functionality
  • Context help update to match the new GUI/ functionality

####Optional Features

  • German translation of GUI and help files
  • Cheat Sheet updates

####Knowledge Prerequisite

  • Basic cryptographic knowledge
  • Good Java and Eclipse developer plug-in knowledge
  • English

####Project Data

  • Mentor: Dominik Schadow
  • Developers: Dominik Schadow
  • Start: 05/2011
  • End:
<tr>
	<td>012</td>
	<td><strong>[[Entropy|Project - Entropy]]</strong><br>
	Comprehensive entropy plug-in for entropy education and entropy application in cryptanalysis (for texts from different languages). Pre-work for this project is available.<br>
	<strong>Knowledge prerequisite:</strong> good cryptographic knowledge,
		good Java and Eclipse plug-in developer skills, English</td>
	<td>Bernhard Esslinger</td>
	<td></td>
	<td></td>
	<td></td>
	<td>idea</td>
</tr>

<tr>
	<td>016</td>
	<td><strong>[[Stream Cipher|Project - Stream Cipher]]</strong><br>
	Stream cipher visualization for education.<br>
	<strong>Knowledge prerequisite:</strong> good cryptographic knowledge,
		good Java and Eclipse plug-in developer skills, English</td>
	<td>Bernhard Esslinger</td>
	<td></td>
	<td></td>
	<td></td>
	<td>idea</td>
</tr>
<tr>
	<td>017</td>
	<td><strong>[[Side-Channel Attacks|Project - Side-Channel Attacks]]</strong><br>
	Design and prevention of side-channel attacks.<br>
	<strong>Knowledge prerequisite:</strong> good cryptographic knowledge,
		good Java and Eclipse plug-in developer skills, English</td>
	<td>Bernhard Esslinger</td>
	<td></td>
	<td></td>
	<td></td>
	<td>idea</td>
</tr>

<tr>
	<td>019</td>
	<td><strong>[[Cube Attack|Project - Cube Attack]]</strong><br>
	New attack idea against symmetric ciphers. Pre-work for this project is available.<br>
	<strong>Knowledge prerequisite:</strong> good cryptographic knowledge,
		good Java and Eclipse plug-in developer skills, English</td>
	<td>Bernhard Esslinger</td>
	<td></td>
	<td></td>
	<td></td>
	<td>idea</td>
</tr>
<tr>
	<td>020</td>
	<td><strong>[[Steganography|Project - Steganography]]</strong><br>
	Visualization of different methods of steganography.<br>
	<strong>Knowledge prerequisite:</strong> good cryptographic knowledge,
		good Java and Eclipse plug-in developer skills, English</td>
	<td>Bernhard Esslinger</td>
	<td></td>
	<td></td>
	<td></td>
	<td>idea</td>
</tr>
<tr>
	<td>021</td>
	<td><strong>Admin tool for an automatic metadata update of the integrated Bouncy Castle API</strong><br>

Currently the crypto service providers FlexiProvider (FP) and Bouncy Castle (BC) are used in JCT. Only for FP versions JCT has the feature to automatically adopt its offered functions when updating the shipped FlexiProvider plug-in. The reason is, that only FP describes its functions in special metadata which is extracted into an XML file which is used at runtime by JCT. This keeps the JCrypTool program up-to-date dynamically when a new FP library is released and the corresponding JCrypTool updated with it (this means that JCT will adapt its menus and the dynamic wizards in the function-centric view to always match a new FP version).

An important task for JCT and for BC will be to maintain such metadata in BC and implement an admin tool for BC, as BC will be the default crypto provider for JCT in the future. The admin tool may be an Eclipse IDE plug-in or a command line tool which is not intended to be shipped to the end-user, it is an internal tool for the JCT developers.
Knowledge prerequisite: good cryptographic knowledge, good Java (and Eclipse plug-in) developer skills, English

<tr>
	<td>031</td>
	<td><strong>[[Screencast English|Project - Screencast English]]</strong><br>
	Create English screencasts or videos for certain cryptographic operations (should be identical with #032). Select one plug-in in each crypto category (algorithms, analysis, games, visuals) and show its possibilities in a screencast or a short video. Output will be integrated in our portal.<br>
	<strong>Knowledge prerequisite:</strong> Basic cryptographic knowledge, English</td>
	<td>Bernhard Esslinger</td>
	<td></td>
	<td></td>
	<td></td>
	<td>idea</td>
</tr>
<tr>
	<td>032</td>
	<td><strong>[[Screencast German|Project - Screencast German]]</strong><br>
	Create German screencasts or videos for certain cryptographic operations (should be identical with #031). Select one plug-in in each crypto category (algorithms, analysis, games, visuals) and show its possibilities in a screencast or a short video. Output will be integrated in our portal.<br>
	<strong>Knowledge prerequisite:</strong> Basic cryptographic knowledge, German</td>
	<td>Bernhard Esslinger</td>
	<td></td>
	<td></td>
	<td></td>
	<td>idea</td>
</tr>
<tr>
	<td>033</td>
	<td><strong>[[Crypto Cheat Sheets English|Project - Crypto Cheat Sheets English]]</strong><br>
	Develop English cheat sheets for certain cryptographic operations (must be identical with #034). Create interactive cheat sheets for one plug-in in each crypto category (algorithms, analysis, games, visuals) and describe the usage of the plug-in.<br>
	<strong>Knowledge prerequisite:</strong> basic cryptographic knowledge,
		basic Eclipse plug-in developer knowledge, English</td>
	<td>Dominik Schadow</td>
	<td></td>
	<td></td>
	<td></td>
	<td>idea</td>
</tr>
<tr>
	<td>034</td>
	<td><strong>[[Crypto Cheat Sheets German|Project - Crypto Cheat Sheets German]]</strong><br>
	Develop German cheat sheets for certain cryptographic operations (must be identical with #033). Create interactive cheat sheets for one plug-in in each crypto category (algorithms, analysis, games, visuals) and describe the usage of the plug-in.<br>
	<strong>Knowledge prerequisite:</strong> basic cryptographic knowledge,
		basic Eclipse plug-in developer knowledge, German</td>
	<td>Dominik Schadow</td>
	<td></td>
	<td></td>
	<td></td>
	<td>idea</td>
</tr>

<tr>
	<td>037</td>
	<td><strong>[[SHA3 Candidates|Project - SHA3 Candidates]]</strong><br>
	Implement and visualize all SHA3 candidates. #018 already implemented three of them; this task 	should extend the created plug-in and provide implementations for the other SHA3 candidates.<br>
	<strong>Knowledge prerequisite:</strong> good cryptographic knowledge,
		good Java and Eclipse plug-in developer skills, English</td>
	<td>Bernhard Esslinger</td>
	<td></td>
	<td></td>
	<td></td>
	<td>idea</td>
</tr>
<tr>
	<td>038</td>
	<td><strong>[[Steganalysis|Project - Steganalysis]]</strong><br>
	Implement and visualize classic and modern methods of steganalysis.<br>
	<strong>Knowledge prerequisite:</strong> strong
		statistical/cryptographic knowledge, good Java and Eclipse plug-in developer skills, English</td>
	<td>Bernhard Esslinger</td>
	<td></td>
	<td></td>
	<td></td>
	<td>idea</td>
</tr>
<tr>
	<td>039</td>
	<td><strong>[[Homomorphic Signatures for Digital Photographs|Project - Homomorphic Signatures for Digital Photographs]]</strong><br>
	Homomorphic signatures for digital photographs.<br>
	<strong>Knowledge prerequisite:</strong> good cryptographic knowledge,
		good Java and Eclipse plug-in developer skills, English</td>
	<td>Bernhard Esslinger</td>
	<td></td>
	<td></td>
	<td></td>
	<td>idea</td>
</tr>
<tr>
	<td>040</td>
	<td><strong>[[Comprehensive LFSR Builder|Project - Comprehensive LFSR Builder]]</strong><br>
	Implement and visualize the analysis of LFSR algorithms.<br>
	<strong>Knowledge prerequisite:</strong> strong knowledge of modern
		symmetric cryptography, good Java and Eclipse plug-in
		developer skills, English</td>
	<td>Bernhard Esslinger</td>
	<td></td>
	<td></td>
	<td></td>
	<td>idea</td>
</tr>
<tr>
	<td>041</td>
	<td><strong>[[User Help English|Project - User Help English]]</strong><br>
	Extend the English online help in a consistent manner for all build-in functionality. Always describe the theory behind a cryptographic operation, and the way, the user can use the dialogs and its options. Must be identical with #042.<br>
	<strong>Knowledge prerequisite:</strong> broad cryptographic knowledge,
		basic Eclipse plug-in developer skills, English</td>
	<td>Bernhard Esslinger</td>
	<td></td>
	<td></td>
	<td></td>
	<td>idea</td>
</tr>
<tr>
	<td>042</td>
	<td><strong>[[User Help German|Project - User Help German]]</strong><br>
	Extend the German online help in a consistent manner for all build-in functionality. Always describe the theory behind a cryptographic operation, and the way, the user can use the dialogs and its options. Must be
		identical with #041.<br>
	<strong>Knowledge prerequisite:</strong> broad cryptographic knowledge,
		basic Eclipse plug-in developer skills, German</td>
	<td>Bernhard Esslinger</td>
	<td></td>
	<td></td>
	<td></td>
	<td>idea</td>
</tr>
<tr>
	<td>043</td>
	<td><strong>Jefferson Wheel</strong><br>
	</td>
	<td>Bernhard Esslinger</td>
	<td></td>
	<td></td>
	<td></td>
	<td>idea</td>
</tr>

<tr>
	<td>045</td>
	<td><strong>Prime number functionality</strong><br>
	Implement the typical functions around primes and for supporting the RSA method, like a prime number test, the generation of primes, the factorization of compound numbers, ...<br>
	<strong>Knowledge prerequisite:</strong> broad cryptographic knowledge,
		basic Eclipse plug-in developer skills, English/ German</td>
	<td>Bernhard Esslinger</td>
	<td></td>
	<td></td>
	<td></td>
	<td>idea</td>
</tr>
<tr>
	<td>048</td>
	<td><strong>Divider Game</strong><br>
	Implementation of the divider game.<br>
	<strong>Knowledge prerequisite:</strong> good cryptographic knowledge,
		good Java and Eclipse plug-in developer skills, English/ German</td>
	<td>Bernhard Esslinger</td>
	<td>Sebastian Roland</td>
	<td>10/2013</td>
	<td></td>
	<td>active</td>
</tr>
<tr>
	<td>049</td>
	<td><strong>Brute-Force Attack on Modern Symmetric Ciphers</strong><br>
	Brute-Force Attack on Modern Symmetric Ciphers.<br>
	<strong>Knowledge prerequisite:</strong> good cryptographic knowledge,
		good Java and Eclipse plug-in developer skills, English/ German</td>
	<td>Bernhard Esslinger</td>
	<td>Matthias Walthart</td>
	<td>10/2013</td>
	<td></td>
	<td>active</td>
</tr>
<tr>
	<td>050</td>
	<td><strong>N-Gram Analysis</strong><br>
	N-Gram Analysis to Determine the Origin of a Text.<br>
	<strong>Knowledge prerequisite:</strong> good cryptographic knowledge,
		good Java and Eclipse plug-in developer skills, English/ German</td>
	<td>Bernhard Esslinger</td>
	<td>Dmitrijs Abalenkovs</td>
	<td>10/2013</td>
	<td></td>
	<td>active</td>
</tr>
<tr>
	<td>051</td>
	<td><strong>Framework for analyzing modern symmetric ciphers</strong><br>
	The European ECRYPT program has done research on crypto algorithms. A broad collection of tools related to cryptanalysis was [[published|http://www.ecrypt.eu.org/tools]]. The aim is to bundle these and update them within JCT.<br>
	<strong>Knowledge prerequisite:</strong> good cryptographic knowledge,
		good Java and Eclipse plug-in developer skills, English/ German</td>
	<td>Bernhard Esslinger</td>
	<td></td>
	<td></td>
	<td></td>
	<td>idea</td>
</tr>
<tr>
	<td>052</td>
	<td><strong>Improve classroom fitness</strong><br>
	In the article "The Design and Use of Interactive Visualization Applets for Teaching Ciphers" by Dino Schweitzer and Leemon Baird, presented at the 7th IEEE Workshop on Information Assurance, 2006 the authors evaluate several crypto tools. Despite the relative leading position of CrypTool ("Of the cryptography tools reviewed, perhaps the most comprehensive interactive one is the freeware program CrypTool.") there are several requirements they suggest to make this tool fitting better for teachers and lecturers. The aim is that the visualizations had to be quickly understood in a classroom setting.<br>
	<strong>Knowledge prerequisite:</strong> good cryptographic knowledge,
		good Java and Eclipse plug-in developer skills, English/ German</td>
	<td>Bernhard Esslinger</td>
	<td></td>
	<td></td>
	<td></td>
	<td>idea</td>
</tr>
<tr>
	<td>053</td>
	<td><strong>Enlarge the spectrum of algorithms offered</strong><br>
	JCrypTool already contains most or all of the state-of-the-art crypto algorithms. In the area of historical ciphers many are missing. A head start to change this could be incorporating existing Java libraries (like [[http://awr.free.fr|http://awr.free.fr]] or [[http://members.aon.at/cipherclerk|http://members.aon.at/cipherclerk]]).<br>
	<strong>Knowledge prerequisite:</strong> good cryptographic knowledge,
		good Java and Eclipse plug-in developer skills, English/ German</td>
	<td>Bernhard Esslinger</td>
	<td></td>
	<td></td>
	<td></td>
	<td>idea</td>
</tr>
<tr>
	<td>054</td>
	<td><strong>Factorization framework</strong><br>
	There is a broad set of algorithms to factorize numbers into their primes. These tools like brute-force, Pollard, Lenstra, Quadratic Sieve, General Number Field Sieve are appropriate for different numbers and given ressources. The aim is to bring them together and reuse the best tools there (like msieve), however in addition improve the decesion which algorithm to choose, avoid wrong results by currently used script.<br>
	<strong>Knowledge prerequisite:</strong> good cryptographic knowledge,
		good Java and Eclipse plug-in developer skills, English/ German</td>
	<td>Bernhard Esslinger</td>
	<td></td>
	<td></td>
	<td></td>
	<td>idea</td>
</tr>
# Project Mentor Developed By Start End Status
006 S/MIME & PGP
A demonstration of the interchangeability of PGP and S/MIME formats. Pre-work for this project is available.
Knowledge prerequisite: good cryptographic knowledge, good Java and Eclipse plug-in developer skills, English
Bernhard Esslinger idea
007 S/MIME
A demonstration of the S/MIME standard for secure e-mail. Pre-work for this project is available.
Knowledge prerequisite: good cryptographic knowledge, basic Java and Eclipse plug-in developer skills, English
Bernhard Esslinger idea
Dominik Schadow TU Darmstadt idea
022 Key Storage
Alternate password storage for non-FlexiProvider algorithms.
Knowledge prerequisite: basic cryptographic knowledge, good Java and Eclipse plug-in developer skills, English
Dominik Schadow idea
023 Cryptanalysis
Various tools for analysis of already implemented ciphers/protocols/formats.
Knowledge prerequisite: good cryptographic knowledge, good Java and Eclipse plug-in developer skills, English
Bernhard Esslinger idea
025 Hashes Visualization
Visualize hash sensitivity (analogue to CrypTool 1).
Knowledge prerequisite: good cryptographic knowledge, good Java and Eclipse plug-in developer skills, English
Bernhard Esslinger idea
026 Certificate Validity
Visualize the certificate validity models (shell and chain). Pre-work for this project is available.
Knowledge prerequisite: good cryptographic knowledge, good Java and Eclipse plug-in developer skills, English
Bernhard Esslinger idea
027 Knapsack Cipher
Implement and visualize the knapsack problem (Merkle-Hellman knapsack cipher and the according attacks).
Knowledge prerequisite: good cryptographic knowledge, good Java and Eclipse plug-in developer skills, English
Bernhard Esslinger idea
028 Rabin Cipher
Implement and visualize the Rabin public key cipher (1979).
Knowledge prerequisite: good cryptographic knowledge, good Java and Eclipse plug-in developer skills, English
Bernhard Esslinger idea

##Non-Crypto Related Projects

# Project Mentor Developed By Start End Status
002 Basic Screencast English
Create an English screencast or video demonstrating the general functionality/ usage of JCrypTool (should be identical with #003). Output will be integrated in our portal.
Knowledge prerequisite: Basic Eclipse knowledge, English
Dominik Schadow idea
003 Basic Screencast German
Create a German screencast or video demonstrating the general functionality/ usage of JCrypTool (should be identical with #002). Output will be integrated in our portal.
Knowledge prerequisite: Basic Eclipse knowledge, German
Dominik Schadow idea
005 XML Editor
Develop a basic XML editor as Eclipse plug-in working in a RCP.
Knowledge prerequisite: strong Java and Eclipse plug-in developer skills, English
Dominik Schadow idea
006 User Feedback
Develop a plug-in which enables users to send feedback for JCrypTool from inside the RCP. Users should enter a comment and can select a mark for JCrypTool. Besides that it should be possible to submit a bug report (including a stack trace) with the same functionality.
Knowledge prerequisite: good Java and Eclipse plug-in developer skills, English
Dominik Schadow idea
008 Hudson Build Process
Set up and document the complete JCrypTool build process on Hudson using the existing Maven/ Tycho configuration.
Knowledge prerequisite: good Java and Eclipse plug-in developer skills, good Hudson knowledge, good Maven/ Tycho knowledge, English
Dominik Schadow idea
009 Automatic Update Check
Configure the JCrypTool update manager to check for updates once a month.
Knowledge prerequisite: good Java and Eclipse plug-in developer skills, English
Dominik Schadow idea
010 Automatic Tests
Explore Eclipse Jubula and provide sample tests to test JCrypTool. These tests should be integrated in the not yet complete Hudson build process.
Knowledge prerequisite: Good Java and Eclipse plug-in developer skills, English
Dominik Schadow idea
Clone this wiki locally