关于Decrypting要解密的数据的长度无效的问题,请大侠帮忙

海大富运动 2010-10-02 11:40:00
Decrypting函数
public string Decrypting(string Source)
{
byte[] bytIn = Convert.FromBase64String(Source);

// 创建内存流
System.IO.MemoryStream ms = new System.IO.MemoryStream(bytIn, 0, bytIn.Length,false,true);

// 初始化加密密钥和加密向量
objCryptoService.IV = _IV;
objCryptoService.Key = _Key;

// 创建加密器
ICryptoTransform encrypto = objCryptoService.CreateDecryptor();

// 创建解密转换流的解密流
CryptoStream cs = new CryptoStream(ms, encrypto, CryptoStreamMode.Read);

// 从解密流读取数据
System.IO.StreamReader sr = new System.IO.StreamReader(cs);
return sr.ReadToEnd();
}



本人用将密码设置为admin888,加密后为dn7p8A==,但是无法Decrypting,提示:要解密的数据的长度无效


但是如果将密码设置为123456,加密后可以解密,不报错,不知道是什么问题

又测试了好几个,凡是数字密码的都可以加密解密,加上字符串的都报错,不知道是什么问题,请大家帮帮忙
...全文
141 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
海大富运动 2010-10-03
  • 打赏
  • 举报
回复
自己再顶,我顶顶顶
海大富运动 2010-10-03
  • 打赏
  • 举报
回复
const string KEY_64 = "VavicApp";
const string IV_64 = "VavicApp"; //注意了,是8个字符,64位
肄若芸 2010-10-03
  • 打赏
  • 举报
回复
txtPassword.Text = objAlogrim.Decrypting(dt.Rows[0]["Password"].ToString(), "test");

根据以上推测,你的代码解密前是否正确索引了数据集?
我只是推测,你可以试试只有一用户的时候是否是正确的:)
海大富运动 2010-10-02
  • 打赏
  • 举报
回复
解密的代码是

Alogrim objAlogrim = new Alogrim(Alogrim.SymmProvEnum.DES);
txtPassword.Text = objAlogrim.Decrypting(dt.Rows[0]["Password"].ToString(), "test");

只要是数字密码的不出错,加字符串的比如admin888这样解密就出错
海大富运动 2010-10-02
  • 打赏
  • 举报
回复
楼上的,你的加密函数和我的一样吧!

我就是想知道为什么用纯数字不报错,用数字+字母组合就报错
mengxj85 2010-10-02
  • 打赏
  • 举报
回复
public class DES
{
const string KEY_64 = "VavicApp";
const string IV_64 = "VavicApp"; //注意了,是8个字符,64位
/// <summary>
/// des加密
/// </summary>
/// <param name="data">待加密的数据</param>
/// <returns></returns>
public static string Encode(string data)
{
byte[] byKey = System.Text.ASCIIEncoding.ASCII.GetBytes(KEY_64);
byte[] byIV = System.Text.ASCIIEncoding.ASCII.GetBytes(IV_64);
DESCryptoServiceProvider cryptoProvider = new DESCryptoServiceProvider();
int i = cryptoProvider.KeySize;
MemoryStream ms = new MemoryStream();
CryptoStream cst = new CryptoStream(ms, cryptoProvider.CreateEncryptor(byKey, byIV), CryptoStreamMode.Write);
StreamWriter sw = new StreamWriter(cst);
sw.Write(data);
sw.Flush();
cst.FlushFinalBlock();
sw.Flush();
return Convert.ToBase64String(ms.GetBuffer(), 0, (int)ms.Length);
}
/// <summary>
/// des解密
/// </summary>
/// <param name="data">待解密的字符串</param>
/// <returns></returns>
public static string Decode(string data)
{
byte[] byKey = System.Text.ASCIIEncoding.ASCII.GetBytes(KEY_64);
byte[] byIV = System.Text.ASCIIEncoding.ASCII.GetBytes(IV_64);
byte[] byEnc;
try
{
byEnc = Convert.FromBase64String(data);
}
catch
{
return null;
}
DESCryptoServiceProvider cryptoProvider = new DESCryptoServiceProvider();
MemoryStream ms = new MemoryStream(byEnc);
CryptoStream cst = new CryptoStream(ms, cryptoProvider.CreateDecryptor(byKey, byIV), CryptoStreamMode.Read);
StreamReader sr = new StreamReader(cst);
return sr.ReadToEnd();
}

参考吧

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧