12 精币
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('/', '_');
}
static string EncryptWithPublicKey(string plainText)
{
// 公钥硬编码在子程序内部
const string publicKeyPem = @"-----BEGIN PUBLIC KEY-----
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC8H6Gp7XP6UvEQzvUgGnt9nPX4exn1aNlmeyloMl6g2rEggeTNMp7I3iLPzQDbt6yedCru971fducKc2DgF/y2CcwA
dqaKdxm0dSI2Zs4QLNYbKwWJ65wkgUh8+TJBnk+PGTgoxZ2wzvhJyRGjGhsFvLmZ
kUYPPxAPSNfjB3+/4wIDAQAB
-----END PUBLIC KEY-----";
using (RSA rsa = RSA.Create())
{
rsa.ImportFromPem(publicKeyPem); // 加载 PEM 公钥
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";
byte[] keyBytes = Encoding.UTF8.GetBytes(key);
byte[] ivBytes = new byte[16];
byte[] plainBytes = Encoding.UTF8.GetBytes(plaintext);
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[] encryptedBytes = encryptor.TransformFinalBlock(plainBytes, 0, plainBytes.Length);
return Convert.ToBase64String(encryptedBytes);
}
}
}
一个是RSA 公钥加密 一个是Aes 加密
怎么写 才是正确的
对应易语言 里面的
KEY的ras加密 = 编码_BASE64编码 (RSA.公钥_加密 (到字节集 (“abc”)))
KEY的ras加密 = 子文本替换 (KEY的ras加密, “+”, “-”, , , 真)
KEY的ras加密 = 子文本替换 (KEY的ras加密, “/”, “_”, , , 真)
加密后密文 = 编码_BASE64编码 (对称加密 (文本到UTF8 (“abc”), 到字节集 (“4a2c09ffbc6e7d0414d1ae731e3a0ce5”), #对称算法_AES_256_CBC, #数据填充_PKCS7_PADDING, 取空白字节集 (16)))
加密后密文 = 子文本替换 (加密后密文, “+”, “-”, , , 真)
加密后密文 = 子文本替换 (加密后密文, “/”, “_”, , , 真)
我来回答
回答提醒: 如果本帖被关闭无法回复,您有更好的答案帮助楼主解决,请发表至
源码区 可获得加分喔。
友情提醒: 本版被采纳的主题可在
申请荣誉值 页面申请荣誉值,获得
1点 荣誉值,荣誉值可兑换荣誉会员、终身vip用户组。
快捷通道: 申请荣誉值 →