/// <param name="console"></param> public static void testMillerRabin(CryptobyConsole console) { Scanner scanner = new Scanner(java.lang.System.@in); // Initial Variables int rounds; string percent; BigInteger number; do { // Input Number for Primenumber Testing System.Console.Out.WriteLine("Set Primenumber to Test."); System.Console.Out.Write("Please enter a positive number: "); while (!scanner.hasNextBigInteger()) { System.Console.Out.Write("That's not a number! Enter a positive number: "); scanner.next(); } number = scanner.nextBigInteger(); } while (number.compareTo(BigInteger.ONE) < 0); do { // Set the rounds of the Miller Rabin Test System.Console.Out.WriteLine("Set rounds parameter between 1 and 15."); System.Console.Out.Write("Please enter the number of rounds: "); while (!scanner.hasNextInt()) { System.Console.Out.Write("That's not a number! Enter a valid number: "); scanner.next(); } rounds = scanner.nextInt(); } while (rounds < 1 || rounds > 15); // Initial Miller Rabin Object console.getCore().getClient().setPrimTestArt("MillerRabin"); console.getCore().getClient().setPrimetestrounds(rounds); console.getCore().initPrimeTest(); // Get Result of Test if (console.getCore().getPrimetest().isPrime(number)) { percent = console.getCore().getPrimetest().getProbability().ToString(); System.Console.Out.WriteLine("\nResult: Number is probably a Primenumber, probability: " + percent + "%"); } else { System.Console.Out.WriteLine("\nResult: Number is NOT a Primenumber"); } // Back to Menu Choose PrimeTest System.Console.Out.WriteLine("\nGo back to Primetest Menu: Press Enter"); CryptobyHelper.pressEnter(); console.menuPrimeTest(); }
/// <param name="console"></param> public static void genRSAKeysFile(CryptobyConsole console) { Scanner scanner = new Scanner(java.lang.System.@in); string privateKeyPath; string publicKeyPath; // Initial Variables int keySize; int choice; string publicKey; string privateKey; // Set Default Key Size keySize = 1024; do { Console.Out.WriteLine("\n"); Console.Out.WriteLine("Choose Key in Bit"); Console.Out.WriteLine("-------------------------\n"); Console.Out.WriteLine("1 - 1024"); Console.Out.WriteLine("2 - 2048"); Console.Out.WriteLine("3 - 4096"); Console.Out.WriteLine("4 - Back"); Console.Out.Write("Enter Number: "); while (!scanner.hasNextInt()) { Console.Out.WriteLine("That's not a number! Enter 1,2,3 or 4:"); scanner.next(); } choice = scanner.nextInt(); } while (choice < 1 || choice > 4); switch (choice) { case 1: { keySize = 1024; break; } case 2: { keySize = 2048; break; } case 3: { keySize = 4096; break; } case 4: { console.menuGenKey(); break; } default: { console.menuGenKey(); break; } } // Input Path for saving Private Key Console.Out.WriteLine("Enter Path to saving Private Key (Type '" + quit + "' to Escape):"); scanner.useDelimiter("\n"); if (scanner.hasNext(quit)) { RsaUI.rsaCrypterFile(console); } privateKeyPath = scanner.next(); // Input Path for saving Public Key Console.Out.WriteLine("Enter Path to saving Public Key (Type '" + quit + "' to Escape):" ); scanner.useDelimiter("\n"); publicKeyPath = scanner.next(); // Initial Key Generator console.getCore().getClient().setKeyAsymArt("RSA"); console.getCore().initAsymKey(); // Generate Keys console.getCore().getKeyGenAsym().initGenerator(keySize); publicKey = console.getCore().getKeyGenAsym().getPublicKey(); privateKey = console.getCore().getKeyGenAsym().getPrivateKey(); //Put private Key to File try { CryptobyFileManager.putKeyToFile(privateKeyPath, privateKey); } catch (System.IO.IOException) { CryptobyHelper.printIOExp(); console.menuGenKey(); } Console.Out.WriteLine("\nPrivate Key File saved to this Path:"); Console.Out.WriteLine(privateKeyPath); //Put public Key to File try { CryptobyFileManager.putKeyToFile(publicKeyPath, publicKey); } catch (System.IO.IOException) { CryptobyHelper.printIOExp(); console.menuGenKey(); } Console.Out.WriteLine("\nPublic Key File saved to this Path:"); Console.Out.WriteLine(publicKeyPath); // Enter for Continues CryptobyHelper.pressEnter(); // Back to Menu Choose PrimeTest console.menuGenKey(); }
/// <param name="console"></param> public static void genRSAKeysText(CryptobyConsole console) { Scanner scanner = new Scanner(java.lang.System.@in); // Initial Variables int keySize; int choice; string publicKey; string privateKey; // Set Default Key Size keySize = 1024; do { Console.Out.WriteLine("\n"); Console.Out.WriteLine("Choose Key in Bit"); Console.Out.WriteLine("-------------------------\n"); Console.Out.WriteLine("1 - 1024"); Console.Out.WriteLine("2 - 2048"); Console.Out.WriteLine("3 - 4096"); Console.Out.WriteLine("4 - Back"); Console.Out.Write("Enter Number: "); while (!scanner.hasNextInt()) { Console.Out.WriteLine("That's not a number! Enter 1,2,3 or 4:"); scanner.next(); } choice = scanner.nextInt(); } while (choice < 1 || choice > 4); switch (choice) { case 1: { keySize = 1024; break; } case 2: { keySize = 2048; break; } case 3: { keySize = 4096; break; } case 4: { console.menuGenKey(); break; } default: { console.menuGenKey(); break; } } // Initial Key Generator console.getCore().getClient().setKeyAsymArt("RSA"); console.getCore().initAsymKey(); // Generate Keys console.getCore().getKeyGenAsym().initGenerator(keySize); publicKey = console.getCore().getKeyGenAsym().getPublicKey(); privateKey = console.getCore().getKeyGenAsym().getPrivateKey(); // Print Private Keys Console.Out.WriteLine(CryptobyHelper.printPrivateKeyBlock(privateKey)); // Print Public Keys Console.Out.WriteLine(CryptobyHelper.printPublicKeyBlock(publicKey)); // Enter for Continues CryptobyHelper.pressEnter(); // Back to Menu Choose PrimeTest console.menuGenKey(); }
/// <param name="console"></param> public static void genSHA3KeyFile(CryptobyConsole console) { Scanner scanner = new Scanner(java.lang.System.@in); string keyPath; // Initial Variables int keySize; int choice; string pwAns; string key; string password; // Set Default Key Size keySize = 256; do { Console.Out.WriteLine("\n"); Console.Out.WriteLine("Select Key Size in Bit"); Console.Out.WriteLine("----------------------\n"); Console.Out.WriteLine("1 - 224"); Console.Out.WriteLine("2 - 256"); Console.Out.WriteLine("3 - 384"); Console.Out.WriteLine("4 - 512"); Console.Out.WriteLine("5 - Back"); Console.Out.Write("Enter Number: "); while (!scanner.hasNextInt()) { Console.Out.WriteLine("That's not a number! Enter 1,2,3,4 or 5:"); scanner.next(); } choice = scanner.nextInt(); } while (choice < 1 || choice > 5); switch (choice) { case 1: { keySize = 224; break; } case 2: { keySize = 256; break; } case 3: { keySize = 384; break; } case 4: { keySize = 512; break; } case 5: { console.menuGenKey(); break; } default: { console.menuGenKey(); break; } } do { // Input a Password or nothing, in the case it will be used a Secure Random number Console.Out.WriteLine("Do you want to use a password. If not, it will be used a SecureRandom password." ); Console.Out.WriteLine("Enter y or n: "); pwAns = scanner.next(); } while (!pwAns.Equals("y") && !pwAns.Equals("n")); if (pwAns.Equals("y")) { Console.Out.Write("Enter Password for the Key: "); password = scanner.next(); } else { password = string.Empty; } // Input Path for saving Private Key scanner = new Scanner(java.lang.System.@in); Console.Out.WriteLine("Enter Path to saving Private Key(Type '" + quit + "' to Escape):" ); scanner.useDelimiter("\n"); if (scanner.hasNext(quit)) { console.menuGenKey(); } keyPath = scanner.next(); // Initial Key Generator console.getCore().getClient().setKeySymArt("SHA3"); console.getCore().initSymKey(); // Get Result of Test if (password.Equals(string.Empty)) { key = console.getCore().getKeyGenSym().generateKey(keySize); } else { key = console.getCore().getKeyGenSym().generateKey(keySize, password); } // Save Key try { //Put private Key to File CryptobyFileManager.putKeyToFile(keyPath, key); } catch (System.IO.IOException) { CryptobyHelper.printIOExp(); console.menuGenKey(); } Console.Out.WriteLine("\nAES Key File saved to this Path:"); Console.Out.WriteLine(keyPath); // Enter for Continues CryptobyHelper.pressEnter(); // Back to Menu Choose PrimeTest console.menuGenKey(); }
// Helper Functions private static byte[] scanKeyText(CryptobyConsole console) { scanner = new Scanner(java.lang.System.@in); byte[] tempKey; do { Console.Out.WriteLine("\nAllowed Key Sizes 128,192 and 256 Bit."); Console.Out.WriteLine("Enter the AES Key (Type '" + quit + "' to Escape):" ); if (scanner.hasNext(quit)) { aesCrypterText(console); } tempKey = Encoding.UTF8.GetBytes(scanner.next()); keySize = tempKey.Length * 4; } while (keySize != 128 && keySize != 192 && keySize != 256); return tempKey; }
private static byte[] scanKeyFile(CryptobyConsole console) { scanner = new Scanner(java.lang.System.@in); byte[] tempKey = null; do { Console.Out.WriteLine("\nAllowed Key Sizes 128,192 and 256 Bit."); Console.Out.WriteLine("Enter Path to Key File (Type '" + quit + "' to Escape):" ); if (scanner.hasNext(quit)) { aesCrypterFile(console); } keyPath = scanner.next(); try { tempKey = CryptobyFileManager.getKeyFromFile(keyPath); } catch (System.IO.IOException) { CryptobyHelper.printIOExp(); aesCrypterFile(console); } catch (FormatException) { Console.Out.WriteLine("Key File format is not correct!"); aesCrypterFile(console); } keySize = tempKey.Length * 4; } while (keySize != 128 && keySize != 192 && keySize != 256); return tempKey; }
private static int choiceText() { scanner = new Scanner(java.lang.System.@in); int choice; do { Console.Out.WriteLine("1 - Encryption"); Console.Out.WriteLine("2 - Decryption"); Console.Out.WriteLine("3 - Back"); Console.Out.Write("Enter Number: "); while (!scanner.hasNextInt()) { Console.Out.Write("That's not a number! Enter 1,2 or 3: "); scanner.next(); } choice = scanner.nextInt(); } while (choice < 1 || choice > 3); return choice; }
private static void aesEncrypterText(CryptobyConsole console) { scanner = new Scanner(java.lang.System.@in); scanner.useDelimiter("\n"); // Input your String Text to encrypt Console.Out.WriteLine("\nYour Text to encrypt (Type '" + quit + "' to Escape):" ); if (scanner.hasNext(quit)) { aesCrypterText(console); } plainByte = Encoding.UTF8.GetBytes(scanner.next()); // Input your Key for encryption key = scanKeyText(console); // Initial AES Crypt Object initAESKeyGen(console); // Encrypt the String Text with given Key Console.Out.WriteLine("\nEncrypting in progress..."); cryptByte = console.getCore().getCryptSym().encrypt(plainByte, key); // Convert byte Array into a Hexcode String charTextHex = CryptobyHelper.bytesToHexStringUpper(cryptByte).ToCharArray(); // Print encrypted Text in Hex Block form Console.Out.WriteLine("\nEncryption successfull..."); Console.Out.WriteLine(CryptobyHelper.printHexBlock("AES", keySize, charTextHex )); // Back to Text Crypter Menu Console.Out.WriteLine("\nGo back to AES Text Crypter Menu: Press Enter"); CryptobyHelper.pressEnter(); aesCrypterText(console); }
private static void aesEncrypterFile(CryptobyConsole console) { // Input Path to File for encryption scanner = new Scanner(java.lang.System.@in); Console.Out.WriteLine("Enter Path to File for encryption (Type '" + quit + "' to Escape):"); scanner.useDelimiter("\n"); if (scanner.hasNext(quit)) { aesCrypterFile(console); } plainFilePath = scanner.next(); // Get Bytes from PlainFile try { plainByte = CryptobyFileManager.getBytesFromFile(plainFilePath); } catch (System.IO.IOException) { CryptobyHelper.printIOExp(); aesCrypterFile(console); } // Input Path saving Path scanner = new Scanner(java.lang.System.@in); Console.Out.WriteLine("Enter Path to save encrypted File (Type '" + quit + "' to Escape):"); scanner.useDelimiter("\n"); if (scanner.hasNext(quit)) { aesCrypterFile(console); } cryptFilePath = scanner.next(); // Input Key File for encryption key = scanKeyFile(console); // Initial AES Crypt Object initAESKeyGen(console); // Encrypt the String Text with given Key Console.Out.WriteLine("\nEncrypting in progress..."); cryptByte = console.getCore().getCryptSym().encrypt(plainByte, key); Console.Out.WriteLine("\nEncryption successfull. Saving File now..."); //Put encrypted Bytes to File try { CryptobyFileManager.putBytesToFile(cryptFilePath, cryptByte); } catch (System.IO.IOException ex) { Logger.getLogger(typeof(RsaUI).FullName).log(Level.SEVERE, null, ex); } Console.Out.WriteLine("\nEncrypted File saved to this Path:"); Console.Out.WriteLine(cryptFilePath); // Reset Variables initAESKeyGen(console); cryptByte = null; plainByte = null; key = null; // Back to File Crypter Menu Console.Out.WriteLine("\nGo back to AES File Crypter Menu: Press Enter"); CryptobyHelper.pressEnter(); aesCrypterFile(console); }
private static void aesDecrypterText(CryptobyConsole console) { scanner = new Scanner(java.lang.System.@in); // Input encrypted Hex String Text to decrypt Console.Out.WriteLine("\nYour Text to decrypt (Type '" + quit + "' to Escape):" ); // Convert crypted HexString Block to one String try { string cryptText = string.Empty; while (!scanner.hasNext(CryptobyHelper.getEOBString())) { if (scanner.hasNext(quit)) { aesCrypterText(console); } cryptText = cryptText + scanner.next(); } cryptByte = CryptobyHelper.hexStringToBytes(cryptText); } catch (FormatException) { // Catch false format of Input Console.Out.WriteLine("\nNot allowed Crypted Text! Must be a Upper Hex String!" ); cryptByte = BigInteger.ZERO.toByteArray(); } // Input your Key for encryption key = scanKeyText(console); // Initial AES Crypt Object initAESKeyGen(console); // Decrypt the String Text with given Key Console.Out.WriteLine("\nDecrypting in progress..."); try { plainByte = console.getCore().getCryptSym().decrypt(cryptByte, key); } catch (Exception) { Console.Out.WriteLine("\nUnable to decrypt this String!!"); // Enter for Continues CryptobyHelper.pressEnter(); aesCrypterText(console); } // Print decrypted Text Console.Out.WriteLine("\nDecryption finished..."); Console.Out.WriteLine("\nAES-" + keySize + " decrypted Text:"); Console.Out.WriteLine(Encoding.UTF8.GetString(plainByte)); // Back to Text Crypter Menu Console.Out.WriteLine("\nGo back to AES Text Crypter Menu: Press Enter"); CryptobyHelper.pressEnter(); aesCrypterText(console); }
private static void aesDecrypterFile(CryptobyConsole console) { // Input Path to File for decryption scanner = new Scanner(java.lang.System.@in); Console.Out.WriteLine("Enter Path to decrypt a File (Type '" + quit + "' to Escape):" ); scanner.useDelimiter("\n"); if (scanner.hasNext(quit)) { aesCrypterFile(console); } cryptFilePath = scanner.next(); try { // Get Bytes from PlainFile cryptByte = CryptobyFileManager.getBytesFromFile(cryptFilePath); } catch (System.IO.IOException) { CryptobyHelper.printIOExp(); aesCrypterFile(console); } // Input Path saving Path scanner = new Scanner(java.lang.System.@in); Console.Out.WriteLine("Enter Path to save decrypted File (Type '" + quit + "' to Escape):"); scanner.useDelimiter("\n"); if (scanner.hasNext(quit)) { aesCrypterFile(console); } plainFilePath = scanner.next(); // Input your Key for encryption key = scanKeyFile(console); // Initial AES Crypt Object initAESKeyGen(console); // Decrypt the String Text with given Key Console.Out.WriteLine("\nDecrypting in progress..."); try { plainByte = console.getCore().getCryptSym().decrypt(cryptByte, key); } catch (Exception) { Console.Out.WriteLine("\nUnable to decrypt this String!!"); // Enter for Continues CryptobyHelper.pressEnter(); aesCrypterFile(console); } Console.Out.WriteLine("\nDecryption finished. Saving File now..."); try { //Put encrypted Bytes to File CryptobyFileManager.putBytesToFile(plainFilePath, plainByte); } catch (System.IO.IOException) { CryptobyHelper.printIOExp(); aesCrypterFile(console); } Console.Out.WriteLine("\nDecrypted File saved to this Path:"); Console.Out.WriteLine(plainFilePath); // Reset Variables initAESKeyGen(console); cryptByte = null; plainByte = null; key = null; // Back to File Crypter Menu Console.Out.WriteLine("\nGo back to AES File Crypter Menu: Press Enter"); CryptobyHelper.pressEnter(); aesCrypterFile(console); }