Search This Blog

Saturday, July 8, 2017

Inscription and description Password

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Security.Cryptography;
using System.Text;
using System.Threading.Tasks;
 
namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
 
            string strVal= Decrypt(@"fgfgfgfgm""Pas5pr@se""s@1tValue""MD5", 2,"@1B2c3D4e5F6g7H8", 256);
 
            Console.ReadLine();
 
        }
 
        static public string Decrypt(string cipherText,
                                       string passPhrase,
                                       string saltValue,
                                       string hashAlgorithm,
                                       int passwordIterations,
                                       string initVector,
                                       int keySize)
        {
 
            //' Convert strings defining encryption key characteristics into byte
            //' arrays. Let us assume that strings only contain ASCII codes.
            //' If strings include Unicode characters, use Unicode, UTF7, or UTF8
            //' encoding.
            byte[] initVectorBytes;
            initVectorBytes = Encoding.ASCII.GetBytes(initVector);
 
            byte[] saltValueBytes;
            saltValueBytes = Encoding.ASCII.GetBytes(saltValue);
 
            //' Convert our ciphertext into a byte array.
            byte[] cipherTextBytes;
            cipherTextBytes = Convert.FromBase64String(cipherText);
 
            //' First, we must create a password, from which the key will be
            //' derived. This password will be generated from the specified
            //' passphrase and salt value. The password will be created using
            //' the specified hash algorithm. Password creation can be done in
            //' several iterations.
            PasswordDeriveBytes password;
            password = new PasswordDeriveBytes(passPhrase,
                                               saltValueBytes,
                                               hashAlgorithm,
                                               passwordIterations);
 
            //' Use the password to generate pseudo-random bytes for the encryption
            //' key. Specify the size of the key in bytes (instead of bits).
            byte[] keyBytes;
            keyBytes = password.GetBytes(keySize / 8);
 
            //' Create uninitialized Rijndael encryption object.
            RijndaelManaged symmetricKey;
            symmetricKey = new RijndaelManaged();
 
            //' It is reasonable to set encryption mode to Cipher Block Chaining
            //' (CBC). Use default options for other symmetric key parameters.
            symmetricKey.Mode = CipherMode.CBC;
 
            //' Generate decryptor from the existing key bytes and initialization
            //' vector. Key size will be defined based on the number of the key
            //' bytes.
            ICryptoTransform decryptor;
            decryptor = symmetricKey.CreateDecryptor(keyBytes, initVectorBytes);
 
            //' Define memory stream which will be used to hold encrypted data.
            MemoryStream memoryStream;
            memoryStream = new MemoryStream(cipherTextBytes);
 
            //' Define memory stream which will be used to hold encrypted data.
            CryptoStream cryptoStream;
            cryptoStream = new CryptoStream(memoryStream,
                                            decryptor,
                                            CryptoStreamMode.Read);
 
            //' Since at this point we don't know what the size of decrypted data
            //' will be, allocate the buffer long enough to hold ciphertext;
            //' plaintext is never longer than ciphertext.
            byte[] plainTextBytes;
            plainTextBytes = new byte[cipherTextBytes.Length];
 
            //' Start decrypting.
            int decryptedByteCount;
            decryptedByteCount = cryptoStream.Read(plainTextBytes,
                                                   0,
                                                   plainTextBytes.Length);
 
            //' Close both streams.
            memoryStream.Close();
            cryptoStream.Close();
 
            //' Convert decrypted data into a string.
            //' Let us assume that the original plaintext string was UTF8-encoded.
            string plainText;
            plainText = Encoding.UTF8.GetString(plainTextBytes,
                                                0,
                                                decryptedByteCount);
 
            //' Return decrypted string.
            return plainText;
        }
 
     
 
    }
}

No comments:

Post a Comment