zoukankan      html  css  js  c++  java
  • C# DES加密字符串的一些知识

    DES 加密的一些名词 : 原字符串 加密后字符串 密钥 与 向量

    1。将原字符串转为 字节数组.使用 UTF8解码。

    byte[] InputStrArr = System.Text.Encoding.UTF8.GetBytes(InputStr);

    2.得到密钥与向量的字节数组 都为8位。

    byte[] key ;

    byte[] iv;

    // 创建一个DES

    DESCryptoServiceProvider des = new DESCryptoServiceProvider();

    // 创建一个内存流,用来将加密后的字节写入。
    MemoryStream ms = new MemoryStream();

    // 创建一个加密流。 他的第一个参数是一个流,可以是刚才定义的内存流 或是什么文件流都可以。 

    // 第二个参数是使用刚才定义的 DES 及密钥与向量.来生成一个加密/解密 器。加密为 CreateEncryptor,解密为 CreateDecryptor.

    // 第三个参数是,这个加密流的模式,是写入的还是读出来的。 一般加密用写,解密用读。
    CryptoStream cs = new CryptoStream(ms, des.CreateEncryptor(keyArr, ivArr), CryptoStreamMode.Write);

    // 使用这个加密流, 将,原字符串,写入内存流

    cs.write(inputStrArr,0,inputStrArr.length);

    cs.FlushFinalBlock();
    cs.Close();

    // 得到内存流的字节数组.
    byte[] result = ms.ToArray();
    ms.Close();
    // 最后的结果返回一个 Base64String.

    // 这里比较重要。要不然,有可能解密时说什么要解密的字符串长度有问题

    return Convert.ToBase64String(result);

    -----------解密时。

    把输入的加密后的字符串转成字节数组,就不能使用 Text.Encoding了。 需要使用Convert.FromBase64String(cipherStr); 与加密的呼应。这样确保了字符串的格式正确。

    在最后得到解密后的字符串时。 再使用 UTF8解码。 就可以正确的解出原字符串了。

  • 相关阅读:
    【288】◀▶ 博客园黑色代码主题实现
    【287】◀▶ arcpy 常用类说明
    【286】◀▶ Python 内置函数说明
    LeetCode Insert Interval
    Craking the coding interview 面试题:完美随机洗牌
    遭遇多线程bug (1)
    全情投入是做好工作的基础——Leo鉴书39
    《Java 并发编程实战》读书笔记之二:图文讲述同步的另一个重要功能:内存可见性
    视图控制器
    Chapter 1. OpenGL基础回顾
  • 原文地址:https://www.cnblogs.com/easyfrog/p/2773597.html
Copyright © 2011-2022 走看看