首页 > 开发 > 综合 > 正文

源码推荐:使用C#编写DES加密程序的framework

2024-07-21 02:25:15
字体:
来源:转载
供稿:网友
                   源码推荐:使用c#编写des加密程序的framework
                                batman
    还是我的老观点,对于新东西我们要不断练习才能够掌握它。所以
我就不写些抽象的概念了,打算以后不定期给出一些实际的代码,呵呵
在微软的帮助中,喜欢把它带的例子称为它的新技术的framework,我在
实际编程中确实感觉如此,我们往往是根据这些实例代码来编写自己的
实际应用的,所以我也用了framework这个名词。 :)
    这个例子中演示了如何使用c#中的加密包进行des算法加密,由于
ngwnet中带的帮助实在是简单,和没有一样,呵呵,不过大家可以借助
这个例子一窥des加密的用法。
des_demo.cs代码如下:

using system;
using system.security.cryptography;
using system.io;
using system.text;

public class encryptstringdes {

    public static void main(string[] args) {
        if (args.length < 1) {
            console.writeline("usage: des_demo <string-to-encrypt>", args[0]);
            return;
        }

        // 使用utf8函数加密输入参数
        utf8encoding utf8encoding = new utf8encoding();
        byte[] inputbytearray = utf8encoding.getbytes(args[0].tochararray());

        // 方式一:调用默认的des实现方法des_csp.
        des des = des.create();
        // 方式二:直接使用des_csp()实现des的实体
        //des_csp des = new des_csp();

        // 初始化des加密的密钥和一个随机的、8比特的初始化向量(iv)
        byte[] key = {0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef};
        byte[] iv = {0x12, 0x34, 0x56, 0x78, 0x90, 0xab, 0xcd, 0xef};
        des.key = key;
        des.iv = iv;

        // 建立加密流
          symmetricstreamencryptor sse = des.createencryptor();

        // 使用cryptomemorystream方法获取加密过程的输出
        cryptomemorystream cms = new cryptomemorystream();

        // 将symmetricstreamencryptor流中的加密数据输出到cryptomemorystream中
        sse.setsink(cms);

        // 加密完毕,将结果输出到控制台
        sse.write(inputbytearray);
        sse.closestream();

        // 获取加密数据
        byte[] encrypteddata = cms.data;

        // 输出加密后结果
        console.writeline("加密结果:");
        for (int i = 0; i < encrypteddata.length; i++) {
            console.write("{0:x2} ",encrypteddata[i]);
        }
        console.writeline();

        //上面演示了如何进行加密,下面演示如何进行解密
        symmetricstreamdecryptor ssd = des.createdecryptor();
        cms = new cryptomemorystream();
        ssd.setsink(cms);
        ssd.write(encrypteddata);
        ssd.closestream();

        byte[] decrypteddata = cms.data;
        char[] decryptedchararray = utf8encoding.getchars(decrypteddata);
        console.writeline("解密后数据:");
        console.write(decryptedchararray);
        console.writeline();
    }
}

编译:
d:/csharp>csc des_demo.cs
microsoft (r) c# compiler version 7.00.8905 [ngws runtime 2000.14.1812.10]
copyright (c) microsoft corp 2000. all rights reserved.

运行实例:
d:/csharp>des_demo.exe 使用c#编写des加密程序的framework
加密结果:
3d 22 64 c6 57 d1 c4 c3 cf 77 ce 2f d0 e1 78 2a 4d ed 7a a8 83 f9 0e 14 e1 ba 38
7b 06 41 8d b5 e9 3f 00 0d c3 28 d1 f9 6d 17 4b 6e a7 41 68 40
解密后数据:
使用c#编写des加密程序的framework
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表