前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >nodejs使用aes-128-ecb加密如何在c#中解密

nodejs使用aes-128-ecb加密如何在c#中解密

作者头像
frontoldman
发布2019-09-03 16:07:39
2.5K0
发布2019-09-03 16:07:39
举报
文章被收录于专栏:樯橹代码

最近需要在nodejs上加密jwt,C#端解密jwt得到用户信息

代码语言:javascript
复制
class JwtService extends Service {
  encrypt(content) {
    const secretkey = this.app.config.jwt.key // 唯一(公共)秘钥
    const cipher = crypto.createCipher('aes-128-ecb', secretkey) // 使用aes128加密
    let enc = cipher.update(content, 'utf8', 'hex') // 编码方式从utf-8转为hex;
    enc += cipher.final('hex')// 编码方式转为hex;
    return enc
  }
}

却发现C#端怎么也解密不了,一直报错,改了一整天,后来终于发现,nodejs端加密用的key其实在使用之前已经使用md5加密了一次,而这个操作是默认的,暂时没发现有配置可以默认去掉,服务端如果需要使用这个key解密,则需要也同样使用MD5加密

代码语言:javascript
复制
public static string AesDecrypt(string content, string key)
        {
            // nodejs aes加密默认的key使用了md5加密,所以C#解密的key也要默认使用md5
            MD5 md5 = new MD5CryptoServiceProvider();
            byte[] output = Encoding.UTF8.GetBytes(key);
            byte[] keyArray = md5.ComputeHash(output);

            byte[] toEncryptArray = HexStringToBinary(content);

            RijndaelManaged des = new RijndaelManaged();
            des.Key = keyArray;
            des.Mode = CipherMode.ECB;
            des.Padding = PaddingMode.PKCS7;

            ICryptoTransform cTransform = des.CreateDecryptor();
            byte[] resultArray = cTransform.TransformFinalBlock(toEncryptArray, 0, toEncryptArray.Length);

            return Encoding.UTF8.GetString(resultArray);
        }

代码使用了一个函数把16进制转成字节数组

代码语言:javascript
复制
public static byte[] HexStringToBinary(string hexstring)
        {

            var inputByteArray = new byte[hexstring.Length / 2];
            for (var x = 0; x < inputByteArray.Length; x++)
            {
                var i = Convert.ToInt32(hexstring.Substring(x * 2, 2), 16);
                inputByteArray[x] = (byte)i;
            }
          
            return inputByteArray;
        }

解决问题,却花费一天时间

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档