开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

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

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


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

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

查看: 11442|回复: 11
收起左侧

[C#求助] Aes加密模式、填充模式、数据块、Key和IV参数疑惑请教

[复制链接]
结帖率:100% (1/1)
发表于 2019-12-10 11:53:18 | 显示全部楼层 |阅读模式   广东省佛山市
  1. public static string AesEncrypt(string input, string password, string salt)
  2. {
  3.         byte[] bytes = Encoding.UTF8.GetBytes(input);
  4.         byte[] bytes2 = Encoding.UTF8.GetBytes(salt);
  5.         using (AesManaged aesManaged = new AesManaged())
  6.         {
  7.                 Rfc2898DeriveBytes rfc2898DeriveBytes = new Rfc2898DeriveBytes(password, bytes2);
  8.                 aesManaged.BlockSize = aesManaged.LegalBlockSizes[0].MaxSize;
  9.                 aesManaged.KeySize = aesManaged.LegalKeySizes[0].MaxSize;
  10.                 aesManaged.Key = rfc2898DeriveBytes.GetBytes(aesManaged.KeySize / 8);
  11.                 aesManaged.IV = rfc2898DeriveBytes.GetBytes(aesManaged.BlockSize / 8);
  12.                 using (ICryptoTransform transform = aesManaged.CreateEncryptor())
  13.                 {
  14.                         MemoryStream memoryStream = new MemoryStream();
  15.                         using (CryptoStream cryptoStream = new CryptoStream(memoryStream, transform, CryptoStreamMode.Write))
  16.                         {
  17.                                 cryptoStream.Write(bytes, 0, bytes.Length);
  18.                         }
  19.                         return Convert.ToBase64String(memoryStream.ToArray());
  20.                 }
  21.         }
  22. }
复制代码
C#AES加密函数如上,
三个已知参数如下:
input=BBBBBB|123456
SecretKey Password = "Z_h$W@123";
SecretKey Salt = "123@Z_h$W";

究竟请问在http://tool.chacuo.net/cryptaes怎样填写加密模式、填充模式、数据块、Key和IV这几个关键参数才可以得到和C# 的 Cryptography.AesEncrypt同样的结果:dn78uzHKtqCh936l0fbQ4A==
2019-12-10_115138.jpg
结帖率:100% (1/1)
 楼主| 发表于 2019-12-19 18:39:30 | 显示全部楼层   广东省佛山市
最终还是通过node.js解决了IV参数,谢谢各位大神了!
回复 支持 反对

使用道具 举报

结帖率:100% (1/1)
 楼主| 发表于 2019-12-14 00:35:51 | 显示全部楼层   广东省佛山市
iv获取尚未成功,同志还需努力
回复 支持 反对

使用道具 举报

结帖率:100% (1/1)
 楼主| 发表于 2019-12-11 15:09:24 | 显示全部楼层   广东省佛山市
qingshanlushui 发表于 2019-12-10 20:24
哈哈..你好细心和耐心.....五天五夜,要是我早就放弃了.....

  1. aesManaged.Key = rfc2898DeriveBytes.GetBytes(aesManaged.KeySize / 8);
  2.                 aesManaged.IV = rfc2898DeriveBytes.GetBytes(aesManaged.BlockSize / 8);
复制代码
1576047258(1).jpg
如上图,PBKDF2计算出Key的Hash值转base64即密钥kJQkmJBeaAHHxMzwd18WT129AG3mtWlL59Em9qAVgew=
请问,IV :aesManaged.IV = rfc2898DeriveBytes.GetBytes(aesManaged.BlockSize / 8) 如何通过PBKDF2算出来呢?
百毒了很多资料对C#的rfc2898DeriveBytes、GetBytes概念还是很模糊,主要想通过CryptoJS直接计算IV

aesManaged.Key的CryptoJS计算函数(感谢qingshanlushui):
  1. var key = CryptoJS.enc.Base64.parse("kJQkmJBeaAHHxMzwd18WT129AG3mtWlL59Em9qAVgew=");
  2. var iv = CryptoJS.enc.Base64.parse("qkXFhdnuBrhiMRHG7Eo/SQ==");
  3. function AES_Encrypt(word) {
  4.     var srcs = CryptoJS.enc.Utf8.parse(word);
  5.     var encrypted = CryptoJS.AES.encrypt(srcs, key, {
  6.         iv: iv,
  7.         mode: CryptoJS.mode.CBC,
  8.         padding: CryptoJS.pad.Pkcs7
  9.     });
  10.     return encrypted.toString();
  11. }

  12. function AES_Decrypt(word) {
  13.     var srcs = word;
  14.     var decrypt = CryptoJS.AES.decrypt(srcs, key, {
  15.         iv: iv,
  16.         mode: CryptoJS.mode.CBC,
  17.         padding: CryptoJS.pad.Pkcs7
  18.     });
  19.     return decrypt.toString(CryptoJS.enc.Utf8);
  20. }
复制代码




回复 支持 反对

使用道具 举报

发表于 2019-12-10 20:24:05 | 显示全部楼层   江苏省*
lyn2018 发表于 2019-12-10 18:56
太好了!!终于解决了!!!谢谢这位兄台!!实在感激~!!
PS,
base64 iv:qkXFhdqkXFhdnuBrhiMRHG7Eo ...

哈哈..你好细心和耐心.....五天五夜,要是我早就放弃了.....

评分

参与人数 1精币 +1 收起 理由
lyn2018 + 1 欢迎常来帮助新人,谢谢~

查看全部评分

回复 支持 反对

使用道具 举报

结帖率:100% (1/1)
 楼主| 发表于 2019-12-10 18:56:28 | 显示全部楼层   广东省佛山市
qingshanlushui 发表于 2019-12-10 14:02
如图.....在线网站不支持base64格式key和iv...utf8格式key和iv存在不可见字符
base64 key:kJQkmJBeaAHHx ...

太好了!!终于解决了!!!谢谢这位兄台!!实在感激~!!
PS,
base64 iv:qkXFhdqkXFhdnuBrhiMRHG7Eo/SQ==
可能天气冷大神你手抖了一下
回复 支持 反对

使用道具 举报

结帖率:100% (1/1)
 楼主| 发表于 2019-12-10 18:40:18 | 显示全部楼层   广东省佛山市
qingshanlushui 发表于 2019-12-10 14:02
如图.....在线网站不支持base64格式key和iv...utf8格式key和iv存在不可见字符
base64 key:kJQkmJBeaAHHx ...

大神你让我看到了希望,我自己折腾捣鼓了5天5夜
回复 支持 反对

使用道具 举报

结帖率:100% (1/1)
 楼主| 发表于 2019-12-10 18:36:06 | 显示全部楼层   广东省佛山市
本帖最后由 lyn2018 于 2019-12-10 19:09 编辑
竹席 发表于 2019-12-10 13:30
参考这个页面https://www.jianshu.com/p/81e8ea00747d

好的,谢谢这位兄台!
回复 支持 反对

使用道具 举报

结帖率:100% (1/1)
发表于 2019-12-10 14:24:51 | 显示全部楼层   福建省厦门市
如果password和salt是固定的

直接输出一下key和iv不就行了
回复 支持 反对

使用道具 举报

发表于 2019-12-10 14:02:49 | 显示全部楼层   江苏省*
1210.png
如图.....在线网站不支持base64格式key和iv...utf8格式key和iv存在不可见字符
base64 key:kJQkmJBeaAHHxMzwd18WT129AG3mtWlL59Em9qAVgew=
base64 iv:qkXFhdqkXFhdnuBrhiMRHG7Eo/SQ==
CBC 模式pkc7填充

评分

参与人数 1精币 +1 收起 理由
lyn2018 + 1 新技能已get√

查看全部评分

回复 支持 反对

使用道具 举报

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

本版积分规则 致发广告者

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

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

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