您的位置:程序门 -> .net技术 -> c#



des加密问题


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


des加密问题[已结贴,结贴人:tyq0319]
发表于:2007-02-07 10:06:24 楼主
using   system;
using   system.data;
using   system.configuration;
using   system.collections;
using   system.web;
using   system.web.security;
using   system.web.ui;
using   system.web.ui.webcontrols;
using   system.web.ui.webcontrols.webparts;
using   system.web.ui.htmlcontrols;

using   system.text;
using   system.security.cryptography;
using   system.io;
public   partial   class   default2   :   system.web.ui.page
{
        private     string   secretkey1= "aa ";
        private   string   secretkey2= "bb ";

        protected   void   page_load(object   sender,   eventargs   e)
        {
                this.label1.text   =   encrypt1( "aa ");
             
        }
        ///   <summary>
        ///   一次加密
        ///   </summary>
        ///   <param   name= "ptoencrypt "> 加密内容 </param>
        ///   <returns> </returns>
        private   string   encrypt1(string   ptoencrypt)
        {
                string   encryptstring   =   " ";
                try
                {
                        descryptoserviceprovider   des   =   new   descryptoserviceprovider();
                        byte[]   inputbytearray   =   encoding.default.getbytes(ptoencrypt);

                        des.key   =   asciiencoding.ascii.getbytes(secretkey1);
                        des.iv   =   asciiencoding.ascii.getbytes(secretkey1);
                        memorystream   ms   =   new   memorystream();
                        cryptostream   cs   =   new   cryptostream(ms,   des.createencryptor(),   cryptostreammode.write);
                        cs.write(inputbytearray,   0,   inputbytearray.length);
                        cs.flushfinalblock();
                        stringbuilder   ret   =   new   stringbuilder();
                        foreach   (byte   b   in   ms.toarray())
                        {
                                ret.appendformat( "{0:x2} ",   b);
                        }
                        encryptstring   =   encrypt2(ret.tostring());
                }
                catch
                {
                        encryptstring   =   "encryptfailing ";
                }
                return   encryptstring;
        }

        ///   <summary>
        ///   二次加密
        ///   </summary>
        ///   <param   name= "ptoencrypt "> 加密内容 </param>
        ///   <returns> </returns>
        private   string   encrypt2(string   ptoencrypt)
        {
                string   encryptstring   =   " ";
                try
                {
                        descryptoserviceprovider   des   =   new   descryptoserviceprovider();
                        byte[]   inputbytearray   =   encoding.default.getbytes(ptoencrypt);
                        des.key   =   asciiencoding.ascii.getbytes(secretkey2);
                        des.iv   =   asciiencoding.ascii.getbytes(secretkey2);
                        memorystream   ms   =   new   memorystream();
                        cryptostream   cs   =   new   cryptostream(ms,   des.createencryptor(),   cryptostreammode.write);
                        cs.write(inputbytearray,   0,   inputbytearray.length);
                        cs.flushfinalblock();
                        stringbuilder   ret   =   new   stringbuilder();
                        foreach   (byte   b   in   ms.toarray())
                        {
                                ret.appendformat( "{0:x2} ",   b);
                        }
                        encryptstring   =   ret.tostring();
                }
                catch
                {
                        encryptstring   =   "encryptfailing ";
                }
                return   encryptstring;
        }

        ///   <summary>
        ///   一次解密
        ///   </summary>
        ///   <param   name= "ptodecrypt "> 解密内容 </param>
        ///   <returns> </returns>
        private   string   decrypt1(string   ptodecrypt)
        {
                string   encryptstring   =   " ";
                memorystream   ms   =   new   memorystream();
                try
                {
                        descryptoserviceprovider   des   =   new   descryptoserviceprovider();
                        byte[]   inputbytearray   =   new   byte[ptodecrypt.length   /   2];
                        for   (int   x   =   0;   x   <   ptodecrypt.length   /   2;   x++)
                        {
                                int   i   =   (convert.toint32(ptodecrypt.substring(x   *   2,   2),   16));
                                inputbytearray[x]   =   (byte)i;
                        }
                        des.key   =   asciiencoding.ascii.getbytes(secretkey2);
                        des.iv   =   asciiencoding.ascii.getbytes(secretkey2);
                        cryptostream   cs   =   new   cryptostream(ms,   des.createdecryptor(),   cryptostreammode.write);
                        cs.write(inputbytearray,   0,   inputbytearray.length);
                        cs.flushfinalblock();
                        stringbuilder   ret   =   new   stringbuilder();
                        encryptstring   =   decrypt2(system.text.encoding.default.getstring(ms.toarray()));
                }
                catch
                {
                        encryptstring   =   "encryptfailing ";
                }
                return   encryptstring;
        }

        ///   <summary>
        ///   二次解密
        ///   </summary>
        ///   <param   name= "ptodecrypt "> 解密内容 </param>
        ///   <returns> </returns>
        private   string   decrypt2(string   ptodecrypt)
        {
                string   encryptstring   =   " ";
                memorystream   ms   =   new   memorystream();
                try
                {
                        descryptoserviceprovider   des   =   new   descryptoserviceprovider();
                        byte[]   inputbytearray   =   new   byte[ptodecrypt.length   /   2];
                        for   (int   x   =   0;   x   <   ptodecrypt.length   /   2;   x++)
                        {
                                int   i   =   (convert.toint32(ptodecrypt.substring(x   *   2,   2),   16));
                                inputbytearray[x]   =   (byte)i;
                        }
                        des.key   =   asciiencoding.ascii.getbytes(secretkey1);
                        des.iv   =   asciiencoding.ascii.getbytes(secretkey1);
                        cryptostream   cs   =   new   cryptostream(ms,   des.createdecryptor(),   cryptostreammode.write);
                        cs.write(inputbytearray,   0,   inputbytearray.length);
                        cs.flushfinalblock();
                        stringbuilder   ret   =   new   stringbuilder();
                        encryptstring   =   system.text.encoding.default.getstring(ms.toarray());
                }
                catch
                {
                        encryptstring   =   "encryptfailing ";
                }
                return   encryptstring;
        }  
}


//问题
des.key   =   asciiencoding.ascii.getbytes(secretkey1);
                        des.iv   =   asciiencoding.ascii.getbytes(secretkey1);
这两句执行就出错,请问是什么原因?
发表于:2007-02-07 10:24:371楼 得分:20
key   太短
string   secretkey1   =   "aaaaaaaa ";
   
*****************************************************************************
欢迎使用csdn论坛专用阅读器   :   csdn   reader(附全部源代码)  

最新版本:20070130

http://www.cnblogs.com/feiyun0112/archive/2006/09/20/509783.html
发表于:2007-02-07 10:30:522楼 得分:0
晕     不对哦!
发表于:2007-02-07 10:37:353楼 得分:10
http://blog.csdn.net/jxufewbt/archive/2006/05/26/756379.aspx
发表于:2007-02-07 12:29:564楼 得分:0
我把加密的数据传给decrypt1,怎么解不了密呢?


快速检索

最新资讯
热门点击