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);
}
}
}
Run Code Online (Sandbox Code Playgroud)
我使用'Set Next Statement'重复执行以下语句,即不执行任何其他代码行.
byte[] encryptedData = encrypt.Encrypt(data, false);
我查看了encryptedData中的字节,发现encryptedData中的字节每次都在变化.当然这是错的?如果公钥未更改且要加密的数据尚未更改,那么'encryptedData'字节也不应更改?
我现在了解到,PasswordDeriveBytes不赞成使用Rfc2898DeriveBytes。Rfc2898DeriveBytes在MSDN上查找。有一个使用的代码示例TripleDES。但是TripleDes比年龄大和弱AES。为什么他们似乎向前迈出了一步,又向后迈了一步?可以将一个刚刚替换TripleDes用AES或Rfc2898DeriveBytes内在的联系TripleDes?