读书人

50分 求一简单的ASP.net代码,该如何处

发布时间: 2012-01-07 21:41:55 作者: rapoo

50分 求一简单的ASP.net代码
小弟不是做.net的,但现在需要用.net调用DLL里的方法对字符串加密,并保存到数据库里,特来此求救,那位仁慈的大哥帮帮小弟,不胜感激。谢了。

dll文件名:TmWebDC114.dll
加密方法: int TW_DeCryptSim(unsigned char *pBuf,int iLen,unsigned char *pOutBuf,int iOutLen);
数据库类型 MSSql
数据库地址: 192.168.2.66
数据库名:student
帐号:administrator
密码 :rotartsinimda
表:student(id,name,password)
name,password是用get方法得到的。
需要对password加密然后添加到数据库里。

谢了
谢了
谢了!!!!!!!!!!!!!!!!!!!!!!!!!!!1


[解决办法]
public static string MD5(string data)
{
byte[] byteData = System.Text.Encoding.UTF32.GetBytes(data);
StringBuilder result = new StringBuilder();

MD5CryptoServiceProvider md5 = new MD5CryptoServiceProvider();
byte[] encryptByteData = md5.ComputeHash(byteData);
foreach (byte b in encryptByteData)
{
result.Append(b.ToString( "X2 "));
}

return result.ToString();
}
[解决办法]
用MD5加密就行了,方便,既然加密了你还解密干什么啊
[解决办法]
3DES
[解决办法]
提供一个基于.NET的加密/解密算法
提供一个基于.NET SymmetricAlgorithm 类的、带私钥的加密/解密算法的包装类。使用方法:

SymmCrypto de = new SymmCrypto(SymmCrypto.SymmProvEnum.DES);
Response.Write(x.Decrypting(de.Encrypting( "ok ", "yyy "), "yyy "));
类的实现C#编码

using System;
using System.Security.Cryptography;
using System.IO;
using System.Text;

namespace eMeng
{
/// <summary>
/// SymmCrypto 的摘要说明。
/// SymmCrypto类实现.NET框架下的加密和解密服务。
/// 原作者: Frank Fang : fangfrank@hotmail.com
/// </summary>
public class SymmCrypto
{
public enum SymmProvEnum : int
{
DES, RC2, Rijndael
}

private SymmetricAlgorithm mobjCryptoService;

/// <remarks>
/// 使用.Net SymmetricAlgorithm 类的构造器.
/// </remarks>
public SymmCrypto(SymmProvEnum NetSelected)
{
switch (NetSelected)
{
case SymmProvEnum.DES:
mobjCryptoService = new DESCryptoServiceProvider();
break;
case SymmProvEnum.RC2:
mobjCryptoService = new RC2CryptoServiceProvider();
break;
case SymmProvEnum.Rijndael:
mobjCryptoService = new RijndaelManaged();
break;
}
}

/// <remarks>
/// 使用自定义SymmetricAlgorithm类的构造器.
/// </remarks>
public SymmCrypto(SymmetricAlgorithm ServiceProvider)
{
mobjCryptoService = ServiceProvider;
}

/// <remarks>
/// Depending on the legal key size limitations of
/// a specific CryptoService provider and length of
/// the private key provided, padding the secret key
/// with space character to meet the legal size of the algorithm.
/// </remarks>
private byte[] GetLegalKey(string Key)
{
string sTemp;
if (mobjCryptoService.LegalKeySizes.Length > 0)
{
int lessSize = 0, moreSize = mobjCryptoService.LegalKeySizes[0].MinSize;
// key sizes are in bits
while (Key.Length * 8 > moreSize)
{
lessSize = moreSize;


moreSize += mobjCryptoService.LegalKeySizes[0].SkipSize;
}
sTemp = Key.PadRight(moreSize / 8, ' ');
}
else
sTemp = Key;

// convert the secret key to byte array
return ASCIIEncoding.ASCII.GetBytes(sTemp);
}

public string Encrypting(string Source, string Key)
{
byte[] bytIn = System.Text.ASCIIEncoding.ASCII.GetBytes(Source);
// create a MemoryStream so that the process can be done without I/O files
System.IO.MemoryStream ms = new System.IO.MemoryStream();

byte[] bytKey = GetLegalKey(Key);

// set the private key
mobjCryptoService.Key = bytKey;
mobjCryptoService.IV = bytKey;

// create an Encryptor from the Provider Service instance
ICryptoTransform encrypto = mobjCryptoService.CreateEncryptor();

// create Crypto Stream that transforms a stream using the encryption
CryptoStream cs = new CryptoStream(ms, encrypto, CryptoStreamMode.Write);

// write out encrypted content into MemoryStream
cs.Write(bytIn, 0, bytIn.Length);
cs.FlushFinalBlock();

// get the output and trim the '\0 ' bytes
byte[] bytOut = ms.GetBuffer();
int i = 0;
for (i = 0; i < bytOut.Length; i++)
if (bytOut[i] == 0)
break;

// convert into Base64 so that the result can be used in xml
return System.Convert.ToBase64String(bytOut, 0, i);
}

public string Decrypting(string Source, string Key)
{
// convert from Base64 to binary
byte[] bytIn = System.Convert.FromBase64String(Source);
// create a MemoryStream with the input
System.IO.MemoryStream ms = new System.IO.MemoryStream(bytIn, 0, bytIn.Length);

byte[] bytKey = GetLegalKey(Key);

// set the private key
mobjCryptoService.Key = bytKey;
mobjCryptoService.IV = bytKey;

// create a Decryptor from the Provider Service instance
ICryptoTransform encrypto = mobjCryptoService.CreateDecryptor();

// create Crypto Stream that transforms a stream using the decryption
CryptoStream cs = new CryptoStream(ms, encrypto, CryptoStreamMode.Read);

// read out the result from the Crypto Stream
System.IO.StreamReader sr = new System.IO.StreamReader( cs );
return sr.ReadToEnd();
}
}
}
这是别人写好的,可以参考一下

[解决办法]
up
[解决办法]
到底是要加密算法 还是 要如何调用你自己的加密 API 哦?
[解决办法]
对称加密
[解决办法]
同意三楼的,md5加密

[解决办法]
楼主应该看看怎么调非托管的dll
http://www.cnblogs.com/xdotnet/archive/2007/08/10/csharp_cpp_dll_pinvoke.html
[解决办法]
可逆加密与不可逆加密:

http://www.cnblogs.com/JBoy/archive/2007/06/17/786799.html
[解决办法]
http://www.aspnet168.com.cn/
[解决办法]
简单来说,在你的project右键添加引用。这个dll就添加到工程里面了。在你调用的页面再添加一个using TmWebDC114;来引用。


如果你说的那个是静态方法的话,就可以直接用类名来调用该方法。
[解决办法]
可以通过反射来调用加密的方法
//创建一个程序集实例

System.Reflection.Assembly a= System.Reflection.Assembly.LoadFrom(Server.MapPath( "../Public/bin/Debug/Public.dll "));




//定义一个类型数组并从程序集实例中获得

Type[] t = a.GetTypes();



//循环输出类型数组中的类的名称

for(int i = 0 ; i <t.Length;i++)

...{

Response.Write(t[i].Name+ " <br> ");

}





//定义一个方法信息实例 并从程序集中指定名称的类中指定名称的方法获得


System.Reflection.MethodInfo m = a.GetType( "Public.Jscript ").GetMethod( "Alert ");



//同上,只不过是通过索引获得 t是a.GetTypes数组

//System.Reflection.MethodInfo m = t[3].GetMethod( "Alert ");



//调用方法信息实例的Invoke方法,并传递参数,来执行反射做要指定指定的类的方法,其中参数1是类创建的实例,参数2是所要执行的方法的参数的对象数组 *说明:System.Activator.CreateInstance是动态创建指定类实例的方法

Response.Write(m.Invoke(System.Activator.CreateInstance(a.GetType( "Public.Jscript ")),new object[]...{ "欢迎! "}));

我这里我的一个例子,是调用我自己的一个Public.dll文件中的Jscript类中的一个Alert方法,具体情况可以按照你自己的意愿去改
[解决办法]
mark
[解决办法]
字符串加密类MyEncrypt
1. /// <summary>

2. /// 加密

3. /// </summary>

4. /// <param name= "notEncryptStr "> 待加密的明文字符串 </param>

5. /// <returns> 加密后的字符串 </returns>

6. public static string EncryptString(string notEncryptStr)

7. {

8. // 初始化加密器生成器

9. DESCryptoServiceProvider des = new DESCryptoServiceProvider();

10.

11. byte[] byteNotEncrypt = Encoding.UTF8.GetBytes(notEncryptStr);// 将字符串转换成字节

详细参见:http://book.csdn.net/bookfiles/320/10032013033.shtml


看完了就明白了!

读书人网 >asp.net

热点推荐