首页
社区
课程
招聘
[求助]易语言的DES算法解密和C#的算法不一样吗?
发表于: 2011-1-14 22:22 6216

[求助]易语言的DES算法解密和C#的算法不一样吗?

2011-1-14 22:22
6216
易语言的DES算法解密和C#的算法不一样吗?
好像C#的算法有2个密钥

using System;
using System.Data;
using System.Text;
using System.Security.Cryptography;
using System.IO;
using System.Runtime.InteropServices;

namespace DesForAsp
{
    [ComVisible(true)]
    public interface iDes
    {

        string encode(string explainText, string desKey);
        string decode(string encryptText, string desKey);

    }

    [ComVisible(true)]
    [ClassInterface(ClassInterfaceType.AutoDual)]   
    public class Des:iDes
    {
        public Des(){

        }

        public string encode(string explainText, string desKey)
        {
            try
            {
                DESCryptoServiceProvider des = new DESCryptoServiceProvider();
                des.Mode = CipherMode.ECB;
                des.Key = System.Text.Encoding.UTF8.GetBytes(desKey);
                des.IV = des.Key;
                byte[] inputByteArray = System.Text.Encoding.UTF8.GetBytes(explainText);
                MemoryStream ms = new MemoryStream();
                CryptoStream cs = new CryptoStream(ms, des.CreateEncryptor(), CryptoStreamMode.Write);
                cs.Write(inputByteArray, 0, inputByteArray.Length);
                cs.FlushFinalBlock();
                return Convert.ToBase64String(ms.ToArray());
            }
            catch (System.Exception e)
            {
                return e.ToString();
            }
        }

        public string decode(string encryptText, string desKey)
        {
            try
            {
                DESCryptoServiceProvider des = new DESCryptoServiceProvider();
                des.Mode = CipherMode.ECB;
                des.Key = System.Text.Encoding.UTF8.GetBytes(desKey);
                des.IV = des.Key;
                byte[] inputByteArray = Convert.FromBase64String(encryptText);
                MemoryStream ms = new MemoryStream();
                CryptoStream cs = new CryptoStream(ms, des.CreateDecryptor(), CryptoStreamMode.Write);
                cs.Write(inputByteArray, 0, inputByteArray.Length);
                cs.FlushFinalBlock();
                System.Text.Encoding encoding = new System.Text.UTF8Encoding();
                return encoding.GetString(ms.ToArray());
            }
            catch (System.Exception e)
            {
                return e.ToString();
            }
        }
    }
}
-----------------------------------
易语言自带的支持库不是标准的DES算法
这里有个DES标准算法的易模块,经测试算法结果和c#的一样
http://bbs.eyuyan.com/read.php?tid=176976

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 0
支持
分享
最新回复 (1)
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
易语言实现不了,要用c#写des算法的dll,再用易语言调用
C#有相关类实现DES加密解密。若要实现加密解密,需要传递三个参数:明文,密钥(长度必须为8),初始化向量(长度必须为8)。
2011-1-15 09:55
0
游客
登录 | 注册 方可回帖
返回
//