DES算法入口参数

DES算法的入口参数有三个:Key、Data、Mode。其中Key为7个字节共56位,是DES算法的工作密钥。Data为8个字节64位,是要被加密或解密的数据;Mode为DES的工作方法,有两种:加密或解密。

  1. 加密解密文件

             /// <summary>
    /// Enctypt File
    /// </summary>
    /// <param name="sInputFilename"></param>
    /// <param name="sOutputFilename"></param>
    /// <param name="sKey"></param>
    public void EncryptFile(string sInputFilename, string sOutputFilename, string sKey)
    {
    DESCryptoServiceProvider DES = new DESCryptoServiceProvider();
    //A 64 bit key and IV is required for this provider.
    //Set secret key For DES algorithm.
    DES.Key = ASCIIEncoding.ASCII.GetBytes(sKey);
    //Set initialization vector.
    DES.IV = ASCIIEncoding.ASCII.GetBytes(sKey); FileStream fin = null;
    FileStream fout = null;
    CryptoStream cryptoStream = null;
    try
    {
    fin = new FileStream(sInputFilename, FileMode.Open, FileAccess.Read);
    fout = new FileStream(sOutputFilename, FileMode.OpenOrCreate, FileAccess.Write);
    cryptoStream = new CryptoStream(fout, DES.CreateEncryptor(), CryptoStreamMode.Write); byte[] bin = new byte[]; //This is intermediate storage for the decryption.
    long rdlen = ; //This is the total number of bytes written.
    long totlen = fin.Length; //This is the total length of the input file.
    int len; //This is the number of bytes to be written at a time. //Read from the input file, then encrypt and write to the output file.
    while (rdlen < totlen)
    {
    len = fin.Read(bin, , );
    cryptoStream.Write(bin, , len);
    rdlen = rdlen + len;
    }
    }
    catch (Exception ex)
    {
    throw ex;
    }
    finally
    {
    if (cryptoStream != null) { cryptoStream.Close(); }
    if (fout != null) { fout.Close(); }
    if (fin != null) { fin.Close(); }
    }
    } /// <summary>
    /// Decrypt File
    /// </summary>
    /// <param name="sInputFilename"></param>
    /// <param name="sOutputFilename"></param>
    /// <param name="sKey"></param>
    public void DecryptFile(string sInputFilename, string sOutputFilename,string sKey)
    {
    DESCryptoServiceProvider DES = new DESCryptoServiceProvider();
    //A 64 bit key and IV is required for this provider.
    //Set secret key For DES algorithm.
    DES.Key = ASCIIEncoding.ASCII.GetBytes(sKey);
    //Set initialization vector.
    DES.IV = ASCIIEncoding.ASCII.GetBytes(sKey); FileStream fin = null;
    FileStream fout = null;
    CryptoStream cryptoStream = null;
    try
    {
    fin = new FileStream(sInputFilename, FileMode.Open, FileAccess.Read);
    fout = new FileStream(sOutputFilename, FileMode.OpenOrCreate, FileAccess.Write);
    cryptoStream = new CryptoStream(fin, DES.CreateDecryptor(), CryptoStreamMode.Read); byte[] bin = new byte[]; //This is intermediate storage for the decryption.
    long rdlen = ; //This is the total number of bytes written.
    long totlen = fin.Length; //This is the total length of the input file.
    int len; //This is the number of bytes to be written at a time. //Read from the input file, then encrypt and write to the output file.
    while (rdlen < totlen)
    {
    len = cryptoStream.Read(bin, , );
    if (len == ) { break; }
    fout.Write(bin, , len);
    rdlen = rdlen + len;
    }
    }
    catch(Exception ex)
    {
    throw ex;
    }
    finally
    {
    if (cryptoStream != null) { cryptoStream.Close(); }
    if (fout != null) { fout.Close(); }
    if (fin != null) { fin.Close(); }
    }
    }
  2. 加密解密文本
             /// <summary>
    /// Encrypt Text
    /// </summary>
    public string DesEncrypt(string pToEncrypt, string sKey)
    {
    MemoryStream ms = null;
    CryptoStream ctyptoStream = null;
    try
    {
    DESCryptoServiceProvider des = new DESCryptoServiceProvider();
    des.Key = ASCIIEncoding.ASCII.GetBytes(sKey);
    des.IV = ASCIIEncoding.ASCII.GetBytes(sKey); byte[] inputByteArray = Encoding.ASCII.GetBytes(pToEncrypt); ms = new System.IO.MemoryStream();
    ctyptoStream = new CryptoStream(ms, des.CreateEncryptor(), CryptoStreamMode.Write);
    ctyptoStream.Write(inputByteArray, , inputByteArray.Length);
    ctyptoStream.FlushFinalBlock();
    }
    catch (Exception ex)
    {
    throw ex;
    }
    finally
    {
    if (ctyptoStream != null) { ctyptoStream.Close(); }
    if (ms != null) { ms.Close(); }
    }
    return Convert.ToBase64String(ms.ToArray());
    } /// <summary>
    /// Dectypt Text
    /// </summary>
    public string DesDecrypt(string pToDecrypt, string sKey)
    {
    MemoryStream ms = null;
    CryptoStream ctyptoStream = null;
    try
    {
    DESCryptoServiceProvider des = new DESCryptoServiceProvider();
    des.Key = ASCIIEncoding.ASCII.GetBytes(sKey);
    des.IV = ASCIIEncoding.ASCII.GetBytes(sKey); byte[] inputByteArray = Convert.FromBase64String(pToDecrypt); ms = new System.IO.MemoryStream();
    ctyptoStream = new CryptoStream(ms, des.CreateDecryptor(), CryptoStreamMode.Write);
    ctyptoStream.Write(inputByteArray, , inputByteArray.Length);
    ctyptoStream.FlushFinalBlock();
    }
    catch (Exception ex)
    {
    throw ex;
    }
    finally
    {
    if (ctyptoStream != null) { ctyptoStream.Close(); }
    if (ms != null) { ms.Close(); }
    }
    return Encoding.ASCII.GetString(ms.ToArray());
    }

DES(Data Encryption Standard)数据加密标准的更多相关文章

  1. Oracle 10g R2 Transparent Data Encryption 透明数据加密

    Oracle 10g R2 Transparent Data Encryption 透明数据加密 本章介绍如何使用透明数据加密来保护Oracle数据库中的敏感数据,该功能使您可以加密数据库列并管理加密 ...

  2. SQL Server ->> Transparent Data Encryption(透明化数据加密)

    Comming later... 参考文献: Transparent Data Encryption (TDE)

  3. 目前常用的加密算法有DES(Data Encryption Standard)和IDEA(International Data Encryption Algorithm)国际数据加密算法等,请用工厂方法实现加密算法系统。提交该系统的代码,该系统务必是一个可以能够直接使用的系统,查阅资料完成相应加密算法的实现;

    1.加密算法的类图结构 2.源代码 2.1代码运行截图 2.2代码的目录结构 2.3具体代码 MethodFactory.java package jiami; public interface Me ...

  4. 数据加密标准(DES)详解

    1 简介 1.1 历史 DES(Data Encryption Standard)是由IBM公司在1974年提出的加密算法,在1977年被NIST定位数据加密标准.随后的很多年里,DES都是最流行的对 ...

  5. 3DES(或称为Triple DES)是三重数据加密算法(TDEA,Triple Data Encryption Algorithm)

    3DES(或称为Triple DES)是三重数据加密算法(TDEA,Triple Data Encryption Algorithm)块密码的通称.它相当于是对每个数据块应用三次DES加密算法.由于计 ...

  6. SQL Server安全(9/11):透明数据加密(Transparent Data Encryption)

    在保密你的服务器和数据,防备当前复杂的攻击,SQL Server有你需要的一切.但在你能有效使用这些安全功能前,你需要理解你面对的威胁和一些基本的安全概念.这篇文章提供了基础,因此你可以对SQL Se ...

  7. AES--高级数据加密标准

    AES--高级数据加密标准 对称密码体制的发展趋势将以分组密码为重点.分组密码算法通常由密钥扩展算法和加密(解密)算法两部分组成.密钥扩展算法将b字节用户主密钥扩展成r个子密钥.加密算法由一个密码学上 ...

  8. TDE: Transparent Data Encryption brief introduction

    1. What is TDE? Briefly speaking, TDE is used to encrypted data. 2. The benifits: Belows are come fr ...

  9. Data Encryption Errors After Restoring Microsoft Dynamics CRM Database

    If you’re seeing an error similar to the one above, you’ve probably done a database backup and resto ...

随机推荐

  1. C++创建学生类练习

    /*作业,定义一个学生类*/ /*数据成员:学号.姓名.数学.英语.计算机三科成绩 *成员函数:求总成绩.求三科平均成绩.输出学生信息 *新增一个生日类 2018.4.2 */ #include &l ...

  2. 在cmd下面执行.py文件时提示ModuleNotFoundError 但是 IDE 不报错

    原理是 python 解释器寻找 模块的顺序决定,不细说 简略来讲就是 在 IDE中运行,会自动帮你把项目根目录添加到 PYTHONPATH 中,但是在 cmd 运行需要自己添加. 解决方法: 1. ...

  3. Yaf学习(三)----Yaf类库Library和Model的命名规则

    1.Yaf的library和model的文件命名规则和调用 1.1在项目中,往往需要封装一些,如redis,不同的产品需要用不同的库等等等,这就涉及到封装 1.在 Yaf 中,我们可以写一个单例模式的 ...

  4. 一些斗鱼TV Web API [Some DouyuTv API]

    一些斗鱼TV Web API [Some DouyuTv API]   写在最前 去年TI5前开发了dotaonly.com,网站需要用到各个直播平台API.不像国外网站Twitch那样开放,都有现成 ...

  5. pyecharts数据分析及展示

    仅仅从网上爬下数据当然是不够用的,主要还得对数据进行分析与展示,大部分人都看重薪资,但是薪资数据有的是*k/月,有的是*万/月,还有*万/年等等,就要对数据进行清理 将所有单位统一化,全部换算成统一单 ...

  6. (数据科学学习手札05)Python与R数据读入存出方式的总结与比较

    在数据分析的过程中,外部数据的导入和数据的导出是非常关键的部分,而Python和R在这方面大同小异,且针对不同的包或模块,对应着不同的函数来完成这部分功能: Python 1.TXT文件 导入: 以某 ...

  7. nyoj 525 一道水题【字符串(分割)】

    参考:https://blog.csdn.net/dxx_111/article/details/48154687 #include <iostream> #include <cst ...

  8. HDU 1495 非常可乐 (只是转了个弯的广搜题)

    N - 非常可乐 =========================================================================================== ...

  9. SapScript

    * [OPEN_FORM] SAPscript: フォーム印刷の開始 * [START_FORM] SAPscript: 書式を開始 * [WRITE_FORM] SAPscript: 書式ウィンドウ ...

  10. ibdata1文件损坏时恢复InnoDB单表测试

      Preface       ibdata1 file is a shared system tablespace of innodb engine.Although we always set v ...