高分求加密(解密)代码

wangsheng1984 2007-03-09 12:56:15
我正在做一个用户注册.用户登陆界面
想在注册界面实现,密码的加密,然后充入数据库,
想在登陆页面读取数据库的信息(解密).
请大侠帮忙,我用的是 C#+SQL , .NET程序
...全文
332 13 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
jackysun2000 2007-03-09
  • 打赏
  • 举报
回复
using System;
using System.IO;
using System.Security.Cryptography;
using System.Text;
namespace MDcode
{
/// <summary>
/// Rijndael 的摘要说明。
/// </summary>
public class Rijndael
{
private System.Security.Cryptography.SymmetricAlgorithm sa;
private string key;
private string IV;

public Rijndael()
{
sa = new RijndaelManaged();
key = "!w@o#s$h%i^s&j*f(z)x_womenzuihao"; //"2S(a5%aE9&$820blOF*!ao43KplpPTq82%ggj(ai18*afkv3AfghKO28vs9favi(jFf*Fdja98w8JIlfo3v0f%lfjOi3jIf9*2jNv!eq";//这个自己可以改掉
IV = "1011[{shuyu733}]"; //"v%fjh1aaG&94r8fi*fyh4afg0ir3QYgjOi0fatj3iV5Y(jkg6e!fg0r3f7GVR9gmrn(0ogEnJ6q%gjir30h(T530hbw!gmKeq2g*(n0j";//这个也可以改掉

}
private byte[] getKey()
{
string gKey = this.key;

sa.GenerateKey();
byte[] bTemp = sa.Key;
int keyLength = bTemp.Length;

if(this.key.Length > keyLength)
{
gKey = gKey.Substring(0, keyLength);
}
else
{
gKey = gKey.PadRight(keyLength, ' ');
}

return ASCIIEncoding.ASCII.GetBytes(gKey);
}
private byte[] getIV()
{
string gIV = this.IV;

sa.GenerateIV();
byte[] bTemp = sa.IV;
int IVLength = bTemp.Length;

if(this.IV.Length > IVLength)
{
gIV = gIV.Substring(0, IVLength);
}
else
{
gIV = gIV.PadRight(IVLength, ' ');
}

return ASCIIEncoding.ASCII.GetBytes(gIV);
}

public string RijndaelEncrypt(string re)
{
byte[] reIn = UTF8Encoding.UTF8.GetBytes(re);
MemoryStream ms = new MemoryStream();

sa.Key = this.getKey();
sa.IV = this.getIV();

System.Security.Cryptography.ICryptoTransform it = sa.CreateEncryptor();
System.Security.Cryptography.CryptoStream cs = new CryptoStream(ms, it, System.Security.Cryptography.CryptoStreamMode.Write);

cs.Write(reIn, 0, reIn.Length);
cs.FlushFinalBlock();

byte[] reOut=ms.ToArray();
ms.Close();
cs.Close();

return Convert.ToBase64String(reOut);
}

public string RijndaelDencrypt(string rd)
{
byte[] rdIn = Convert.FromBase64String(rd);
MemoryStream ms = new MemoryStream(rdIn, 0, rdIn.Length);

sa.Key = this.getKey();
sa.IV = this.getIV();

System.Security.Cryptography.ICryptoTransform it = sa.CreateDecryptor();
System.Security.Cryptography.CryptoStream cs = new CryptoStream(ms, it, System.Security.Cryptography.CryptoStreamMode.Read);

StreamReader sr = new StreamReader(cs);
string str = sr.ReadToEnd();
ms.Close();
cs.Close();

return str;
}
}
}
实例化Rijndael对象
RijndaelEncrypt为加密方法
RijndaelDencrypt为解密方法
pcbabyyeah8 2007-03-09
  • 打赏
  • 举报
回复
我用AES
luoxia001 2007-03-09
  • 打赏
  • 举报
回复
还有,MD5和SHA1都是不可逆加密

所以用“把数据库密码取出,把当前用户输入的密码加密,两相对比”的方式
luoxia001 2007-03-09
  • 打赏
  • 举报
回复
wangsheng1984(可米) ( ) 信誉:100 Blog 2007-03-09 13:38:52 得分: 0


我用FormsAuthortication.HashPasswordForStoringInConfigFile(PasswordString ,"MD5");

加密以后在登陆页面如何判断,密码的正确性呢

-----------------------------------------------------------------

密码MD5加密判断的原理是这样的
首先,把用户密码加密后保存到数据库
判断的时候,把数据库密码取出,把当前用户输入的密码加密,两相对比
如果相等,那就是密码匹配,反之就是密码不匹配

把这个道理理解之后,比用什么现成加密组件都强


修哲 2007-03-09
  • 打赏
  • 举报
回复
用我的就可以实现,保存进数据库的时候,就用我的加密后的字符串插入数据库,用户登陆的时候,用把数据库中的加密后的密码字符串解密然后再和用户输入的密码做对比
unlimitedsaga 2007-03-09
  • 打赏
  • 举报
回复
mark
wangsheng1984 2007-03-09
  • 打赏
  • 举报
回复
我用FormsAuthortication.HashPasswordForStoringInConfigFile(PasswordString ,"MD5");

加密以后在登陆页面如何判断,密码的正确性呢
luoxia001 2007-03-09
  • 打赏
  • 举报
回复
SHA1加密方法
FormsAuthortication.HashPasswordForStoringInConfigFile(PasswordString ,"SHA1");
MD5加密方法
FormsAuthortication.HashPasswordForStoringInConfigFile(PasswordString ,"MD5");
修哲 2007-03-09
  • 打赏
  • 举报
回复
这个是一个类,把它编译成dll,你就可以直接用了,是des
using System;
using System.IO;
using System.Security.Cryptography;

namespace bh
{
/// <summary>
/// Security 的摘要说明。
/// </summary>
public class Security
{
const string KEY_64 = "xxxxxxxx";
const string IV_64 = "xxxxxxxx"; //注意了,是8个字符,64位
public Security()
{
//
// TODO: 在此处添加构造函数逻辑
//
}

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);

}

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();
}
}
}
luoxia001 2007-03-09
  • 打赏
  • 举报
回复
public string EncryptPassword(string PasswordString,string PasswordFormat )
{
if (PasswordFormat="SHA1"){
EncryptPassword=FormsAuthortication.HashPasswordForStoringInConfigFile(PasswordString ,"SHA1");
}
elseif (PasswordFormat="MD5")
{ EncryptPassword=FormsAuthortication.HashPasswordForStoringInConfigFile(PasswordString ,"MD5");
}
else
{
EncryptPassword="";
}
zyg0 2007-03-09
  • 打赏
  • 举报
回复
http://dotnet.aspx.cc/article/1af1179e-43e5-4d4f-61ae-84922b5cba74/read.aspx
孟子写的加密解密类
rucallen 2007-03-09
  • 打赏
  • 举报
回复
http://www.csdn.net/develop/article/26/26096.shtm
linekery 2007-03-09
  • 打赏
  • 举报
回复
用enterprise 里的 Cryptography

62,243

社区成员

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

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

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

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