zoukankan      html  css  js  c++  java
  • C#加密NodeJS解密

    C#代码:

        class Program
        {
            static void Main(string[] args)
            {
                Console.WriteLine("encrypted as: {0}", TripleDESEncrypt("12345", "abcdefghijklmnop", "pgfYadhCout=", false));
    
            }
            public static string TripleDESEncrypt(string toEncrypt, string key, string iv, bool useHashing)
            {
                byte[] keyArray;
                byte[] toEncryptArray = UTF8Encoding.UTF8.GetBytes(toEncrypt);
                byte[] ivArray = Convert.FromBase64String(iv);
    
                if (useHashing)
                {
                    MD5CryptoServiceProvider hashmd5 = new MD5CryptoServiceProvider();
                    keyArray = hashmd5.ComputeHash(UTF8Encoding.UTF8.GetBytes(key));
                }
                else
                    keyArray = UTF8Encoding.UTF8.GetBytes(key);
    
                var tdes = new TripleDESCryptoServiceProvider();
                tdes.Key = keyArray;
                tdes.IV = ivArray;
                // tdes.Mode = CipherMode.CBC;  // which is default     
                // tdes.Padding = PaddingMode.PKCS7;  // which is default
    
                ICryptoTransform cTransform = tdes.CreateEncryptor();
                byte[] resultArray = cTransform.TransformFinalBlock(toEncryptArray, 0,
                    toEncryptArray.Length);
                return Convert.ToBase64String(resultArray, 0, resultArray.Length);
            }
        }

    NodeJS的javascript代码:

    var crypto = require('crypto');
    var alg = 'des-ede-cbc';
    var key = new Buffer('abcdefghijklmnop', 'utf-8');
    var iv = new Buffer('pgfYadhCout=', 'base64');
    
    var EncryptDES = function (data) {
      var cipher = crypto.createCipheriv(alg, key, iv);
      var encoded = cipher.update(data, 'ascii', 'base64');
      encoded += cipher.final('base64');
      return encoded;
    };
    
    var DecryptDES = function (data) {   
      var encrypted = new Buffer(data, 'base64');                
      var decipher = crypto.createDecipheriv(alg, key, iv);
      var decoded = decipher.update(encrypted, 'binary', 'ascii');
      decoded += decipher.final('ascii');
      return decoded;
    };
  • 相关阅读:
    js 宿主对象的属性和方法总结
    java学习路线
    (转)前端学习路线
    第11章 PADS功能使用技巧(2)-最全面
    第11章 PADS功能使用技巧(1)-最全面
    可控硅工作原理及参数详解
    光耦继电器工作原理与参数详解
    EEPROM工作原理透彻详解
    晶振工作原理及参数详解(最透彻)
    逻辑门电路详解1(最透彻)
  • 原文地址:https://www.cnblogs.com/yumianhu/p/3723442.html
Copyright © 2011-2022 走看看