问题描述
- C#AES加密时,怎么产生密钥和密钥向量?
- 各位大神好,最近在做一个一个项目,牵扯到加密,网上搜到了加密算法,但是不知道AES的机密密钥和密钥向量怎么产生?烦请各位为小弟指点一下~
解决方案
/// AES加密 /// </summary> /// <param name=""inputdata"">输入的数据</param> /// <param name=""iv"">向量128位</param> /// <param name=""strKey"">加密密钥</param> /// <returns></returns> public static byte[] AESEncrypt(byte[] inputdata byte[] iv string strKey) { //分组加密算法 SymmetricAlgorithm des = Rijndael.Create(); byte[] inputByteArray = inputdata;//得到需要加密的字节数组 //设置密钥及密钥向量 des.Key = Encoding.UTF8.GetBytes(strKey.Substring(0 32)); des.IV = iv; using (MemoryStream ms = new MemoryStream()) { using (CryptoStream cs = new CryptoStream(ms des.CreateEncryptor() CryptoStreamMode.Write)) { cs.Write(inputByteArray 0 inputByteArray.Length); cs.FlushFinalBlock(); byte[] cipherBytes = ms.ToArray();//得到加密后的字节数组 cs.Close(); ms.Close(); return cipherBytes; } } } /// <summary> /// AES解密 /// </summary> /// <param name=""inputdata"">输入的数据</param> /// <param name=""iv"">向量128</param> /// <param name=""strKey"">key</param> /// <returns></returns> public static byte[] AESDecrypt(byte[] inputdata byte[] iv string strKey) { SymmetricAlgorithm des = Rijndael.Create(); des.Key = Encoding.UTF8.GetBytes(strKey.Substring(0 32)); des.IV = iv; byte[] decryptBytes = new byte[inputdata.Length]; using (MemoryStream ms = new MemoryStream(inputdata)) { using (CryptoStream cs = new CryptoStream(ms des.CreateDecryptor() CryptoStreamMode.Read)) { cs.Read(decryptBytes 0 decryptBytes.Length); cs.Close(); ms.Close(); } } return decryptBytes; }
解决方案二:
AES加密 自定义密钥生成
时间: 2024-11-08 22:23:58