今天热门
热点:

如何在asp.net中实现php里的crypt()函数,asp.netcrypt


原有一套系统是使用php+mysql开发的,现在要新上一个项目在登录部分要用到原项目数据库中的数据,原mysql数据库中密码是用php的crypt()方法将用户密码加密后保存进数据库的。

如123456经php的crypt()加密后得到的结果是:“$1$ft3$VClxHjpQFd4ZwMC5.qRii/”,在CSDN上找到有相关的代码,但调试后有异常,异常位置在setEcn.Key = inputByteArray2;处异常提示“指定键的大小对于此算法无效”。

恳请各位老师帮忙解决下这个问题。

CSDN代码:

        /// <summary>
        /// 使用盐值进行三重加密
        /// </summary>
        /// <param name="Value">要加密的字符串</param>
        /// <param name="sKey">盐值</param>
        /// <returns></returns>
        public static string EncryptString(string Value, string sKey)
        {
            try
            {
                ICryptoTransform ct;
                MemoryStream ms;
                CryptoStream cs;
                byte[] byt;
                SymmetricAlgorithm setEcn = new TripleDESCryptoServiceProvider();
                byte[] inputByteArray = new byte[8];
                Encoding.UTF8.GetBytes(sKey, 0, 8, inputByteArray, 0);
                byte[] inputByteArray2 = Encoding.UTF8.GetBytes(sKey);
                setEcn.IV = inputByteArray;
                setEcn.Key = inputByteArray2;
                ct = setEcn.CreateEncryptor(setEcn.Key, setEcn.IV);
                byt = Encoding.UTF8.GetBytes(Value);
                ms = new MemoryStream();
                cs = new CryptoStream(ms, ct, CryptoStreamMode.Write);
                cs.Write(byt, 0, byt.Length);
                cs.FlushFinalBlock();

                cs.Close();

                return Convert.ToBase64String(ms.ToArray());
            }
            catch (Exception e)
            {
                return "";
            }
        }

        /// <summary>
        /// 获取盐值
        /// </summary>
        /// <returns></returns>
        public static string GenericSal()
        {
            byte[] buf = new byte[16];
            (new RNGCryptoServiceProvider()).GetBytes(buf);
            return Convert.ToBase64String(buf);
        }


解决方案

可以参考

[DllImport( "php5ts.dll", EntryPoint = "crypt", CharSet = CharSet.Ansi )]
private static extern string crypt( string str, string salt );

http://stackoverflow.com/questions/343995/php-crypt-function-in-net

www.zrccd.nettrue/topics/20180111/39651.htmlTechArticle如何在asp.net中实现php里的crypt()函数,asp.netcrypt 原有一套系统是使用phpmysql开发的,现在要新上一个项目在登录部分要用到原项目数据库中的数据,原mysql数据库中密码是用php的crypt()方...

相关文章

    暂无相关文章

用户评论

大家都在看