zoukankan      html  css  js  c++  java
  • ASP.NET AES-128-CBC加密解密(与php通讯)

    最近有个项目需要和php进行接口对接,讨论到了接口加密相关的内容,最后定下来使用AES-128-CBC的加密方式。

    but,在和php端进行加密解密验证的时候踩坑无数,特此记录。

    php端代码:

        /**
         * AES 加密
         */
        public static function encrypt($input) {
            $key    = key;
            $method = "AES-128-CBC";
            $iv     = iv;
            $output = openssl_encrypt($input, $method, $key, 1, $iv);
            return base64_encode($output);
        }
    
        /**
         * AES 解密
         *
         */
        public static function secured_decrypt($input) {
            $key    = key;
            $method = "AES-128-CBC";
            $iv     = iv;
            $input  = base64_decode($input);
            $output = openssl_decrypt($input, $method, $key, 1, $iv);
            return $output;
        }
    

      对应C#端代码:

            //AES加密
            public static string Encrypt(string toEncrypt)
            {
                byte[] keyArray = Encoding.Default.GetBytes(key);
                byte[] ivArray = Encoding.Default.GetBytes(iv);
                byte[] toEncryptArray = Encoding.Default.GetBytes(toEncrypt);
    
                RijndaelManaged rDel = new RijndaelManaged
                {
                    Key = keyArray,
                    IV = ivArray,
                    Mode = CipherMode.CBC,
                    Padding = PaddingMode.PKCS7
                };
    
                ICryptoTransform cTransform = rDel.CreateEncryptor();
                byte[] resultArray = cTransform.TransformFinalBlock(toEncryptArray, 0, toEncryptArray.Length);
    
                return Convert.ToBase64String(resultArray, 0, resultArray.Length);
            }
    
            //AES解密
            public static string Decrypt(string toDecrypt)
            {
                byte[] keyArray = Encoding.Default.GetBytes(key);
                byte[] ivArray = Encoding.Default.GetBytes(iv);
                byte[] toEncryptArray = Convert.FromBase64String(toDecrypt);
    
                RijndaelManaged rDel = new RijndaelManaged
                {
                    Key = keyArray,
                    IV = ivArray,
                    Mode = CipherMode.CBC,
                    Padding = PaddingMode.PKCS7
                };
    
                ICryptoTransform cTransform = rDel.CreateDecryptor();
                byte[] resultArray = cTransform.TransformFinalBlock(toEncryptArray, 0, toEncryptArray.Length);
    
                return Encoding.Default.GetString(resultArray);
            }

    其中:key和iv是双方约定好的密钥和初始化向量。

  • 相关阅读:
    CRM 2013 相关下载 / 2013-10-11
    四十,Importer extension 主要(/imports)
    三十九,GeoWebCache 播种和截断(/seed)
    三十八,GeoWebCache 重新加载(/reload)
    三十七,GeoWebCache 质量截断(/statistics)
    三十六,GeoWebCache 质量截断(/masstruncate)
    三十五,GeoWebCache 图层(/layers)
    三十四,GeoWebCache 主页(/index)
    三十三,GeoWebCache 网格集(/gridsets)
    三十二,GeoWebCache 全局配置(/global)
  • 原文地址:https://www.cnblogs.com/jerry-liu/p/11776979.html
Copyright © 2011-2022 走看看