对称加密(4) .NET对称加密实践

在使用.NET框架提供的加密算法实现类来执行加密任务时,需要准备加密密钥和初始化向量(Initialization Vector,IV)。基于对称加密的特点,在加密数据之后一定要保存好密钥和初始化向量,因为解密要用到它们。但是对于不同的数据加密,要使用不同的密钥和初始化向量,理论上每次新的加密过程都应该使用全新的密钥和初始化向量。

通常需要将加密密钥和初始化向量传递给另一个人,这时候需要使用非对称加密算法来加密密钥和初始化向量,然后在网络上传输。本节主要演示如何使用加密实践类,更多的应用内容会在本书的第四部分介绍。

那么如何创建加密密钥和初始化向量呢?有两种基本方法,一种是使用加密算法实现类的构造函数,另一种是使用GenerateIV()和GenerateKey()方法生成密钥和初始化向量。

使用构造函数创建密钥和初始化向量

先测试构造函数的方法,如代码清单6-5。

代码清单6-5  使用构造函数创建密钥和初始化向量

using System;

using System.Text;

using System.Security.Cryptography;

namespace Encription

{

    classProgram

    {

        staticvoid Main(string[] args)

        {

            AesCryptoServiceProvider acsp = new AesCryptoServiceProvider();

            WriteKeyAndIV(acsp);

            AesManaged am = newAesManaged();

            WriteKeyAndIV(am);

            DESCryptoServiceProvider dsp = new DESCryptoServiceProvider();

            WriteKeyAndIV(dsp);

            TripleDESCryptoServiceProvider tdsp = new TripleDESCryptoServiceProvider();

            WriteKeyAndIV(tdsp);

            RijndaelManaged rm = new RijndaelManaged();

            WriteKeyAndIV(rm);

            Console.Read();

        }

        staticvoid WriteKeyAndIV(SymmetricAlgorithm sa)

        {

            Console.WriteLine(GetStringFromByte(sa.Key));

            Console.WriteLine("*******");

            Console.WriteLine(GetStringFromByte(sa.IV));

            Console.WriteLine("--------------------------");

        }

        staticstring GetStringFromByte(byte[] bytes)

        {

            string s="";

            for (int i = 0; i < bytes.Length; i++)

            {

                s += bytes[i].ToString()+" ";

            }

            return s;

        }

    }

}

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索函数
, 加密
, dsp
, 密钥
, 向量
, console
, 对称
向量和
.net 对称加密、.net 非对称加密、.net 非对称加密算法、非对称加密、对称加密,以便于您获取更多的相关知识。

时间: 2025-01-05 18:15:45

对称加密(4) .NET对称加密实践的相关文章

ASP.NET加密技术的应用(加密类代码参考)

asp.net|参考|加密  /**//**********************Created by Chen************************** *如果你觉得本人的文章好,要引用请尊重著作人的劳动果实,说明 *出处以及原创作者,Thank you!!!   email:aishen944-sohu.com *******************************************************************/ using System;usi

文件夹加密软件学会如何加密重要文件

  现在随着网络的快速发展,提供便捷的同时也带来了许多未知风险,一不小心自己的重要文件资料就容易泄露出去.为了防止这种情况的发生,文件夹加密软件在当今电脑用户的生活工作中是频繁使用,使用它把自己的重要文件加密.文件夹加密,甚至是磁盘加密-总之保护个人信息不留死角,才能更安心.如何才能给文件夹加密或是文件加密呢?复杂的电脑操作我们不一定每个人都会,毕竟电脑高手只是少数人,所以为了让这个问题变得简单化,我们还是先找个实用工具,比如文件夹加密(下载). 文件夹加密操作说来其实不难,我们要实现快速学会如

用超级加密3000给文件加密解密的方法

本软件是一个功能强大.安全高效,简单易用的数据加密和保护软件. 它有超快和最强的文件夹,文件加密功能.数据保护功能,文件夹.文件的粉碎删除以及文件夹伪装等功能. 1.运行软件 双击桌面上的图标 或者点击"开始→程序→超级加密3000→超级加密3000"即可运行该软件.进入软件主界面. 超级加密3000的界面有点类似于资源管理器的界面,看上去非常简洁,功能按钮在上方一目了然.左侧的目录树空格及右侧的目录内容空格使得文件的选择非常方便. 二.蔠级加密3000的功能之一磁盘保护 该软件还提供

为什么商城系统中只有密码要加密,而用户名不需要加密呢?用户名加密更安全?

问题描述 为什么商城系统中只有密码要加密,而用户名不需要加密呢?用户名加密更安全? 为什么商城系统中只有密码要加密,而用户名不需要加密呢?用户名加密更安全? 解决方案 用户名不需要加密,因为没有密码,无法登录系统.用户名公开没问题 解决方案二: 用户名可以加密,如果你觉得有必要的话.但是一般是没不要的加,为何要给自己添加压力了?都是可怜的程序员. 解决方案三: 没必要,因为: 1.一般登录都是用SSL, 可以通过SSL加密整个传输过程(当然也可以不加密,只让SSL保证数据完整性和身份认证). 2

des加密-DES加密问题,DES加密是8位输出的,为什么网上下工具都不是8位输出,在线DES也不是8位输出

问题描述 DES加密问题,DES加密是8位输出的,为什么网上下工具都不是8位输出,在线DES也不是8位输出 DES加密问题,DES加密是8位输出的,为什么网上下工具都不是8位输出,在线DES也不是8位输出 解决方案 谁告诉你"DES加密是8位输出的".加密块的大小可以是任意的. 这里找到一个8bithttp://blog.csdn.net/linfeng999/article/details/29592591 你可以参考下.而且要注意密钥

各种加密解密函数(URL加密解密、sha1加密解密、des加密解密)

原文:各种加密解密函数(URL加密解密.sha1加密解密.des加密解密) 普通hash函数如md5.sha1.base64等都是不可逆函数.虽然我们利用php可以利用这些函数写出可逆函数来.但是跨语言时这类可逆函数非常难搞定.所以这时尽量使用AES DES RC4 Rabbit TripleDes这些方法. 包含超时的加密解密函数 1 /** 2 * 加密 3 * @param string $string 要加密或解密的字符串 4 * @param string $operation 加密

js-CryptoJS aes256加密与java aes256加密互通怎么做

问题描述 CryptoJS aes256加密与java aes256加密互通怎么做 CryptoJS aes256加密与java aes256加密互通怎么做,KEY与IV怎么同步比较安全 解决方案 没啥办法,总要有一个可以信任的信道传输密码.鸡生蛋,蛋生鸡

Android实现短信加密功能(发送加密短信、解密本地短信)_Android

短信加密此类功能由于新手学习的需求量较小,所以在网上很少有一些简单的demo供新手参考.小编做到此处也是花了比较多的时间自我构思,具体的过程也是不过多描述了,讲一下demo的内容.       demo功能: 1.可以发送短信并且加密(通过改变string中的char) 2.能够查看手机中的短信 3.能够给收到的加密短信解密. 涉及到的知识点: 1.intent bundle传递 2.ContentResolver获取手机短信 3.listveiw与simpleAdapter 4.发送短信以及为

vb加密函数,可加密中文,有密码

问题描述 vb加密函数,可加密中文,有密码 求大神帮忙 加密函数 要求可加密中文 而且可根据给定的密码加密 加密(要加密的字符串,密码) 然后密码不同,加密后的就不同 谢谢了 解决方案 最简单的是先做base64编码,然后不存在什么中文的问题了,再xor下.解密相反,先xor,然后base64解码 如果要完整代码,请先采纳下. 解决方案二: Option Explicit Private Const cstBase64 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghi