返回顶部
首页 > 资讯 > 精选 >C#加密知识有哪些
  • 440
分享到

C#加密知识有哪些

2023-06-26 05:06:26 440人浏览 八月长安
摘要

C#加密知识有哪些,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。aes 对称加密密钥必须是32字节using System;using Sy

C#加密知识有哪些,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。

aes 对称加密密钥必须是32字节

using System;using System.Security.Cryptography;using System.Text;namespace ConsoleApp1{    public class AES    {        /// <summary>        /// 获取密钥 必须是32字节        /// </summary>        private static string Key        {            get { return @"abcdefghijklmnopqrstuvwxyz123456"; }        }        /// <summary>        /// AES加密        /// </summary>        /// <param name="plainStr">明文字符串</param>        /// <returns>密文</returns>        public static string AESEncrypt(string encryptStr)        {            byte[] keyArray = UTF8Encoding.UTF8.GetBytes(Key);            byte[] toEncryptArray = UTF8Encoding.UTF8.GetBytes(encryptStr);            RijndaelManaged rDel = new RijndaelManaged();            rDel.Key = keyArray;            rDel.Mode = CipherMode.ECB;            rDel.Padding = PaddingMode.PKCS7;            ICryptoTransfORM cTransform = rDel.CreateEncryptor();            byte[] resultArray = cTransform.TransformFinalBlock(toEncryptArray, 0, toEncryptArray.Length);            return Convert.ToBase64String(resultArray, 0, resultArray.Length);        }        public static string AESDEncrypt(string encryptStr)        {            byte[] keyArray = UTF8Encoding.UTF8.GetBytes(Key);            byte[] toEncryptArray = Convert.FromBase64String(encryptStr);            RijndaelManaged rDel = new RijndaelManaged();            rDel.Key = keyArray;            rDel.Mode = CipherMode.ECB;            rDel.Padding = PaddingMode.PKCS7;            ICryptoTransform cTransform = rDel.CreateDecryptor();            byte[] resultArray = cTransform.TransformFinalBlock(toEncryptArray, 0, toEncryptArray.Length);            return UTF8Encoding.UTF8.GetString(resultArray);        }    }}

调用方式:

 /// aes 对称加密解密            string s = AES.AESEncrypt("202201131552测试数据");            Console.WriteLine(s);            Console.WriteLine(AES.AESDEncrypt(s));            Console.WriteLine("------------------------------------------------------");

MD5 不可逆加密

using System;using System.Security.Cryptography;namespace ConsoleApp1{    public class MD5Helper    {        public static string md5(string str)        {            try            {                MD5CryptoServiceProvider md5 = new MD5CryptoServiceProvider();                byte[] bytValue, bytHash;                bytValue = System.Text.Encoding.UTF8.GetBytes(str);                bytHash = md5.ComputeHash(bytValue);                md5.Clear();                string sTemp = "";                for (int i = 0; i < bytHash.Length; i++)                {                    sTemp += bytHash[i].ToString("X").PadLeft(2, '0');                }                str = sTemp.ToLower();            }            catch (Exception e)            {                Console.WriteLine(e.Message);            }            return str;        }    }}

调用方式:

/// MD5 不可逆加密            var MD5 = MD5Helper.md5("123456");            Console.WriteLine("------------------------------------------------------");

SHA 256 不可逆加密

using System.Security.Cryptography;using System.Text;namespace ConsoleApp1{    public class SHA256Helper    {        /// <summary>        /// SHA256加密        /// </summary>        /// <param name="data"></param>        /// <returns></returns>        public static string SHA256EncryptString(string data)        {            byte[] bytes = Encoding.UTF8.GetBytes(data);            byte[] hash = SHA256Managed.Create().ComputeHash(bytes);            StringBuilder builder = new StringBuilder();            for (int i = 0; i < hash.Length; i++)            {                builder.Append(hash[i].ToString("x2"));            }            return builder.ToString();        }    }}

调用方式:

///SHA 256 不可逆加密            var sha256 = SHA256Helper.SHA256EncryptString("1111");            Console.WriteLine("------------------------------------------------------");

RSA 非对称加密解密

百度rsa密钥在线生成 Http://WEB.chacuo.net/netrsakeypair/ 填入公私钥到变量publickey, privatekey

using System;using System.IO;using System.Security.Cryptography;using System.Text;namespace ConsoleApp1{    public  class RSAPkcs8Helper    {        /// <summary>        /// 签名        /// </summary>        /// <param name="content">待签名字符串</param>        /// <param name="privateKey">私钥</param>        /// <param name="input_charset">编码格式</param>        /// <returns>签名后字符串</returns>        public static string sign(string content, string privateKey, string input_charset)        {            byte[] Data = Encoding.GetEncoding(input_charset).GetBytes(content);            RSACryptoServiceProvider rsa = DecodePemPrivateKey(privateKey);            //MD5 sh = new MD5CryptoServiceProvider();//这里也可以使用MD5加密方式            SHA1 sh = new SHA1CryptoServiceProvider();            byte[] signData = rsa.SignData(Data, sh);            return Convert.ToBase64String(signData);        }        /// <summary>        /// 验签        /// </summary>        /// <param name="content">待验签字符串</param>        /// <param name="signedString">签名</param>        /// <param name="publicKey">公钥</param>        /// <param name="input_charset">编码格式</param>        /// <returns>true(通过),false(不通过)</returns>        public static bool verify(string content, string signedString, string publicKey, string input_charset)        {            bool result = false;            byte[] Data = Encoding.GetEncoding(input_charset).GetBytes(content);            byte[] data = Convert.FromBase64String(signedString);            RSAParameters paraPub = ConvertFromPublicKey(publicKey);            RSACryptoServiceProvider rsaPub = new RSACryptoServiceProvider();            rsaPub.ImportParameters(paraPub);            //MD5 sh = new MD5CryptoServiceProvider();//这里可以使用MD5加密方式            SHA1 sh = new SHA1CryptoServiceProvider();            result = rsaPub.VerifyData(Data, sh, data);            return result;        }        /// <summary>        /// 加密        /// </summary>        /// <param name="resData">需要加密的字符串</param>        /// <param name="publicKey">公钥</param>        /// <param name="input_charset">编码格式</param>        /// <returns>明文</returns>        public static string encryptData(string resData, string publicKey, string input_charset)        {            byte[] DataToEncrypt = Encoding.GetEncoding(input_charset).GetBytes(resData);            string result = encrypt(DataToEncrypt, publicKey, input_charset);            return result;        }        /// <summary>        /// 解密        /// </summary>        /// <param name="resData">加密字符串</param>        /// <param name="privateKey">私钥</param>        /// <param name="input_charset">编码格式</param>        /// <returns>明文</returns>        public static string decryptData(string resData, string privateKey, string input_charset)        {            byte[] DataToDecrypt = Convert.FromBase64String(resData);            string result = "";            for (int j = 0; j < DataToDecrypt.Length / 128; j++)            {                byte[] buf = new byte[128];                for (int i = 0; i < 128; i++)                {                    buf[i] = DataToDecrypt[i + 128 * j];                }                result += decrypt(buf, privateKey, input_charset);            }            return result;        }        #region 内部方法        private static string encrypt(byte[] data, string publicKey, string input_charset)        {            RSACryptoServiceProvider rsa = DecodePemPublicKey(publicKey);            //MD5 sh = new MD5CryptoServiceProvider();//这里也可以使用MD5加密方式            SHA1 sh = new SHA1CryptoServiceProvider();            byte[] result = rsa.Encrypt(data, false);            return Convert.ToBase64String(result);        }        private static string decrypt(byte[] data, string privateKey, string input_charset)        {            string result = "";            RSACryptoServiceProvider rsa = DecodePemPrivateKey(privateKey);            //MD5 sh = new MD5CryptoServiceProvider();//这里也可以替换使用MD5方式            SHA1 sh = new SHA1CryptoServiceProvider();            byte[] source = rsa.Decrypt(data, false);            char[] asciiChars = new char[Encoding.GetEncoding(input_charset).GetCharCount(source, 0, source.Length)];            Encoding.GetEncoding(input_charset).GetChars(source, 0, source.Length, asciiChars, 0);            result = new string(asciiChars);            //result = ASCIIEncoding.ASCII.GetString(source);            return result;        }        private static RSACryptoServiceProvider DecodePemPublicKey(String pemstr)        {            byte[] pkcs8publickkey;            pkcs8publickkey = Convert.FromBase64String(pemstr);            if (pkcs8publickkey != null)            {                RSACryptoServiceProvider rsa = DecodeRSAPublicKey(pkcs8publickkey);                return rsa;            }            else                return null;        }        private static RSACryptoServiceProvider DecodePemPrivateKey(String pemstr)        {            byte[] pkcs8privatekey;            pkcs8privatekey = Convert.FromBase64String(pemstr);            if (pkcs8privatekey != null)            {                RSACryptoServiceProvider rsa = DecodePrivateKeyInfo(pkcs8privatekey);                return rsa;            }            else                return null;        }        private static RSACryptoServiceProvider DecodePrivateKeyInfo(byte[] pkcs8)        {            byte[] SeqOID = { 0x30, 0x0D, 0x06, 0x09, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x01, 0x05, 0x00 };            byte[] seq = new byte[15];            MemoryStream mem = new MemoryStream(pkcs8);            int lenstream = (int)mem.Length;            BinaryReader binr = new BinaryReader(mem);    //wrap Memory Stream with BinaryReader for easy reading            byte bt = 0;            ushort twobytes = 0;            try            {                twobytes = binr.ReadUInt16();                if (twobytes == 0x8130)    //data read as little endian order (actual data order for Sequence is 30 81)                    binr.ReadByte();    //advance 1 byte                else if (twobytes == 0x8230)                    binr.ReadInt16();    //advance 2 bytes                else                    return null;                bt = binr.ReadByte();                if (bt != 0x02)                    return null;                twobytes = binr.ReadUInt16();                if (twobytes != 0x0001)                    return null;                seq = binr.ReadBytes(15);        //read the Sequence OID                if (!CompareBytearrays(seq, SeqOID))    //make sure Sequence for OID is correct                    return null;                bt = binr.ReadByte();                if (bt != 0x04)    //expect an Octet string                    return null;                bt = binr.ReadByte();        //read next byte, or next 2 bytes is  0x81 or 0x82; otherwise bt is the byte count                if (bt == 0x81)                    binr.ReadByte();                else                    if (bt == 0x82)                    binr.ReadUInt16();                //------ at this stage, the remaining sequence should be the RSA private key                byte[] rsaprivkey = binr.ReadBytes((int)(lenstream - mem.Position));                RSACryptoServiceProvider rsacsp = DecodeRSAPrivateKey(rsaprivkey);                return rsacsp;            }            catch (Exception)            {                return null;            }            finally { binr.Close(); }        }        private static bool CompareBytearrays(byte[] a, byte[] b)        {            if (a.Length != b.Length)                return false;            int i = 0;            foreach (byte c in a)            {                if (c != b[i])                    return false;                i++;            }            return true;        }        private static RSACryptoServiceProvider DecodeRSAPublicKey(byte[] publickey)        {            // encoded OID sequence for  PKCS #1 rsaEncryption szOID_RSA_RSA = "1.2.840.113549.1.1.1"            byte[] SeqOID = { 0x30, 0x0D, 0x06, 0x09, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x01, 0x05, 0x00 };            byte[] seq = new byte[15];            // ---------  Set up stream to read the asn.1 encoded SubjectPublicKeyInfo blob  ------            MemoryStream mem = new MemoryStream(publickey);            BinaryReader binr = new BinaryReader(mem);    //wrap Memory Stream with BinaryReader for easy reading            byte bt = 0;            ushort twobytes = 0;            try            {                twobytes = binr.ReadUInt16();                if (twobytes == 0x8130) //data read as little endian order (actual data order for Sequence is 30 81)                    binr.ReadByte();    //advance 1 byte                else if (twobytes == 0x8230)                    binr.ReadInt16();   //advance 2 bytes                else                    return null;                seq = binr.ReadBytes(15);       //read the Sequence OID                if (!CompareBytearrays(seq, SeqOID))    //make sure Sequence for OID is correct                    return null;                twobytes = binr.ReadUInt16();                if (twobytes == 0x8103) //data read as little endian order (actual data order for Bit String is 03 81)                    binr.ReadByte();    //advance 1 byte                else if (twobytes == 0x8203)                    binr.ReadInt16();   //advance 2 bytes                else                    return null;                bt = binr.ReadByte();                if (bt != 0x00)     //expect null byte next                    return null;                twobytes = binr.ReadUInt16();                if (twobytes == 0x8130) //data read as little endian order (actual data order for Sequence is 30 81)                    binr.ReadByte();    //advance 1 byte                else if (twobytes == 0x8230)                    binr.ReadInt16();   //advance 2 bytes                else                    return null;                twobytes = binr.ReadUInt16();                byte lowbyte = 0x00;                byte highbyte = 0x00;                if (twobytes == 0x8102) //data read as little endian order (actual data order for Integer is 02 81)                    lowbyte = binr.ReadByte();  // read next bytes which is bytes in modulus                else if (twobytes == 0x8202)                {                    highbyte = binr.ReadByte(); //advance 2 bytes                    lowbyte = binr.ReadByte();                }                else                    return null;                byte[] modint = { lowbyte, highbyte, 0x00, 0x00 };   //reverse byte order since asn.1 key uses big endian order                int modsize = BitConverter.ToInt32(modint, 0);                byte firstbyte = binr.ReadByte();                binr.BaseStream.Seek(-1, SeekOrigin.Current);                if (firstbyte == 0x00)                {   //if first byte (highest order) of modulus is zero, don't include it                    binr.ReadByte();    //skip this null byte                    modsize -= 1;   //reduce modulus buffer size by 1                }                byte[] modulus = binr.ReadBytes(modsize);   //read the modulus bytes                if (binr.ReadByte() != 0x02)            //expect an Integer for the exponent data                    return null;                int expbytes = (int)binr.ReadByte();        // should only need one byte for actual exponent data (for all useful values)                byte[] exponent = binr.ReadBytes(expbytes);                // ------- create RSACryptoServiceProvider instance and initialize with public key -----                RSACryptoServiceProvider RSA = new RSACryptoServiceProvider();                RSAParameters RSAKeyInfo = new RSAParameters();                RSAKeyInfo.Modulus = modulus;                RSAKeyInfo.Exponent = exponent;                RSA.ImportParameters(RSAKeyInfo);                return RSA;            }            catch (Exception)            {                return null;            }            finally { binr.Close(); }        }        private static RSACryptoServiceProvider DecodeRSAPrivateKey(byte[] privkey)        {            byte[] MODULUS, E, D, P, Q, DP, DQ, IQ;            // ---------  Set up stream to decode the asn.1 encoded RSA private key  ------            MemoryStream mem = new MemoryStream(privkey);            BinaryReader binr = new BinaryReader(mem);    //wrap Memory Stream with BinaryReader for easy reading            byte bt = 0;            ushort twobytes = 0;            int elems = 0;            try            {                twobytes = binr.ReadUInt16();                if (twobytes == 0x8130)    //data read as little endian order (actual data order for Sequence is 30 81)                    binr.ReadByte();    //advance 1 byte                else if (twobytes == 0x8230)                    binr.ReadInt16();    //advance 2 bytes                else                    return null;                twobytes = binr.ReadUInt16();                if (twobytes != 0x0102)    //version number                    return null;                bt = binr.ReadByte();                if (bt != 0x00)                    return null;                //------  all private key components are Integer sequences ----                elems = GetIntegerSize(binr);                MODULUS = binr.ReadBytes(elems);                elems = GetIntegerSize(binr);                E = binr.ReadBytes(elems);                elems = GetIntegerSize(binr);                D = binr.ReadBytes(elems);                elems = GetIntegerSize(binr);                P = binr.ReadBytes(elems);                elems = GetIntegerSize(binr);                Q = binr.ReadBytes(elems);                elems = GetIntegerSize(binr);                DP = binr.ReadBytes(elems);                elems = GetIntegerSize(binr);                DQ = binr.ReadBytes(elems);                elems = GetIntegerSize(binr);                IQ = binr.ReadBytes(elems);                // ------- create RSACryptoServiceProvider instance and initialize with public key -----                RSACryptoServiceProvider RSA = new RSACryptoServiceProvider();                RSAParameters RSAparams = new RSAParameters();                RSAparams.Modulus = MODULUS;                RSAparams.Exponent = E;                RSAparams.D = D;                RSAparams.P = P;                RSAparams.Q = Q;                RSAparams.DP = DP;                RSAparams.DQ = DQ;                RSAparams.InverseQ = IQ;                RSA.ImportParameters(RSAparams);                return RSA;            }            catch (Exception)            {                return null;            }            finally { binr.Close(); }        }        private static int GetIntegerSize(BinaryReader binr)        {            byte bt = 0;            byte lowbyte = 0x00;            byte highbyte = 0x00;            int count = 0;            bt = binr.ReadByte();            if (bt != 0x02)        //expect integer                return 0;            bt = binr.ReadByte();            if (bt == 0x81)                count = binr.ReadByte();    // data size in next byte            else                if (bt == 0x82)            {                highbyte = binr.ReadByte();    // data size in next 2 bytes                lowbyte = binr.ReadByte();                byte[] modint = { lowbyte, highbyte, 0x00, 0x00 };                count = BitConverter.ToInt32(modint, 0);            }            else            {                count = bt;        // we already have the data size            }            while (binr.ReadByte() == 0x00)            {    //remove high order zeros in data                count -= 1;            }            binr.BaseStream.Seek(-1, SeekOrigin.Current);        //last ReadByte wasn't a removed zero, so back up a byte            return count;        }        #endregion        #region 解析.net 生成的Pem        private static RSAParameters ConvertFromPublicKey(string pemFileConent)        {            byte[] keyData = Convert.FromBase64String(pemFileConent);            if (keyData.Length < 162)            {                throw new ArgumentException("pem file content is incorrect.");            }            byte[] pemModulus = new byte[128];            byte[] pemPublicExponent = new byte[3];            Array.Copy(keyData, 29, pemModulus, 0, 128);            Array.Copy(keyData, 159, pemPublicExponent, 0, 3);            RSAParameters para = new RSAParameters();            para.Modulus = pemModulus;            para.Exponent = pemPublicExponent;            return para;        }        private static RSAParameters ConvertFromPrivateKey(string pemFileConent)        {            byte[] keyData = Convert.FromBase64String(pemFileConent);            if (keyData.Length < 609)            {                throw new ArgumentException("pem file content is incorrect.");            }            int index = 11;            byte[] pemModulus = new byte[128];            Array.Copy(keyData, index, pemModulus, 0, 128);            index += 128;            index += 2;//141            byte[] pemPublicExponent = new byte[3];            Array.Copy(keyData, index, pemPublicExponent, 0, 3);            index += 3;            index += 4;//148            byte[] pemPrivateExponent = new byte[128];            Array.Copy(keyData, index, pemPrivateExponent, 0, 128);            index += 128;            index += ((int)keyData[index + 1] == 64 ? 2 : 3);//279            byte[] pemPrime1 = new byte[64];            Array.Copy(keyData, index, pemPrime1, 0, 64);            index += 64;            index += ((int)keyData[index + 1] == 64 ? 2 : 3);//346            byte[] pemPrime2 = new byte[64];            Array.Copy(keyData, index, pemPrime2, 0, 64);            index += 64;            index += ((int)keyData[index + 1] == 64 ? 2 : 3);//412/413            byte[] pemExponent1 = new byte[64];            Array.Copy(keyData, index, pemExponent1, 0, 64);            index += 64;            index += ((int)keyData[index + 1] == 64 ? 2 : 3);//479/480            byte[] pemExponent2 = new byte[64];            Array.Copy(keyData, index, pemExponent2, 0, 64);            index += 64;            index += ((int)keyData[index + 1] == 64 ? 2 : 3);//545/546            byte[] pemCoefficient = new byte[64];            Array.Copy(keyData, index, pemCoefficient, 0, 64);            RSAParameters para = new RSAParameters();            para.Modulus = pemModulus;            para.Exponent = pemPublicExponent;            para.D = pemPrivateExponent;            para.P = pemPrime1;            para.Q = pemPrime2;            para.DP = pemExponent1;            para.DQ = pemExponent2;            para.InverseQ = pemCoefficient;            return para;        }        #endregion    }}

调用方式:

string publickey = "";            string privatekey = "";            publickey = "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDDLA7Of0H4g+WaAToFCdmLDP4DbCc161JcSr0t+XlMSCEiglFhTOh5+HtCWSpVKhwzTO9ShYwWooTqGpfl1LbLg+RhBXtbMQ1M+HaVVkscbbDz3xS6ngUMssktw+Q+9rYtGor+lNGSJHF7HnaTJ6Qyv1oUYiIap4oi1sLPMQDIDwIDAQAB";            privatekey = "MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBAMMsDs5/QfiD5ZoBOgUJ2YsM/gNsJzXrUlxKvS35eUxIISKCUWFM6Hj4e0JZKlUqHDNM71KFjBaihOoal+XUtsuD5GEFe1syrUz4dpVWSxxtsPPfFLqeBQyyyS3D5D72ti0aiv6U0ZIkcXsedpMnpDK/WhRiIhqniiLWws8xAMgPAgMBAAECgYBafOXMhaHfh79+/Iya42syFe77RTyUuirwUVKOqzi6zkJWjpcOhqrN017Kby66V5DFlCjtWK+PmwAGzheY3lt1BQtYVkcjZS6oB+NnimZsqbuaixkdcS9TDdv+p40DffyATmIHy/7vivet0FCfRzpMo0KU9+m5Mc8s7qyVYio8MQJBAP6a0uU/JpK3irhO1B1o52ANTNnwK0q7mKwFP/oomExkKSajH0uBrKM6KdtF9p41h461M4gDwL2wxkN8v792e8kCQQDEPdulLlT95pD721wavzeA8cbtyn+NAo++auutV8USZ8zyDsuQD5Lr8dyh5IzVYXWYl8zsF5W6XIkwI2guEOEXAkEA8dTLJpaCI++UIpY1Ya3nv1NCwOsfo79mN1ZRO2JdromgkKN2MTj9apjvcugUZJfBmDeyt6mg5ExJNYcDdm+rCQJACQo8cwiGW8fiR+fb/1NtsB/zJQMeCxXiH0h4oN2ZM3bapw/taq58+yeCHWbltfKuYyAjDYEsoZAftbr70ptucwJATIB2krFwczTMA5eo07/r2LPspIqFKmEfPsKKX81yMcxTZ/outSOO/b6O0k+W6gdwxB9/nISMZigv4VbGFn6qnQ==";                        //加密字符串            string data = "202201131819gao";            Console.WriteLine("原始:" + data);            //加密            string encrypteddata = RSAPkcs8Helper.encryptData(data, publickey, "UTF-8");            Console.WriteLine("加密:" + encrypteddata);            Console.WriteLine("解密:" + RSAPkcs8Helper.decryptData(encrypteddata, privatekey, "UTF-8"));            Console.WriteLine("------------------------------------------------------");            //解密            string endata = "WI8eYavWOasyYjgWn8r9SXSvW18dmzmlSY4CrWXoTmqHbPCE6iWGYOzes4QOrPDKDPPpHdEpfMYPQZPs2BX84bvpohOejKKQS2TE0hEutk0RMX76ltuFpR51SLqe+TqSEMDbkyoaJRb2OlGA1SqTC+uDpZA1tbofB5v/+5mB5o8=";            string datamw = RSAPkcs8Helper.decryptData(endata, privatekey, "UTF-8");            Console.WriteLine("提前获知解密:" + datamw);

看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注编程网精选频道,感谢您对编程网的支持。

--结束END--

本文标题: C#加密知识有哪些

本文链接: https://lsjlt.com/news/307118.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • C#加密知识有哪些
    C#加密知识有哪些,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。aes 对称加密密钥必须是32字节using System;using Sy...
    99+
    2023-06-26
  • C/C++指针知识点有哪些
    本篇内容介绍了“C/C++指针知识点有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!基础部分关于内存内存含义:存储器:计算机的组成中,用...
    99+
    2023-06-03
  • C++的基础知识有哪些
    这篇文章主要介绍“C++的基础知识有哪些”,在日常操作中,相信很多人在C++的基础知识有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”C++的基础知识有哪些”的疑惑有所帮助!接下来,请跟着小编一起来学习吧...
    99+
    2023-06-16
  • C++语法知识点有哪些
    这篇文章主要讲解了“C++语法知识点有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“C++语法知识点有哪些”吧!C++程序的组成 (1)预处理命令以#开头。三类预处理命令。A 宏定义命令...
    99+
    2023-06-17
  • C#中的基础知识有哪些
    这篇文章主要为大家展示了“C#中的基础知识有哪些”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“C#中的基础知识有哪些”这篇文章吧。C#基础知识——数据类型float (单精度 精度为7位数)do...
    99+
    2023-06-17
  • C#反射相关知识有哪些
    这篇文章主要讲解了“C#反射相关知识有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“C#反射相关知识有哪些”吧!C#反射是什么?Reflection,中文翻译为反射。这是.Net中获取运...
    99+
    2023-06-17
  • C++的基础知识点有哪些
    这篇文章主要介绍“C++的基础知识点有哪些”,在日常操作中,相信很多人在C++的基础知识点有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”C++的基础知识点有哪些”的疑惑有所帮助!接下来,请跟着小编一起来...
    99+
    2023-06-17
  • C++程序基础知识有哪些
    本篇内容主要讲解“C++程序基础知识有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“C++程序基础知识有哪些”吧!class  A   {&...
    99+
    2023-06-17
  • c++11 chrono的知识点有哪些
    这篇文章主要介绍“c++11 chrono的知识点有哪些”,在日常操作中,相信很多人在c++11 chrono的知识点有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”c++11&nbs...
    99+
    2023-06-21
  • C#中所要知道的知识点有哪些
    本文小编为大家详细介绍“C#中所要知道的知识点有哪些”,内容详细,步骤清晰,细节处理妥当,希望这篇“C#中所要知道的知识点有哪些”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。1.在C#中,类名首字母需大写。如:c...
    99+
    2023-07-05
  • C#多线程的知识点有哪些
    这篇文章主要介绍“C#多线程的知识点有哪些”,在日常操作中,相信很多人在C#多线程的知识点有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”C#多线程的知识点有哪些”的疑惑有所帮助!接下来,请跟着小编一起来...
    99+
    2023-06-17
  • C#操作符基础知识有哪些
    这篇文章主要讲解了“C#操作符基础知识有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“C#操作符基础知识有哪些”吧!C# 操作符基础知识1.算术操作符算术操作符包括加(+)、减(-)、乘...
    99+
    2023-06-17
  • C++ Primer变量的知识点有哪些
    这篇文章主要介绍“C++ Primer变量的知识点有哪些”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“C++ Primer变量的知识点有哪些”文章能帮助大家解决问题。变量的定义形式一般为:类型说明符...
    99+
    2023-06-26
  • C++模板基础知识点有哪些
    这篇文章主要讲解了“C++模板基础知识点有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“C++模板基础知识点有哪些”吧!引入我们对交换函数Swap已经非常熟悉了,但是我们经常会遇到这样的...
    99+
    2023-06-25
  • C++中引用的知识点有哪些
    本篇内容主要讲解“C++中引用的知识点有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“C++中引用的知识点有哪些”吧!引用的概念引用不是新定义一个变量,而是给已存在变量取了一个别名,编译器不...
    99+
    2023-06-29
  • C#加密知识整合(AES,MD5,RSA,SHA256)
    目录aes 对称加密密钥必须是32字节MD5 不可逆加密SHA 256 不可逆加密RSA 非对称加密解密aes 对称加密密钥必须是32字节 using System; using S...
    99+
    2024-04-02
  • linux中OpenSSL密码学基础知识有哪些
    这篇文章主要介绍了linux中OpenSSL密码学基础知识有哪些,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。OpenSSL 简史安全套接字层Secure Socket La...
    99+
    2023-06-15
  • C语言函数的知识点有哪些
    这篇文章主要介绍“C语言函数的知识点有哪些”,在日常操作中,相信很多人在C语言函数的知识点有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”C语言函数的知识点有哪些”的疑惑有所帮助!接下来,请跟着小编一起来...
    99+
    2023-06-30
  • C++函数与重载知识点有哪些
    本文小编为大家详细介绍“C++函数与重载知识点有哪些”,内容详细,步骤清晰,细节处理妥当,希望这篇“C++函数与重载知识点有哪些”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。函数的默认(缺省)参数1、默认参数的定...
    99+
    2023-06-30
  • C++内存管理的知识点有哪些
    这篇文章主要讲解了“C++内存管理的知识点有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“C++内存管理的知识点有哪些”吧!1. 简述下C++的内存分配方式。在C++中,内存可以分为 5...
    99+
    2023-07-05
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作