• 数据加密标准(DES)的C#实现(2)


    /*
     * 数据加密标准(DES)的C#实现(2)
     * 
     * 采用随机的密钥Key和初始化向量IV加密
     * 使用随机密码的好处:系统不会产生弱密钥
     * 备注:采用Base64编码格式输出密文、密钥和初始化向量
     * 
     * 夏春涛 Email:xChuntao@163.com 
     * Blog:
    http://bluesky521.cnblogs.com
     * 运行环境:.net2.0 framework
     
    */


    /* 
     * 关于DES加密中的初始化向量IV:
     * 对于给定的密钥 k,不使用初始化向量的简单块密码将同一个纯文本输入块加密为
     * 同一个密码文本输出块。如果您的纯文本流中有重复块,则您的密码文本流中也会
     * 有重复块。如果未经授权的用户知道了您的纯文本块结构的任何信息,他们就可以
     * 利用该信息来解密已知的密码文本块,并有可能重新获得您的密钥。为了防止这个
     * 问题,前一个块中的信息被混合到下一个块的加密过程中。这样一来,两个相同的
     * 纯文本块的输出就变得不一样了。由于此技术使用前一个块加密下一个块,因此需
     * 要初始化向量来加密数据的第一个块。 
     
    */


    using System;
    using System.Collections.Generic;
    using System.Text;
    using System.Security.Cryptography;
    using System.IO;

    namespace DES_App2
    {
        
    class Program
        
    {
            
    static void Main(string[] args)
            
    {
                
    string str_plain_text = "How are you?";
                Console.WriteLine(
    "原文:" + str_plain_text);

                
    string KEY_64 = ""
                
    string IV_64 = "";  

                
    string str_cypher_text = DES_Encrypt(str_plain_text,out KEY_64,out IV_64);
                Console.WriteLine(
    "密文:" + str_cypher_text);

                Console.WriteLine(
    "解密:" + DES_Decrypt(str_cypher_text, KEY_64, IV_64));

                Console.WriteLine(
    "本次密钥:" + KEY_64);
                Console.WriteLine(
    "本次初始化向量:" + IV_64);
                Console.WriteLine();
            }


            
    DES加密/解密
        }

    }

    源码附件:/Files/bluesky521/DES_Hash_Demo.rar

  • 相关阅读:
    Activiti学习笔记1 — 下载与开发环境的配置
    JavaScript实现本地图片上传前进行裁剪预览
    我国县及县级以上城市编码
    一些小技巧
    NodeJS学习之异步编程
    NodeJS学习之网络操作
    NodeJS学习之文件操作
    Sass和Compass设计师指南
    Sass
    CKEditor配置及使用
  • 原文地址:https://www.cnblogs.com/SummerRain/p/1005570.html
Copyright © 2020-2023  润新知