Heim >Backend-Entwicklung >PHP-Tutorial >php-关于DES加密 求帮助!

php-关于DES加密 求帮助!

WBOY
WBOYOriginal
2016-06-02 11:33:29889Durchsuche

php加密des

对接方des加密 是用.net 写的

我用的是php 就大侠把.net的加密程序帮我 转换成 php的

下面是 .NET 的加密程序:

<code> public class DESEncryptDecrypt    {        private string Key;        private string IV;        private DESCryptoServiceProvider IDes;        private byte[] GetKey;        private byte[] GetIV;        public DESEncryptDecrypt()        {            this.Key = "%&hj7x89H$yuBI0456FtmaT5&fvHUFCy76*h%(HilJ$lhj!y6&(*jkP87jH7&*^$^&*%&*%$@#@^";            this.IV = "E4ghj*Ghg7!rNIfb&95GUY86GfghUb#er57HBh(u%g6HJ($jhWk7&!hg4ui%$hjk";            this.Init();        }        public DESEncryptDecrypt(string Key)        {            this.Key = Key;            this.IV = "E4ghj*Ghg7!rNIfb&95GUY86GfghUb#er57HBh(u%g6HJ($jhWk7&!hg4ui%$hjk";            this.Init();        }        public DESEncryptDecrypt(string Key,string IV)        {            this.Key = Key;            this.IV = IV;            this.Init();        }        private void Init()        {            this.IDes = new DESCryptoServiceProvider();            this.IDes.GenerateKey();            this.GetKey = this.IDes.Key;            this.IDes.GenerateIV();            this.GetIV = this.IDes.IV;        }        /// <summary>        /// 获得密钥        /// </summary>        /// <returns>密钥</returns>        private byte[] GetLegalKey()        {            string sTemp = this.Key;            byte[] bytTemp = this.GetKey;            int KeyLength = bytTemp.Length;            if (sTemp.Length > KeyLength)            {                sTemp = sTemp.Substring(0, KeyLength);            }            else            {                if (sTemp.Length         /// 获得初始向量IV        ///         /// <returns>初试向量IV</returns>        private byte[] GetLegalIV()        {            string sTemp = this.Key;            byte[] bytTemp = this.GetIV;            int IVLength = bytTemp.Length;            if (sTemp.Length > IVLength)            {                sTemp = sTemp.Substring(0, IVLength);            }            else            {                if (sTemp.Length         /// 加密算法        ///         /// <param name="data">        /// <returns></returns>        public string Encrypt(string data)        {            //将要加密的数据编码为字节数组            byte[] encrypt_data = System.Text.Encoding.UTF8.GetBytes(data);    //如果使用Unicode编码,支持中文加密            //创建流,保存加密后的数据            MemoryStream ms = new MemoryStream();            //创建加密流            CryptoStream cs = new CryptoStream(ms, this.IDes.CreateEncryptor(this.GetLegalKey(), this.GetLegalIV()), CryptoStreamMode.Write);            //调用Write方法将加密后的结果写到 流 中            cs.Write(encrypt_data, 0, encrypt_data.Length);            //将数据从流写入内存(这句不能少,否则在从内存导出到字符串的时候会出现字符丢失)            cs.FlushFinalBlock();            //ms.ToString(); ==>将流写入字节数组中            string result = Convert.ToBase64String(ms.ToArray());            ms.Close();            cs.Close();            return result;        }        /// <summary>        /// 解密算法        /// </summary>        /// <param name="data">        /// <returns></returns>        public string Decrypt(string data)        {            byte[] decrypt_data = Convert.FromBase64String(data);            MemoryStream ms = new MemoryStream();            CryptoStream cs = new CryptoStream(ms, this.IDes.CreateDecryptor(this.GetLegalKey(), this.GetLegalIV()), CryptoStreamMode.Write);            cs.Write(decrypt_data, 0, decrypt_data.Length);            cs.FlushFinalBlock();            string result = System.Text.Encoding.UTF8.GetString(ms.ToArray());            ms.Close();            cs.Close();            return result;        }    }</code>
Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn