算法-C#AES加密时,怎么产生密钥和密钥向量?

问题描述

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

算法-C#AES加密时,怎么产生密钥和密钥向量?的相关文章

AES加密时抛出java.security.InvalidKeyException:&amp;#160;Illegal&amp;#160;key&amp;#160;size&amp;#160;or&amp;#160;def

原文:AES加密时抛出java.security.InvalidKeyException: Illegal key size or def  使用AES加密时,当密钥大于128时,代码会抛出 java.security.InvalidKeyException: Illegal key size or default parameters Illegal key size or default parameters是指密钥长度是受限制的,java运行时环境读到的是受限的policy文件.文件位于$

数据传输加密非对称加密算法以及对称算法-RSA+AES

转载:http://blog.csdn.net/chay_chan/article/details/58605605 源码:https://github.com/Javen205/IJPay 数据传输加密   在开发应用过程中,客户端与服务端经常需要进行数据传输,涉及到重要隐私信息时,开发者自然会想到对其进行加密,即使传输过程中被"有心人"截取,也不会将信息泄露.对于加密算法,相信不少开发者也有所耳闻,比如MD5加密,Base64加密,DES加密,AES加密,RSA加密等等.在这里我主

des加密时密钥问题-关于C# DES加密时密钥问题 求解答

问题描述 关于C# DES加密时密钥问题 求解答 为什么有些des.Key = ASCIIEncoding.ASCII.GetBytes(sKey); des.IV = ASCIIEncoding.ASCII.GetBytes(sKey); 是这样写 而有一些是这样写 des.Key = ASCIIEncoding.ASCII.GetBytes(System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(s

关于C# DES加密时密钥问题

问题描述 staticvoidMain(string[]args){//加密之前的字符串:http://www.dtcms.net/upgrade.ashx?u={0}&i={1}&v={2}//然而我没对"http://www.dtcms.net/upgrade.ashx?u={0}&i={1}&v={2}"此字符串进行加密,可我可以从下面的代码运行之后解密出字符串//"785528A58C55A6F7D9669B9534635E6070A9

原生js的RSA和AES加密解密算法_javascript技巧

本文实例为大家分享了js中RSA和AES加密解密详细代码,供大家参考,具体内容如下 <!doctype html> <html> <head> <meta charset='UTF-8'> </head> <body> <div class='test'></div> <script type="text/javascript"> function encrypt(data, k

标准PHP的AES加密算法类

 AES是分组密钥,算法输入128位数据,密钥长度也是128位.用Nr表示对一个数据分组加密的轮数(加密轮数与密钥长度的关系如表1所列).每一轮都需要一个与输入分组具有相同长度的扩展密钥Expandedkey(i)的参与.     分享一个标准PHP的AES加密算法类,其中mcrypt_get_block_size('rijndael-128', 'ecb');,如果在不明白原理的情况下比较容易搞错,可以通过mcrypt_list_algorithms函数查看你需要的加密算法标识.   代码如下

Node.js中AES加密和其它语言不一致问题解决办法

 这篇文章主要介绍了Node.js中AES加密和其它语言不一致问题解决办法,例如和C#.JAVA语言相互通信时,需要的朋友可以参考下 例子一:   这几天被一个问题困扰着.Nodejs的AES加密和Java,C#加密出来的不一致.当然,这样就不能解密了.纠结了许久:后来还是实在不行了,看了下源代码,要不然还得继续纠结下去.网上说,通常的nodejs AES和其他语言实现不一样.好吧~~或许吧. nodejs的crypto模块.    代码如下: var crypto = require('cry

Android数据加密之Aes加密_Android

前言: 项目中除了登陆,支付等接口采用rsa非对称加密,之外的采用aes对称加密,今天我们来认识一下aes加密.  其他几种加密方式:  •Android数据加密之Rsa加密  •Android数据加密之Aes加密  •Android数据加密之Des加密  •Android数据加密之MD5加密  •Android数据加密之Base64编码算法  •Android数据加密之SHA安全散列算法  什么是aes加密?       高级加密标准(英语:Advanced Encryption Standa

标准PHP的AES加密算法类_php技巧

分享一个标准PHP的AES加密算法类,其中mcrypt_get_block_size('rijndael-128', 'ecb');,如果在不明白原理的情况下比较容易搞错,可以通过mcrypt_list_algorithms函数查看你需要的加密算法标识. 复制代码 代码如下: <?php /**  * AES128加解密类  * @author dy  *  */ defined('InEjbuy') or exit('Access Invalid!'); class Aes{     //密钥