Шифрование данных с использованием RSACryptoServiceProvider имеет то, что мне кажется странной особенностью

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Security.Cryptography;
using System.IO;

namespace EncryptionTest
{
    class Program
    {
        static void Main(string[] args)
        {
            UnicodeEncoding ByteConverter = new UnicodeEncoding();

            byte[] dataToEncrypt = ByteConverter.GetBytes("Test data");

            string enc = Encrypt(dataToEncrypt);         
        }

        static string Encrypt(byte[] data)
        {
            UnicodeEncoding ByteConverter = new UnicodeEncoding();
            RSACryptoServiceProvider encrypt = new RSACryptoServiceProvider();

            byte[] encryptedData = encrypt.Encrypt(data, false); //Repeat this line

            return ByteConverter.GetString(encryptedData);
        }

    }
}

Я использовал «Установить следующий оператор» для многократного выполнения следующего оператора, то есть без выполнения каких-либо других строк кода. byte [] encryptedData = encrypt.Encrypt (data, false);

Я просмотрел байты в encryptedData и обнаружил, что байты в encryptedData меняются каждый раз. Неужто это неправильно? Если открытый ключ не изменился и данные, подлежащие шифрованию, не были изменены, тогда байты encryptedData также не должны измениться?

6
задан Tadmas 8 February 2012 в 13:37
поделиться