开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

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

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


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

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

查看: 2117|回复: 4
收起左侧

[C#] 求C#代码转化成E可调用的函数

[复制链接]
结帖率:50% (15/30)
发表于 2020-8-15 08:45:09 | 显示全部楼层 |阅读模式   广东省中山市
20精币
利用AesGcm加密的一个函数,他上面是加密的过程,但是没有带AesGcm的代码对于AesGcm加密上面他只调用了一个函数,但没有AesGcm具体的加密过程,AesGcm加密过程在我从其他地方找的https://github.com/indisoluble/AesGcm 求大神帮忙弄成E代码


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

签到天数: 1 天

 楼主| 发表于 2020-8-15 08:46:23 | 显示全部楼层   广东省中山市
  1. // Packages need to be installed:
  2. // Sodium.Core
  3. // System.Security.Cryptography.Algorithms

  4. // The values of publicKey,keyId,version are from shared_data.
  5. // You need to call https://www.instagram.com/data/shared_data/ to get shared_data first
  6. public static string GenerateEncPassword(string password, string publicKey, string keyId, string version)
  7. {
  8.     var time = DateTime.UtcNow.ToTimestamp(); // Unix timestamp
  9.     var keyBytes = publicKey.HexToBytes(); // Convert a hex string to a byte array
  10.     var key = new byte[32];
  11.     new Random().NextBytes(key);
  12.     var iv = new byte[12];
  13.     var tag = new byte[16];
  14.     var plainText = password.ToBytes(); // ToBytes = Encoding.UTF8.GetBytes
  15.     var cipherText = new byte[plainText.Length];

  16.     using (var cipher = new AesGcm(key))
  17.     {
  18.         cipher.Encrypt(nonce: iv,
  19.             plaintext: plainText,
  20.             ciphertext: cipherText,
  21.             tag: tag,
  22.             associatedData: time.ToString().ToBytes()); // GetBytes = Encoding.UTF8.GetBytes
  23.     }

  24.     var encryptedKey = SealedPublicKeyBox.Create(key, keyBytes);
  25.     var bytesOfLen = ((short)encryptedKey.Length).ToBytes(); // ToBytes = BitConverter.GetBytes(short);
  26.     var info = new byte[] { 1, byte.Parse(keyId) };
  27.     var bytes = info.Concat(bytesOfLen).Concat(encryptedKey).Concat(tag).Concat(cipherText); // Concat means that concat two array

  28.     // expected: #PWD_INSTAGRAM_BROWSER:10:1595671654:ARBQAFWLYGkTT9UU0dyUCkaGTRFu0PH5Ph5s86DUAbZ+B9xon8cKmnqQGaUo7bB4NHCMKQRY69b9LwaJZ1rDw1OFM0LEGtI+KbDuDC0QnfJM6o1no0XPOl73RJoUZ/OfN5nE2q/IdqX0NFinS0faRf8=
  29.     var str = $"#PWD_INSTAGRAM_BROWSER:{version}:{time}:{bytes.ToBase64()}"; // ToBase64 = Convert.ToBase64String
  30.     return str;
  31. }

  32. public static byte[] HexToBytes(this string hex)
  33. {
  34.     return Enumerable.Range(0, hex.Length / 2)
  35.         .Select(x => Convert.ToByte(hex.Substring(x * 2, 2), 16))
  36.         .ToArray();
  37. }

  38. public static T[] Concat<T>(this T[] x, T[] y)
  39. {
  40.     var z = new T[x.Length + y.Length];
  41.     x.CopyTo(z, 0);
  42.     y.CopyTo(z, x.Length);
  43.     return z;
  44. }

  45. private static readonly DateTime _jan1St1970 = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc);
  46. public static long ToTimestamp(this DateTime d)
  47. {
  48.     return (long)(d.ToUniversalTime() - _jan1St1970).TotalSeconds;
  49. }
复制代码
回复

使用道具 举报

结帖率:50% (15/30)

签到天数: 1 天

 楼主| 发表于 2020-8-15 08:48:08 | 显示全部楼层   广东省中山市
附件上传

c代码.zip

1.63 KB, 下载次数: 1

忘记上传附件了

回复

使用道具 举报

结帖率:100% (33/33)
发表于 2020-8-15 08:54:36 | 显示全部楼层   浙江省宁波市
算法这种建议定制区,没几个人会去改
tip:Rs支持库有GCM
回复

使用道具 举报

结帖率:100% (6/6)

签到天数: 11 天

发表于 2020-8-15 09:17:45 | 显示全部楼层   广东省茂名市
找现成的E代码比改容易得多。
回复

使用道具 举报

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

本版积分规则 致发广告者

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

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

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