开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

查看: 114|回复: 2
收起左侧

[C#] 弄了一天了 也没弄好

[复制链接]

结帖率:98% (465/474)
发表于 昨天 22:55 | 显示全部楼层 |阅读模式   浙江省温州市
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)))
加密后密文 = 子文本替换 (加密后密文, “+”, “-”, , , 真)
加密后密文 = 子文本替换 (加密后密文, “/”, “_”, , , 真)

  
-----BEGIN PUBLIC KEY-----
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC8H6Gp7XP6UvEQzvUgGnt9nPX4exn1aNlmeyloMl6g2rEggeTNMp7I3iLPzQDbt6yedCru971fducKc2DgF/y2CcwA
dqaKdxm0dSI2Zs4QLNYbKwWJ65wkgUh8+TJBnk+PGTgoxZ2wzvhJyRGjGhsFvLmZ
kUYPPxAPSNfjB3+/4wIDAQAB
-----END PUBLIC KEY-----



回答提醒:如果本帖被关闭无法回复,您有更好的答案帮助楼主解决,请发表至 源码区 可获得加分喔。
友情提醒:本版被采纳的主题可在 申请荣誉值 页面申请荣誉值,获得 1点 荣誉值,荣誉值可兑换荣誉会员、终身vip用户组。
快捷通道:申请荣誉值
结帖率:100% (11/11)

签到天数: 19 天

发表于 昨天 23:03 | 显示全部楼层   安徽省铜陵市
[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);
        }
    }
}






保持RSA加密不变(你已经写对了),AES加密的key保持为32字节字符串(对应AES-256),IV使用16字节全0,其他的加密参数和替换逻辑都已经正确
回复

使用道具 举报

结帖率:90% (28/31)

签到天数: 19 天

发表于 5 小时前 | 显示全部楼层   山东省临沂市
Program.zip (1.07 KB, 下载次数: 1)
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报QQ: 793400750,邮箱:wp@125.la
网站简介:精易论坛成立于2009年,是一个程序设计学习交流技术论坛,隶属于揭阳市揭东区精易科技有限公司所有。
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备2025452707号) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

快速回复 返回顶部 返回列表