求C#DES加密的key可为任意长度字符或为空代码
其它java,C代码的DES的KEY可任意长度字符或为空,现在我使用的C# des加密算法,当key为空时出错,请高手支招,贴出key 可任意长度字符的代码网上的代码,key不可为空,必须要8位
尹学渊用VC++写的,可key为空,加密结果到到其它工具或其它语言写的工具上去 反解,并且一切正常
尹学渊用VC++写的(http://www.cnblogs.com/erwin/archive/2009/04/14/1435288.html#2346568),key为空得到的密文可到其它标准DES上去反解原文
求key可任意长度或为空的代码,在此拜谢!
大仙们快出来帮忙! --------------------编程问答-------------------- 朋友们快来帮帮我吧,这问题都扰我很久了,谢谢 --------------------编程问答-------------------- 我只做过AES的加密解密 --------------------编程问答-------------------- 分享一下AES的加密解密函数
--------------------编程问答--------------------
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Security.Cryptography;
namespace AESTest
{
public partial class MainForm : Form
{
public MainForm()
{
InitializeComponent();
}
public byte[] AesEncryptor(byte[] bsFile, string password)
{
AesManaged aes = new AesManaged();
aes.Key = Encoding.UTF8.GetBytes(this.GetMD5(password));
aes.IV = Encoding.UTF8.GetBytes(this.GetMD5(password).Substring(8, 16));
aes.Mode = CipherMode.CBC;
aes.Padding = PaddingMode.PKCS7;
ICryptoTransform transform = aes.CreateEncryptor();
return transform.TransformFinalBlock(bsFile, 0, bsFile.Length);
}
public byte[] AesDecryptor(byte[] bsFile, string password)
{
AesManaged aes = new AesManaged();
aes.Key = Encoding.UTF8.GetBytes(this.GetMD5(password));
//IV的值与aes.IV的位数相同即可,可以是任何值,作用是防止相同的文本产生相同的密文,固使用随机数生成IV较好
aes.IV = Encoding.UTF8.GetBytes(this.GetMD5(password).Substring(8, 16));
aes.Mode = CipherMode.CBC;
aes.Padding = PaddingMode.PKCS7;
ICryptoTransform transform = aes.CreateDecryptor();
return transform.TransformFinalBlock(bsFile, 0, bsFile.Length);
}
public string GetMD5(string str)
{
StringBuilder sb = new StringBuilder();
foreach (byte b in System.Security.Cryptography.MD5.Create().ComputeHash(Encoding.UTF8.GetBytes(str)))
{
sb.Append(b.ToString("X2"));
}
return sb.ToString();
}
private void button1_Click(object sender, EventArgs e)
{
string str = txt_Encryptor.Text;
byte[] plainTextbytes = Encoding.UTF8.GetBytes(str);
byte[] ciphertextbytes = AesEncryptor(plainTextbytes, "这个是加密要的key");
txt_result.Text = Convert.ToBase64String(ciphertextbytes);
}
private void button2_Click(object sender, EventArgs e)
{
byte[] ciphertextbytes = Convert.FromBase64String(txt_Decryptor.Text);
byte[] plainTextbytes = AesDecryptor(ciphertextbytes, "这个是加密要的key");
txt_result.Text = Encoding.UTF8.GetString(plainTextbytes);
}
}
}
我现在需要C#版的DES加密 代码,要求key可少于8个字符或为空,这一点尹学渊DES工具2.1是实现了,并且同其它标准DES可相互转换 --------------------编程问答-------------------- 只能帮你顶了 DES确实没用过 我也想知道DES加密函数怎么写 如果.net下的des加密key必须不能为空 那么只能纯代码去写DES函数了 不过难度系数可想而知
--------------------编程问答--------------------
晕!
你上面已经有例子了。很简单,先对密码进行有MD5(或者其它散列)运算。
看到别人给你的例子,如果还忽悠什么“密码可以空、可以任意长度”就应该不好意思了。 --------------------编程问答-------------------- 至于说“并且同其它标准DES可相互转换”,我除了觉得是广告上的莫名其妙的词语,实在是看不出这个叫“尹”什么的一小段代码它有什么“标准”可言。 --------------------编程问答-------------------- 谢谢楼上两位朋友的好心回复,我手上有标准DES的写法,并可与其它语言DES互相转换,但如果为空了,程序就会出错;
这个问题我也在网上找了好几天了,可个人能力有限至今未得到解决,各位大哥们不要嘲笑小弟,我也在学习当中, 如果有朋友知道怎么代码的,出来帖一下;
谢谢 --------------------编程问答-------------------- 拜见大神们,小民过来学习下。 --------------------编程问答--------------------
真心求教,再顶一下,大仙快出来吧 --------------------编程问答--------------------
真心求教,好心朋友出来支个招吧 --------------------编程问答-------------------- 去下载点代码自己研究研究吧,,,“c# des加密” --------------------编程问答--------------------
我已经研究几天了,还是没找到方向,现在已经在想办法找DES.DLL控件了,但还是没找到一个正确能用的?
OROCHIHeart,谢谢你积极的回复,你有DES控件吗? 在C#里能调用的,谢谢
840272434@qq.com --------------------编程问答-------------------- --------------------编程问答--------------------
有朋友可以解决吗? 提供des.DLL类控件也可以,帮帮忙啊 --------------------编程问答-------------------- 熟悉并掌握.net下提供的des加密类,,,建议只能给到这了 你的情况可能比较特殊吧。。。如果想自己想写这个des加密方法 难度老大了。。。
补充:.NET技术 , C#