Шифрование и дешифрование строки в C # .net 3.5

это должно работать

header("Access-Control-Allow-Origin: *");
header("Access-Control-Allow-Headers: X-Requested-With, Content-Type, Origin, Cache-Control, Pragma, Authorization, Accept, Accept-Encoding");
1
задан RWolfe 5 March 2019 в 15:21
поделиться

1 ответ

Ответ, который я получил, требовал пересмотра моего кода, но он работает:

public static string EncryptString(this string text, string passPhrase)
{
    string result = null;
    if(!String.IsNullOrEmpty(text))
    {
        byte [] initVectorBytes = Encoding.UTF8.GetBytes ( m_InitVector );
        byte [] plainTextBytes = Encoding.UTF8.GetBytes ( text );
        PasswordDeriveBytes password = new PasswordDeriveBytes ( passPhrase, null );
        byte [] keyBytes = password.GetBytes ( m_Keysize / 8 );
        RijndaelManaged symmetricKey = new RijndaelManaged ();
        symmetricKey.Mode = CipherMode.CBC;
        ICryptoTransform encryptor = symmetricKey.CreateEncryptor ( keyBytes, initVectorBytes );
        MemoryStream memoryStream = new MemoryStream ();
        CryptoStream cryptoStream = new CryptoStream ( memoryStream, encryptor,  CryptoStreamMode.Write );
        cryptoStream.Write ( plainTextBytes, 0, plainTextBytes.Length );
        cryptoStream.FlushFinalBlock ();
        byte [] cipherTextBytes = memoryStream.ToArray ();
        memoryStream.Close ();
        cryptoStream.Close ();
        result = Convert.ToBase64String ( cipherTextBytes );
    }
    return result;
}

и

public static string DecryptString(this string text, string passPhrase)
{
    string result = null;
    if ( !String.IsNullOrEmpty ( text ) )
    {
        byte [] initVectorBytes = Encoding.UTF8.GetBytes ( m_InitVector );
        byte [] cipherTextBytes = Convert.FromBase64String ( text );
        PasswordDeriveBytes password = new PasswordDeriveBytes ( passPhrase, null );
        byte [] keyBytes = password.GetBytes ( m_Keysize / 8 );
        RijndaelManaged symmetricKey = new RijndaelManaged ();
        symmetricKey.Mode = CipherMode.CBC;
        ICryptoTransform decryptor = symmetricKey.CreateDecryptor ( keyBytes, initVectorBytes );
        MemoryStream memoryStream = new MemoryStream ( cipherTextBytes );
        CryptoStream cryptoStream = new CryptoStream ( memoryStream, decryptor, CryptoStreamMode.Read );
        byte [] plainTextBytes = new byte [cipherTextBytes.Length];
        int decryptedByteCount = cryptoStream.Read ( plainTextBytes, 0, plainTextBytes.Length );
        memoryStream.Close ();
        cryptoStream.Close ();
        result = Encoding.UTF8.GetString ( plainTextBytes, 0, decryptedByteCount );
    }
    return result;
}
0
ответ дан RWolfe 5 March 2019 в 15:21
поделиться
Другие вопросы по тегам:

Похожие вопросы: