Find Jobs
Hire Freelancers

C# class based on System.Security.Cryptography.

$100-500 USD

Cancelado
Publicado hace más de 12 años

$100-500 USD

Pagado a la entrega
I would like a new C# class that relies on System.Security.Cryptography. The class will be used to generate public/private key pairs, generate random keys, generate digital signatures, calculate message digests, encrypt files, decrypt files, and create/extract envelopes containing encrypted files, random keys, message digests, and digital signatures. The code must work on files up to 30MB in size. There should be at least 13 methods in this class, as specified in the detailed requirements. ## Deliverables I would like a new C# class that relies on System.Security.Cryptography. All methods should return 1 on success and negative values on error. You need to tell me what all possible negative values are when you are done coding. The code must work on files up to 30MB in size. The 13 methods in this class are: // Constructor to do any required initialization, if any. int MySecurityClass(); // Destructor to do any required cleanup, if any. int ~MySecurityClass(); // Creates a public key pair, storing into publicKey and privateKey. int GeneratePublicPrivateKeyPair(var publicKey, var privateKey, int keyLength); // Creates a random key, using TimeTimeTimeTime as seed. int GenerateRandomKey(var randomKey, int keyLength); // Calculates a message digest for the file indicated by normalFileName. int GenerateMessageDigest(normalFileName, var messageDigest); int EncryptRandomKey(randomKey, var encryptedRandomKey, publicKey); int DecryptRandomKey(var randomKey, encryptedRandomKey, privateKey); // Reads contents of file specified by normalFileName, encrypts file using randomKey, // storing results into the file specified by encryptedFileName, int EncryptFile(normalFileName, encryptedFileName, randomKey); // Reads contents of file specified by encryptedFileName, decrypts // using randomKey, storing results into the file specified by normalFileName. int DecryptFile(normalFileName, encryptedFileName, randomKey); // generates a digital signature based on private key, stuffs generated // signature into var digitalSignature int GenerateDigitalSignature(privateKey, var digitalSignature); // validates a digital signature based on public key // returns 1 if the signature matches. negative value on mismatch/errors. int ValidateDigitalSignature(publicKey, digitalSignature); // Packages myID, the encryptedFileName, the encrypted randomKey, // the messageDigest, and the encryptedFile itself into the file // specified by envelopeFileName. int CreateEnvelope(envelopeFileName, myID, encryptedFileName, encryptedRandomKey, messageDigest, digitalSignature); // Opposite of CreateEnvelope; Extracts contents of the envelopeFile. // Extracts myID into var myID. // Extracts encrypted file name into var encryptedFileName. // Extracts random key into var randomKey. // Extracts message digest, populating var messageDigest. // Extracts the encryptedFile itself into file specified by encryptedFileName. int ProcessEnvelope(envelopeFileName, var myID, var encryptedFileName, var encryptedRandomKey, var messageDigest, var digitalSignature); Example usage of this class: { String randomKey; String publicKeyONE; String privateKeyONE; String publicKeyTWO; String privateKeyTWO; String messageDigest; String secondMessageDigest; String normalFileName; String encryptedFileName; String myID; int returnValue = 0; MySecurityClass msc = new MySecurityClass(); returnValue = [login to view URL](var publicKeyONE, var privateKeyONE); if(returnValue != 1) error processing returnValue = [login to view URL](var publicKeyTWO, var privateKeyTWO); if(returnValue != 1) error processing returnValue = [login to view URL](var randomKey); if(returnValue != 1) error processing returnValue = [login to view URL](normalFileName, var messageDigest); if(returnValue != 1) error processing returnValue = [login to view URL](normalFileName, encryptedFileName, randomKey); if(returnValue != 1) error processing returnValue = [login to view URL](randomKey, var encryptedRandomKey, publicKeyTWO); if(returnValue != 1) error processing returnValue = [login to view URL](privateKeyONE, var digitalSignature); if(returnValue != 1) error processing returnValue = [login to view URL](envelopeFileName, myID, encryptedFileName, encryptedRandomKey, messageDigest, digitalSignature); if(returnValue != 1) error processing ... returnValue = [login to view URL](envelopeFileName, var myID, var encryptedFileName, var encryptedRandomKey, var messageDigest, var digitalSignature); if(returnValue != 1) error processing returnValue = [login to view URL](publicKeyONE, digitalSignature); if(returnValue != 1) error processing returnValue = [login to view URL](encryptedRandomKey, var randomKey, privateKeyTWO); if(returnValue != 1) error processing returnValue = [login to view URL](normalFileName, encryptedFileName, randomKey); if(returnValue != 1) error processing returnValue = [login to view URL](normalFileName, var secondMessageDigest); if(returnValue != 1) error processing if([login to view URL](secondMessageDigest)) == 0) [login to view URL]("Error encountered. Message Digests do not match!!!"); IF WE GET TO HERE, ALL IS WELL. } // if my logic is wrong please feel free to correct me. // I am writing this from memory from a project I worked on in 1990. // If you cannot follow what I am doing in the example usage, you probably shouldn't bid on this project. // The fully functional working program should include the example usage as the "main" of the program. // You do not need to provide any sort of installation program. All I really need is the contents of the Visual Studio workspace and/or project so I can edit/compile/run the project in Visual Studio. I use Visual Studio 2010.
ID del proyecto: 2695449

Información sobre el proyecto

7 propuestas
Proyecto remoto
Activo hace 12 años

¿Buscas ganar dinero?

Beneficios de presentar ofertas en Freelancer

Fija tu plazo y presupuesto
Cobra por tu trabajo
Describe tu propuesta
Es gratis registrarse y presentar ofertas en los trabajos
7 freelancers están ofertando un promedio de $259 USD por este trabajo
Avatar del usuario
See private message.
$120,70 USD en 14 días
4,9 (16 comentarios)
4,6
4,6
Avatar del usuario
See private message.
$350,20 USD en 14 días
5,0 (9 comentarios)
4,5
4,5
Avatar del usuario
See private message.
$225,25 USD en 14 días
4,9 (20 comentarios)
4,5
4,5
Avatar del usuario
See private message.
$225 USD en 14 días
4,9 (6 comentarios)
3,6
3,6
Avatar del usuario
See private message.
$350,20 USD en 14 días
5,0 (8 comentarios)
3,3
3,3
Avatar del usuario
See private message.
$140,25 USD en 14 días
5,0 (2 comentarios)
2,4
2,4
Avatar del usuario
See private message.
$400,35 USD en 14 días
0,0 (0 comentarios)
0,0
0,0

Sobre este cliente

Bandera de UNITED STATES
United States
5,0
6
Miembro desde nov 26, 2003

Verificación del cliente

Otros trabajos de este cliente

Various MFC / C++ Tasks
$100-300 USD
¡Gracias! Te hemos enviado un enlace para reclamar tu crédito gratuito.
Algo salió mal al enviar tu correo electrónico. Por favor, intenta de nuevo.
Usuarios registrados Total de empleos publicados
Freelancer ® is a registered Trademark of Freelancer Technology Pty Limited (ACN 142 189 759)
Copyright © 2024 Freelancer Technology Pty Limited (ACN 142 189 759)
Cargando visualización previa
Permiso concedido para Geolocalización.
Tu sesión de acceso ha expirado y has sido desconectado. Por favor, inica sesión nuevamente.