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

各位大神好,最近在做一个一个项目,牵扯到加密,网上搜到了加密算法,但是不知道AES的机密密钥和密钥向量怎么产生?烦请各位为小弟指点一下~

0

1个回答

 /// 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;
        }
0
zhang_jiafeng
zhang_jiafeng 你好,谢谢你的回答,但是请认真看我的问题哦~
3 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
C#AES 模块、密钥、填充块加密解密demo
使用C#语言实现AES加密解密工具的实现。
AES加解密[C#实现AES加密解密]
AES加解密[C#实现AES加密解密]
加密: AES(C#)
Aes: 唯一密钥进行加密解密nnnusing System.Security.Cryptography;nnnpublic static string AesEncrypt(string str, string key) n{n string result;n tryn {n if (string.IsNullOrEmpty(str))n {n ...
AES+BASE64双重加密,解密。私钥,向量解析。
使用AES加密,再使用base64编码加密。rn具体细节请看注释。rn/**n * 加密n *n * @param sSrc 加密的明文n * @param sKey 秘钥n * @param iv 向量 16 bytesn * @returnn * @throws Exceptionn */n public static S
C#之AES加密解密
高级加密标准(AES,Advanced Encryption Standard)为最常见的对称加密算法(微信小程序加密传输就是用这个加密算法的)。对称加密算法也就是加密和解密用相同的密钥,具体的加密流程如下图:(原理:转自https://blog.csdn.net/qq_28205153/article/details/55798628)代码实例如下:using System;nusing Sys...
[C#]AES加密算法实现 各大神汇总
npublic static class AesSecretn {n #region 秘钥对nn private const string saltString = &quot;Wolfy@home&quot;;n private const string pWDString = &quot;home@Wolfy&quot;;nn #endregionnn #r...
共享密钥与公开密钥
当你需要在一个购物网站输入账号以及密码时时,含有你的账号与密码信息的数据会被发送到服务器,在发送的过程中,数据会有两种加密形式——共享密钥加密和公开密钥加密。 n 共享密钥加密可以这样理解,服务器为了使数据传输更安全,送给你一把钥匙,这把钥匙可以将数据锁在一个盒子里,当然也可以打开已经锁上的盒子。当数据送至服务器时,服务器会用同样的钥匙打开盒子。这种方法的坏处是,一旦贼人得到钥匙,便可以打开已经锁
C# AES 加密解密示例
AES 是一种对称加密算法。 相对非对称加密,对称加密解密过程速度更快, 适合大数据流实时加密解密。AES 被广泛应用于金融,政府等领域的网络传输。在这里分享一段用 .Net 自带框架 AES 算法调用的示例,以供交流学习。在AES中, 加密解密分享相同的Key和IV。 AES 对字符串加密 public string AesEncrypt(string rawInput, byte[
DES加密之自定义密匙加密与加密算法
自定义密匙进行加密---DES模式下使用密匙规范方法(DESKeySpec)加密时需要56byte位,但是必须传64位因为有8位是效验码n/**自定义密匙加密*/npublic class CiperDemo2 {npublic static final String DES= "DES";npublic static final String key ="12345678"; npub
AES加密,解决了同步问题,和随机密钥和固定密钥,多端通信加密不一致解决办法
1、密钥随机生成。 n/@author wjh/ nimport java.security.InvalidAlgorithmParameterException; nimport java.security.InvalidKeyException; nimport java.security.NoSuchAlgorithmException; nimport java.security.Secu...
RSA加密算法密钥说明
通常所说的1024位RSA算法一般是指模值N的长度约等于1024位,每次运算时明文长度必须小于等于117字节,密文长度固定为128字节。RSA公钥和私钥一般指:rn        公钥:(e,N)rn        私钥:(d,N)rnrn其中,e指公钥指数,一般选择65537(0x10001);N指模值;d指私钥指数。
Java基于对称密钥的加密解密
rnnpackage com.liusong;rnrn/**rn * 对称密钥的生成以及以对象序列化的方式保存rn *rn */rnrnimport java.io.*;rnimport javax.crypto.*;rnrnpublic class Skey_DES rn{rn public static void main( String[] args ) throws Exceptio...
AES加密与解密(秘钥)
代码如下:import org.slf4j.Logger;import org.slf4j.LoggerFactory;import sun.misc.BASE64Decoder;import sun.misc.BASE64Encoder;import javax.crypto.Cipher;import javax.crypto.KeyGenerator;import javax.crypto....
字符串DES加密解密,可自定义KEY和向量IV
基于.net3.5,因此需要此环境才能运行。key和IV必须为8位,程序未对错误进行处理。(含源码)
java DES生成密钥加密解密
java DES生成密钥加密解密rnpackage com.softscape.socket;rnrnimport javax.crypto.Cipher;rnimport javax.crypto.KeyGenerator;rnimport javax.crypto.SecretKey;rnimport javax.crypto.SecretKeyFactory;rnimport javax.crypto.s...
DES加密---随机获取密匙加密
1.数据加密DES--随机获取密匙加密rnpublic static void main(String[] args) throws Exception{rn//保存密钥rnsaveKey("my.key");rn//获取密钥rnSecretKey getKey = (SecretKey) getKey("my.key");rn//通过密钥加密后rnString result= "测试加密";rn
S-DES子密钥产生
#include n#include n#include nusing namespace std;nvoid P10_(int K[],int P10[],int K0[])n{n for(int i=1;i<=10;i++)n K0[i]=K[P10[i]];n}nvoid P8_(int K[],int P8[],int K0[])n{n for(int i=1;i<=8;
C# IKVM 生成 java AES 密钥并加解密
C#使用IKVM 生成 java AES 密钥并实现加解密,需要引用bin目录下5个dll文件。
C#的3DES的加密与解密算法
C#的3DES的加密与解密算法,真正的3DES算法。一个密钥一个向量。
密钥的生成与加密
详细介绍密钥的生成与加密,并有实验项目,进行能力实践
使用指纹秘钥加密解密字符串
由于使用指纹识别功能需要一个加密对象(CryptoObject)该对象一般是由对称加密或者非对称加密获得。* 纯本地的使用指纹识别功能,只需要对称加密即可;* 使用指纹识别的对称加密功能的主要流程如下:* 1、使用 KeyGenerator 创建一个对称密钥,存放在 KeyStore 里。* 2、设置 KeyGenParameterSpec.Builder.setUserAuthenticatio...
明文和密文是什么意思,以及flex与后台交互,Flex根据明文和密钥,采用DES加密算法进行加密,生成密文。
假设你的密码是:123456,明文传输,就是在网络中直接传送123456;rn密文传输,就是加密以后在传送,比如加密后变成abcdef,对方收到后还需要解密还原成:123456;rn因此密文安全性高,但是对系统要求也会高些。rnrnrnrnrnFlex根据明文和密钥,采用DES加密算法进行加密,生成密文:rnrnrnrnprivate function result_getUserInfo(eve
DES算法密钥
public class DesUtils {n /** n * DES算法密钥 n */ n private static final byte[] DES_KEY = { 21, 1, -110, 82, -32, -85, -128, -65 }; n /** n * 数据加密,算法(DES) n * n * @param data
RSA密钥生成、加密解密、数据签名验签
公钥私钥生成n准备工作基础的帮助类n使用java代码生成n使用openssl生成n加解密n数据签名及验签n数据加解密及签名验签测试n注意项公钥、私钥生成准备工作,基础的帮助类nbase64的数据帮助类 n代码基于jar包javabase64-1.3.1.jarimport java.io.ByteArrayInputStream;nimport java.io.ByteArrayOutputStre
C# 加密算法AES
using System;nusing System.Security.Cryptography;nusing System.Text;nnnamespace XiaoFeng.Cryptographyn{n /// &amp;lt;summary&amp;gt;n /// AES加密解密n /// version : 1.0.0n /// &amp;lt;/summary&amp;gt;n pub...
nodejs使用md5带秘钥加密
var crypto = require('crypto')n/**n *@param str 字符串n @param key 秘钥n */n function md5(str,key){n var decipher = crypto.createHash('md5',key)n if(key){n return decipher.update(str).d
php 生成加密公钥加密私钥
1.生成公钥私钥 win下必须要openssl.cof支持 liunx一般已自带安装$config = array(n //&quot;digest_alg&quot; =&amp;gt; &quot;sha512&quot;,n &quot;private_key_bits&quot; =&amp;gt; 512, //字节数 512 1024 2048 4096 等n &quot;private_...
JAVA DES 秘钥问题
个人博客原文地址:http://www.ltang.me/2015/11/06/java-des-secret-key/nn背景nn在url动态加解密中,我使用的是DES加解密,秘钥使用当前系统时间转换为的小时数:nnn n1n2n3n4n5n6n7n8n9n10nn n n n public static String encrypt(String data) throws Ex...
Android中AES的加密和解密以及秘钥安全问题
rnimport android.content.Context;rnimport android.text.TextUtils;rnrnimport android.util.Base64;rnrnimport com.yzzh.cateringsystem.BuildConfig;rnimport com.yzzh.cateringsystem.R;rnrnimport java.math.BigInteger...
一段AES/CBC/NoPadding方式加密的文件及密钥和初始向量
一段AES/CBC/NoPadding方式加密的文件及密钥和初始向量,可作为参考来测试自己AES程序正确与否
rsa数字签名(加密和解密)
rsa数字签名,产生密钥,加密,解密 等等。。。。。。
明文密文用密钥加密解密
设明文P=P0P1P2…Pn和密钥K=K0K1K2…Km(n>=m)中的字符Pi(1<=i<=n)或Kj(1<=j<=m)的ASCII为00~7FH,用密钥K对明文P进行加密得到密文C=C0C1C2…Cn, 用密钥K对密文C解密得到明文P。 加密: Ci=Pi+Kj (j=i mod (m+1)) (当Ci<=7FH) Ci=Pi+Kj-80H (j=i mod (m+1)) (当Ci>7FH) 解密:: Pi=Ci-Kj (j=i mod (m+1)) (当Ci>=Kj) Pi=Ci-Kj+80H (j=i mod (m+1)) (当Ci<Kj)
公钥和私钥原理
以下为转载:公钥和私钥原理2005年03月01日 17:06:00阅读数:22313      一直以来对公钥和私钥都理解得不是很透彻,感觉到模棱两可,心里直打鼓呢。公钥怎么会事?私钥怎么会事?工作原理是怎么的?今天在网上找了半天,通过查看大家对这个密钥对的理解,总算弄清楚了,咱就把我的心得写出来给大家对密钥对有疑问的同志们看看。      公钥和私钥就是俗称的不对称加密方式,是从以前的对称加密(...
RSA的密钥对产生和加解密的python实现
该文档用python实现产生适当大小的密钥对,并实现加密和解密的操作,适合初学RSA加解密和python基础的学生进行使用。
详解 QUIC 加密握手中共享密钥的生成过程
1、基本概要nnQUIC 传输的数据几乎都是要加密的,关于加密算法这里不做介绍,加密必然需要用到密钥;nQUIC 中的加密密钥有两个 initial key 和 forword-secure key。前者用于实现 0-RTT 的握手,后者则用于握手成功以后整个会话的数据加密;nQUIC 的密钥使用 Diffe-Hellman 算法生成;nn2、解析nnnDiffe-Hellman 算法的密钥生成过...
以DES的方式实现对称加密,并提供密钥
注释都在代码里了,干了:rnimport javax.crypto.Cipher;nimport javax.crypto.KeyGenerator;nimport javax.crypto.SecretKey;nimport javax.crypto.spec.SecretKeySpec;nimport javax.xml.bind.annotation.adapters.HexBinaryAd
【基础原理】会话秘钥
【前言】           最近在做民生银行密盾的项目, 业务中反复听到会话秘钥加密与用户秘钥加密。 比较好奇会话秘钥是什么,所以查询了一下相关的概念。【正文】          会话密钥(session key)也称为 数据加密密钥 或者工作密钥,是保证用户跟其它计算机或者两台计算机之间安全通信会话而随机产生的加密和解密密钥,它可由通信用户之间进行协商得到。它一般是动态地、仅在需要进行会话数据...
密钥是一种参数
总是搞不懂密钥,也在心理上认为它让人迷糊。 n但是,密钥是一种参数,这样是不是好理解点,特别是作为程序开发者来说。nn沿着密钥的理解,就理解了对称密钥和非对称密钥。对称密钥就是加密和解密是同一个。 n非对称就是加密和解密用的密钥(即输入参数)不是同一个。 nRSA是非对称的,它的加密密钥是公开的。
Java实现密钥分配(RSA+DES混合加密)
密钥分配(RSA+DES混合加密含源程序) - lly1122334的博客 - CSDN博客 http://blog.csdn.net/lly1122334/article/details/78959639
用 OPENSSL 生成不同格式的密钥
用 OPENSSL 生成不同格式的密钥nn密钥 key 值包括n加密算法: RSA/DSA/ECCn加密位数: 1024/2048/4096n密钥口令:加密方式有很多nn在使用 DSA/ECC 加密算法时,首先需要生成算法参数文件 param-filen1. 生成 RSA 加密算法密钥n# openssl genrsa -out rsakey.pem 4096nn或者是这个指
文章热词 机器学习教程 Objective-C培训 交互设计视频教程 颜色模型 设计制作学习
相关热词 mysql关联查询两次本表 native底部 react extjs glyph 图标 黑马java就业班密钥 区块链加密课程