最近需要在nodejs上对jwt进行加密,C#解密jwt获取用户信息=加密货币。createCipher('aes-128-ecb',secretkey)//使用aes128加密letenc=cipher.update(content,'utf8','hex')//编码方式由utf-8改为hex;enc+=cipher.final('hex')//编码方式改为hex;returnenc}}但是发现C#端无论如何也解密不了,一直报错,改了一整天,最后发现nodejs端加密用的key居然在用已经加密了之前有md5,而且这个操作是默认的,默认没有可以去掉的配置。如果服务端需要用这个key解密,还需要用MD5加密publicstaticstringAesDecrypt(stringcontent,stringkey){//nodejsaes加密默认key使用md5加密,所以C#解密的key也默认使用md5。MD5md5=newMD5CryptoServiceProvider();byte[]output=Encoding.UTF8.GetBytes(key);byte[]keyArray=md5.ComputeHash(输出);byte[]toEncryptArray=HexStringToBinary(内容);RijndaelManageddes=newRijndaelManaged();des.Key=keyArray;des.Mode=CipherMode.ECB;des.Padding=PaddingMode.PKCS7;ICryptoTransformcTransform=des.CreateDecryptor();byte[]resultArray=cTransform.TransformFinalBlock(toEncryptArray,0,toEncryptArray.Length);返回Encoding.UTF8.GetString(resultArray);}代码使用了一个将十六进制转换为字节数组的函数publicstaticbyte[]HexStringToBinary(stringhexstring){varinputByteArray=newbyte[hexstring.Length/2];对于(varx=0;x
