[C#] 纯文本查看 复制代码
private async void Button_Click(object sender, RoutedEventArgs e)
{
try
{
string KEY的ras加密 = EncryptWithPublicKey("abc");
KEY的ras加密 = KEY的ras加密.Replace('+', '-').Replace('/', '_');
string 加密后的密文 = AesEncrypt("abc");
加密后的密文 = 加密后的密文.Replace('+', '-').Replace('/', '_');
}
catch (Exception ex)
{
// 处理异常
}
}
static string EncryptWithPublicKey(string plainText)
{
const string publicKeyPem = @"-----BEGIN PUBLIC KEY-----
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC8H6Gp7XP6UvEQzvUgGnt9nPX4exn1aNlmeyloMl6g2rEggeTNMp7I3iLPzQDbt6yedCru971fducKc2DgF/y2CcwAdqaKdxm0dSI2Zs4QLNYbKwWJ65wkgUh8+TJBnk+PGTgoxZ2wzvhJyRGjGhsFvLmZkUYPPxAPSNfjB3+/4wIDAQAB
-----END PUBLIC KEY-----";
using (RSA rsa = RSA.Create())
{
rsa.ImportFromPem(publicKeyPem);
byte[] plainBytes = Encoding.UTF8.GetBytes(plainText);
byte[] encryptedBytes = rsa.Encrypt(plainBytes, RSAEncryptionPadding.Pkcs1);
return Convert.ToBase64String(encryptedBytes);
}
}
private string AesEncrypt(string plaintext)
{
string key = "4a2c09ffbc6e7d0414d1ae731e3a0ce5"; // 32字节,AES-256
byte[] keyBytes = Encoding.UTF8.GetBytes(key); // 正好32字节
byte[] ivBytes = new byte[16]; // 16字节全0
using (Aes aes = Aes.Create())
{
aes.Key = keyBytes;
aes.IV = ivBytes;
aes.Mode = CipherMode.CBC;
aes.Padding = PaddingMode.PKCS7;
using (ICryptoTransform encryptor = aes.CreateEncryptor())
{
byte[] plainBytes = Encoding.UTF8.GetBytes(plaintext);
byte[] encryptedBytes = encryptor.TransformFinalBlock(plainBytes, 0, plainBytes.Length);
return Convert.ToBase64String(encryptedBytes);
}
}
}