public static string Decrypt(string CipherText, string mod, string exp) { var Modulus = HelperFunctions.FromHexToByte(mod); var Exponent = HelperFunctions.FromHexToByte(exp); var CipherTextBytes = Convert.FromBase64String(CipherText); var modulus = new BigInteger(1, Modulus); var exponent = new BigInteger(1, Exponent); var Parameters = new RsaKeyParameters(true, modulus, exponent); var RSAengine = new RsaEngine(); RSAengine.Init(false, Parameters); var blockSize = RSAengine.GetInputBlockSize(); var output = new List <byte>(); for (var chunkPosition = 0; chunkPosition < CipherTextBytes.Length; chunkPosition += blockSize) { var chunkSize = Math.Min(blockSize, CipherTextBytes.Length - chunkPosition * blockSize); output.AddRange(RSAengine.ProcessBlock(CipherTextBytes, chunkPosition, chunkSize)); } var output2 = output.ToArray(); var PlainText = Encoding.ASCII.GetString(output2); return(PlainText); }
public static void CheckDigitalSignature_FromString(string text, string signatureFile, string RSApublicKeyFile, TextBox outputTextBox, HashingMode mode) { var signature = FileManager.Read_Signature(signatureFile); var publicKey = FileManager.Read_RSAKey(RSApublicKeyFile); var signatureBytes = HelperFunctions.FromHexToByte(signature); var decoded = RSA.Decrypt(Convert.ToBase64String(signatureBytes), publicKey.Modulus, publicKey.Exponent); var hash = SHA.Hash(text, mode); outputTextBox.Text = hash == decoded ? "Potpis je valjan!" : "Potpis nije valjan!"; }
public static void OpenDigitalEnvelope(string envelopeFile, string RSAprivateKey, string outputFile, EncryptionMode mode, SymetricAlgorithm algorithm) { var envelope = FileManager.Read_Envelope(envelopeFile); var privateKey = FileManager.Read_RSAKey(RSAprivateKey); var keyCipher = Convert.ToBase64String(HelperFunctions.FromHexToByte(envelope.Key)); var key = RSA.Decrypt(keyCipher, privateKey.Modulus, privateKey.Exponent); var input = Convert.FromBase64String(envelope.Data); var keyBytes = HelperFunctions.FromHexToByte(key); var vector = FileManager.ReadFile_IVector("IVector.txt"); var data = algorithm == SymetricAlgorithm.THREE_DES ? THREE_DES.Decrypt(input, keyBytes, mode) : AES.Decrypt(input, keyBytes, vector, mode); var envelopeText = Encoding.ASCII.GetString(data); FileManager.Write(envelopeText, outputFile); }
public static byte[] ReadFile_IVector(string file) { var vectorFile = new StreamReader(Program.Direktorij + file); string currentLine; var vector = ""; while (vectorFile.ReadLine() != "Initialization vector:") { } while ((currentLine = vectorFile.ReadLine()) != "---END OS2 CRYPTO DATA---" && currentLine != "") { vector += currentLine?.Substring(4); } var vectorBytes = HelperFunctions.FromHexToByte(vector); return(vectorBytes); }