c#加密 asp解密

try13698903461 2009-05-26 02:23:21
我在C#中加密一段代码,将之传给asp页面,由其来解密。请帮忙弄一个简单的加解密函数。
...全文
115 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
try13698903461 2009-05-31
  • 打赏
  • 举报
回复
不会VB,没法改啊。要有现成的例子就好了。越简单的越好
try13698903461 2009-05-27
  • 打赏
  • 举报
回复
回楼上的,大哥,我不会ASP呀,
wl_bdqn 2009-05-27
  • 打赏
  • 举报
回复
protected String astrEncryptTable = "~@&)#?*/,_";
protected String Public__EncryptString(String s) //---加密字符串
{

s.Trim();
int i,j;
String DestStr="";
char[] sTemp;
sTemp = new char[s.Length+1];
for (int k = 0; k < s.Length; k++)
{
char tem;
tem = System.Convert.ToChar(s.Substring(k, 1));
sTemp[k] = tem;
}
String h, p;
for(i=0;i<s.Length;i++)
{
h = System.Convert.ToString(sTemp[i] ^ sTemp[i + 1] ^ 0xB8).Trim();
if(h.Length==1)h="00"+h;
if(h.Length==2)h="0"+h;
p="";
for(j=0;j<3;j++)
{
p=p+astrEncryptTable.Substring(System.Convert.ToInt32(h.Substring(j,1)),1);
}
DestStr=DestStr+p;
}
return DestStr;
}




protected String Public__UnEncryptString(String s) //---解密字符串
{
int i,j;
String DestStr = "", sTemp = "";
char [] ss;
ss=new char[1000];
for(i=0;i<s.Length;i++)
{
j = astrEncryptTable.IndexOf(s.Substring(i, 1)) ;
sTemp=sTemp+j.ToString().Trim();
}
j=0;
for(i=0;i<sTemp.Length;i+=3)
ss[j++] = System.Convert.ToChar(System.Convert.ToInt32(sTemp.Substring(i, 3)));
for (i = j; i > 0; i--)
{
ss[i - 1] = (char)(ss[i] ^ ss[i - 1] ^ 0xB8);
}
for (i = 0; i < s.Length; i++)
{
DestStr = DestStr + ss[i].ToString();
}
return DestStr;
}





以上是自己写的一个加密接迷方法 通过测试,
你把解蜜改成asp吧 就是vbscript
try13698903461 2009-05-27
  • 打赏
  • 举报
回复
没有高手来指教下吗
try13698903461 2009-05-27
  • 打赏
  • 举报
回复
asp其实我不会,所以才发这个帖子的。求高人将代码贴出来
jerrylyj 2009-05-27
  • 打赏
  • 举报
回复
asp的代码我看着晕,你自己用过应该可以改改
DiscussQuestions 2009-05-27
  • 打赏
  • 举报
回复
声明变量用dim name as string ,dim pwd as string !
构造方法用New,
自己改一下1楼的代码就可以了
a82344626 2009-05-27
  • 打赏
  • 举报
回复
自己知算法就可以解啦
try13698903461 2009-05-27
  • 打赏
  • 举报
回复
ding
try13698903461 2009-05-27
  • 打赏
  • 举报
回复
跪求高人帮忙,老板等着要
try13698903461 2009-05-26
  • 打赏
  • 举报
回复
顶上去,求高手帮助,谢谢
try13698903461 2009-05-26
  • 打赏
  • 举报
回复
回jerrylyj ,我是C#加密,asp解密,是asp,不是asp.net。能否给出一个完整的代码?
jerrylyj 2009-05-26
  • 打赏
  • 举报
回复
public class Security
{
string _QueryStringKey = "asdfghjk"; //URL传输参数加密Key,8个字符
string _PassWordKey = "abcabcab"; //PassWord加密Key

public Security()
{
//
// TODO: 在此处添加构造函数逻辑
//
}

/// <summary>
/// 加密URL传输的字符串
/// </summary>
/// <param name="QueryString"></param>
/// <returns></returns>
public string EncryptQueryString(string QueryString)
{
return Encrypt(QueryString, _QueryStringKey);
}

/// <summary>
/// 解密URL传输的字符串
/// </summary>
/// <param name="QueryString"></param>
/// <returns></returns>
public string DecryptQueryString(string QueryString)
{
return Decrypt(QueryString, _QueryStringKey);
}

/// <summary>
/// 加密帐号口令
/// </summary>
/// <param name="PassWord"></param>
/// <returns></returns>
public string EncryptPassWord(string PassWord)
{
return Encrypt(PassWord, _PassWordKey);
}

/// <summary>
/// 解密帐号口令
/// </summary>
/// <param name="PassWord"></param>
/// <returns></returns>
public string DecryptPassWord(string PassWord)
{
return Decrypt(PassWord, _PassWordKey);
}

/// <summary>
/// DEC 加密过程
/// </summary>
/// <param name="pToEncrypt"></param>
/// <param name="sKey"></param>
/// <returns></returns>
public string Encrypt(string pToEncrypt, string sKey)
{
DESCryptoServiceProvider des = new DESCryptoServiceProvider(); //把字符串放到byte数组中

byte[] inputByteArray = Encoding.Default.GetBytes(pToEncrypt);
//byte[] inputByteArray=Encoding.Unicode.GetBytes(pToEncrypt);

des.Key = ASCIIEncoding.ASCII.GetBytes(sKey); //建立加密对象的密钥和偏移量
des.IV = ASCIIEncoding.ASCII.GetBytes(sKey);  //原文使用ASCIIEncoding.ASCII方法的GetBytes方法
MemoryStream ms = new MemoryStream();   //使得输入密码必须输入英文文本
CryptoStream cs = new CryptoStream(ms, des.CreateEncryptor(), CryptoStreamMode.Write);

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

StringBuilder ret = new StringBuilder();
foreach (byte b in ms.ToArray())
{
ret.AppendFormat("{0:X2}", b);
}
ret.ToString();
return ret.ToString();
}

/// <summary>
/// DEC 解密过程
/// </summary>
/// <param name="pToDecrypt"></param>
/// <param name="sKey"></param>
/// <returns></returns>
public string Decrypt(string pToDecrypt, string sKey)
{
DESCryptoServiceProvider des = new DESCryptoServiceProvider();

byte[] inputByteArray = new byte[pToDecrypt.Length / 2];
for (int x = 0; x < pToDecrypt.Length / 2; x++)
{
int i = (Convert.ToInt32(pToDecrypt.Substring(x * 2, 2), 16));
inputByteArray[x] = (byte)i;
}

des.Key = ASCIIEncoding.ASCII.GetBytes(sKey); //建立加密对象的密钥和偏移量,此值重要,不能修改
des.IV = ASCIIEncoding.ASCII.GetBytes(sKey);
MemoryStream ms = new MemoryStream();
CryptoStream cs = new CryptoStream(ms, des.CreateDecryptor(), CryptoStreamMode.Write);

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

StringBuilder ret = new StringBuilder(); //建立StringBuild对象,CreateDecrypt使用的是流对象,必须把解密后的文本变成流对象

return System.Text.Encoding.Default.GetString(ms.ToArray());
}

/// <summary>
/// 检查己加密的字符串是否与原文相同
/// </summary>
/// <param name="EnString"></param>
/// <param name="FoString"></param>
/// <param name="Mode"></param>
/// <returns></returns>
public bool ValidateString(string EnString, string FoString, int Mode)
{
switch (Mode)
{
default:
case 1:
if (Decrypt(EnString, _QueryStringKey) == FoString.ToString())
{
return true;
}
else
{
return false;
}
case 2:
if (Decrypt(EnString, _PassWordKey) == FoString.ToString())
{
return true;
}
else
{
return false;
}
}
}
}

62,046

社区成员

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

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

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

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