VerySource

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1497|回复: 13

急:关于 DES 加密解密的问题。

[复制链接]

1

主题

7

帖子

2.00

积分

新手上路

Rank: 1

积分
2.00
发表于 2020-1-5 10:50:01 | 显示全部楼层 |阅读模式
                public string Decrypt(string pToDecrypt, string sKey)
                {
                        DESCryptoServiceProvider provider1 = new DESCryptoServiceProvider();
                        byte[] buffer1 = new byte[pToDecrypt.Length / 2];
                        for (int num1 = 0; num1 < (pToDecrypt.Length / 2); num1++)
                        {
                                int num2 = Convert.ToInt32(pToDecrypt.Substring(num1 * 2, 2), 0x10);
                                buffer1[num1] = (byte) num2;
                        }
                        provider1.Key = Encoding.ASCII.GetBytes(sKey);
                        provider1.IV = Encoding.ASCII.GetBytes(sKey);
                        MemoryStream stream1 = new MemoryStream();
                        CryptoStream stream2 = new CryptoStream(stream1, provider1.CreateDecryptor(), CryptoStreamMode.Write);
                        stream2.Write(buffer1, 0, buffer1.Length);
                        stream2.FlushFinalBlock();
                        StringBuilder builder1 = new StringBuilder();
                        return Encoding.Default.GetString(stream1.ToArray());
                }
==============================================
以上是解密的方法。
调用是这样的:this.Decrypt("48FC50F3F5EB1A4B9CF9FA16765A4812", "2%b<5X7*");
"48FC50F3F5EB1A4B9CF9FA16765A4812" 是"127.0.0.1"加密后的字符
"2%b<5X7*" 是KEY

我想问的是这个:"48FC50F3F5EB1A4B9CF9FA16765A4812"
是通过加密过来的。他的长度是32位。我不知道是怎么加密过来的!
谁能告诉我怎么样才能达到这样的效果?

我自己写了一个加密
                public string Encryptor(string pToEncryptor, string sKey)
                {
                        DESCryptoServiceProvider provider1 = new DESCryptoServiceProvider();

                        byte[] buffer1 = ASCIIEncoding.Default.GetBytes(pToEncryptor);

                        provider1.Key = Encoding.ASCII.GetBytes(sKey);
                        provider1.IV = Encoding.ASCII.GetBytes(sKey);
                        MemoryStream stream1 = new MemoryStream();
                        CryptoStream stream2 = new CryptoStream(stream1, provider1.CreateEncryptor(), CryptoStreamMode.Write);
                        stream2.Write(buffer1, 0, buffer1.Length);
                        stream2.FlushFinalBlock();
                        StringBuilder builder1 = new StringBuilder();
                        return Encoding.Default.GetString(stream1.ToArray());
                }

但是出来的String 是一堆不知道是什么的String
回复

使用道具 举报

0

主题

1

帖子

2.00

积分

新手上路

Rank: 1

积分
2.00
发表于 2020-1-5 13:45:02 | 显示全部楼层
把stream1.ToArray()的每个字节转换成16进制数字,再连起来
回复

使用道具 举报

1

主题

7

帖子

2.00

积分

新手上路

Rank: 1

积分
2.00
 楼主| 发表于 2020-1-5 14:33:01 | 显示全部楼层
为什么127.0.0.1或者其他什么字符加密后都是固定长度:32
这一点很让人郁闷。。
回复

使用道具 举报

0

主题

15

帖子

9.00

积分

新手上路

Rank: 1

积分
9.00
发表于 2020-1-5 16:00:01 | 显示全部楼层
Hash出来的.
回复

使用道具 举报

1

主题

7

帖子

2.00

积分

新手上路

Rank: 1

积分
2.00
 楼主| 发表于 2020-1-5 16:24:01 | 显示全部楼层
现在写这样 好象还是不行。。。
                public string Encryptor(string pToEncryptor, string sKey)
                {
                        DESCryptoServiceProvider provider1 = new DESCryptoServiceProvider();

                        byte[] buffer1 = ASCIIEncoding.Default.GetBytes(pToEncryptor);

                        provider1.Key = Encoding.ASCII.GetBytes(sKey);
                        provider1.IV = Encoding.ASCII.GetBytes(sKey);
                        MemoryStream stream1 = new MemoryStream();
                        CryptoStream stream2 = new CryptoStream(stream1, provider1.CreateEncryptor(), CryptoStreamMode.Write);
                        stream2.Write(buffer1, 0, buffer1.Length);
                        stream2.FlushFinalBlock();
                        StringBuilder builder1 = new StringBuilder();
                        string n = null;
                        for(int i=0;i<stream1.ToArray().Length;i++)
                        {
                                n += Convert.ToInt32((stream1.ToArray())[i]).ToString();
                        }
                       
                        return n;
                }
回复

使用道具 举报

1

主题

7

帖子

2.00

积分

新手上路

Rank: 1

积分
2.00
 楼主| 发表于 2020-1-5 16:42:02 | 显示全部楼层
哪个高手能把我写个个加密的方法

string=127.0.0.1
key="2%b<5X7*"
加密后变成"48FC50F3F5EB1A4B9CF9FA16765A4812"
回复

使用道具 举报

0

主题

15

帖子

9.00

积分

新手上路

Rank: 1

积分
9.00
发表于 2020-1-5 17:15:01 | 显示全部楼层
                                //byte[] Data = Encoding.ASCII.GetBytes("IrisSkin is good !!!");
               
                                //sha1 crypto service, digital signatures are created from the hash
                //string datastr = Convert.ToBase64String(Data);

                                // DSA-SHA1 算法
               

if (!SkinEngine.DSA.VerifyData(SkinEngine.DSAHash, Convert.FromBase64String(base.Engine.SerialNumber)))

byte[] SignedValue = Convert.FromBase64String("flcRzsRtDNr2XBiCoY7NrAC352AiFA/4YuLs4nDCyOHZX5xvWtgH/g==");
                textBox1.Text = Convert.ToBase64String(SignedValue);



        this.Text = dsa.VerifyData(Data, SignedValue).ToString();
回复

使用道具 举报

0

主题

15

帖子

9.00

积分

新手上路

Rank: 1

积分
9.00
发表于 2020-1-5 17:27:01 | 显示全部楼层
        System.Security.Cryptography.DSACryptoServiceProvider dsa = new DSACryptoServiceProvider();

                                DSAParameters p = new DSAParameters();
                                p.Counter = 31;
                                p.X = Convert.FromBase64String("SXJpc1NraW4gaXMgZ29vZCAhISE=");
                                p.P = Convert.FromBase64String("v7aWx402hheC7WRlmLBlBE/DL3CI8b/Vmj/dCEQRMao1kVRmGL/fWhJGrnQUg4OU/cISGW1+DSu/iIhSKBZV4Q==");
                                p.Q = Convert.FromBase64String("qRjCfkW/dk6mL4iUSTb5dZTKx30=");
                                p.G = Convert.FromBase64String("aXWT+c/HfeIDCPzilyuoMXd1tHV3n1uiBa35dDRZqZ25o9PmMtaeHIBZAGPik5/qhDGf+sGm76QAGs5PzmM3dA==");
                                                                p.Seed = Convert.FromBase64String("Z7UfhiqEbRBHn4yq4GYjuX/XMFI=");
                               
                                dsa.ImportParameters(p);
回复

使用道具 举报

1

主题

7

帖子

2.00

积分

新手上路

Rank: 1

积分
2.00
 楼主| 发表于 2020-1-5 18:24:01 | 显示全部楼层
string text1 = "abcdefghigklmnopqrstuvwxyzABCDEFGHIGKLMNOPQRSTUVWXYZ0123456789`~!@#$%^&*()_+|-=[]{};':<>?,./";
                        string text2 = text1.Substring(0x36, 1) + text1.Substring(0x44, 1) + text1.Substring(1, 1) + text1.Substring(0x56, 1) + text1.Substring(0x39, 1) + text1.Substring(0x31, 1) + text1.Substring(0x3b, 1) + text1.Substring(0x47, 1);
                        string text3 = _Default.Decrypt(SifuData.UserDn(), text2);
                        string text4 = _Default.Decrypt("48FC50F3F5EB1A4B9CF9FA16765A4812", text2);
                        string text5 = _Default.Decrypt("24D673EB0598C4C8CD7A07F2B31E321B", text2);
                        string text6 = base.Request.Url.AbsoluteUri.ToLower();

这个里面也有跟楼上写的有点类似。
"abcdefghigklmnopqrstuvwxyzABCDEFGHIGKLMNOPQRSTUVWXYZ0123456789`~!@#$%^&*()_+|-=[]{};':<>?,./"

楼上你给我的这段代码我越看越糊涂。。
能不能帮忙把方法完整的写一下啊?
回复

使用道具 举报

1

主题

7

帖子

2.00

积分

新手上路

Rank: 1

积分
2.00
 楼主| 发表于 2020-1-5 18:27:01 | 显示全部楼层
string text1 = "abcdefghigklmnopqrstuvwxyzABCDEFGHIGKLMNOPQRSTUVWXYZ0123456789`~!@#$%^&*()_+|-=[]{};':<>?,./";
                        string text2 = text1.Substring(0x36, 1) + text1.Substring(0x44, 1) + text1.Substring(1, 1) + text1.Substring(0x56, 1) + text1.Substring(0x39, 1) + text1.Substring(0x31, 1) + text1.Substring(0x3b, 1) + text1.Substring(0x47, 1);
                        string text3 = _Default.Decrypt(SifuData.UserDn(), text2);
                        string text4 = _Default.Decrypt("48FC50F3F5EB1A4B9CF9FA16765A4812", text2);
                        string text5 = _Default.Decrypt("24D673EB0598C4C8CD7A07F2B31E321B", text2);
                        string text6 = base.Request.Url.AbsoluteUri.ToLower();

这个里面也有跟楼上写的有点类似。
"abcdefghigklmnopqrstuvwxyzABCDEFGHIGKLMNOPQRSTUVWXYZ0123456789`~!@#$%^&*()_+|-=[]{};':<>?,./"

楼上你给我的这段代码我越看越糊涂。。
能不能帮忙把方法完整的写一下啊?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|CopyRight © 2008-2023|verysource.com ( 京ICP备17048824号-1 )

快速回复 返回顶部 返回列表