求助:想找一个软件生成序列号的算法 读一下网卡和cpu等的序列号,然后自己编个加密算法加密好了 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 我觉得可以考虑用WEB服务来做产品的激活和注册! To ekin(风语者) :原理基本明白,只不过希望有一个现成的东西参考一下,自己从头写难免会有疏漏。To eheartcool(ced) :有现成的产品或者在线服务实现这样的功能,不过比较贵。我想第一步也没有必要做到这一点,也没有这个条件提供类似Online的服务。只要能够通过机器标识与软件的序列号计算生成标识码,可以通过Desktop Phone或者Online Email的方式将验证码发还给用户就可以了。谢谢大家关注,期待更多信息。 using System;namespace Home.Cscer.Text{ /// <summary> /// clsJEncode 的摘要说明。 /// </summary> public class clsJEncode { public clsJEncode() { // // TODO: 在此处添加构造函数逻辑 // } public static String RSAEncode(String sInfo) { String sReturn = String.Empty; if(sInfo.Trim().Length <= 0) { return sReturn; } //以下参数由RSA加密算法得来 int iEEE = 79;// int iDDD = 1019; int iNNN = 3337; String sTempInfo = sInfo.Trim(); long lTemp = 0; while(sTempInfo.Length > 0) { if(sTempInfo.Length >= 4) { lTemp = long.Parse(sTempInfo.Substring(0, 4)); if(lTemp >= iNNN) { lTemp = long.Parse(sTempInfo.Substring(0, 3)); sTempInfo = sTempInfo.Substring(3); } else { sTempInfo = sTempInfo.Substring(4); } } else { lTemp = long.Parse(sTempInfo.Substring(0, sTempInfo.Length)); sTempInfo = String.Empty; } int iTemp = iEEE; bool bFlag = true; long lReturn = 1; while(bFlag) { if(iTemp <= 3) { bFlag = false; } for(int i=0; i<((iTemp > 3)? 3 : iTemp); ++i) { lReturn *= lTemp; } lReturn = lReturn % iNNN; iTemp = ((iTemp > 3)? (iTemp - 3) : iTemp); } sReturn += lReturn.ToString().PadLeft(4, '0'); } return sReturn; } public static String RSADecode(String sInfo) { String sReturn = String.Empty; if(sInfo.Trim().Length <= 0) { return sReturn; } //以下参数由RSA加密算法得来// int iEEE = 79; int iDDD = 1019; int iNNN = 3337; String sTempInfo = sInfo.Trim(); long lTemp = 0; while(sTempInfo.Length > 0) { if(sTempInfo.Length >= 4) { lTemp = long.Parse(sTempInfo.Substring(0, 4)); if(lTemp >= iNNN) { lTemp = long.Parse(sTempInfo.Substring(0, 3)); sTempInfo = sTempInfo.Substring(3); } else { sTempInfo = sTempInfo.Substring(4); } } else { lTemp = long.Parse(sTempInfo.Substring(0, sTempInfo.Length)); sTempInfo = String.Empty; } int iTemp = iDDD; bool bFlag = true; long lReturn = 1; while(bFlag) { if(iTemp <= 3) { bFlag = false; } for(int i=0; i<((iTemp > 3)? 3 : iTemp); ++i) { lReturn *= lTemp; } lReturn = lReturn % iNNN; iTemp = ((iTemp > 3)? (iTemp - 3) : iTemp); } sReturn += lReturn.ToString(); } return sReturn; } }} 取得服务器的固定信息,例如硬盘物理序列号,CPU序列号等,再把得到的序列号加个密匙,再用MD5加密后,得出的字符码不就得了 cscer(石头)兄提供的东西有价值,但是仅仅是一种编码方式。我发这个帖子的目的是和大家讨论一下这个问题的整体解决思路,以及每一步的细节,我想应该有很多人都对此感兴趣。 求教正则续 怎么更新覆盖正在运行的文件? 帮忙看看一个反射的例子。 C# 调用Windows拨号程序 VS2005环境下C#程序中使用CLS文件中VB定义的类 关于数据库连接类的问题 新手求助:关于把VB60程序转移到c#的问题 关于VS2005和access更新问题(100分) <新手>打开Web项目(C#)时老提示"HTTP://1.0 503 Service Unavailable"错误! 请问安装到最后一步! C#开发 数据库程序,怎么内存使用这么大??? 大家有什么高招?
原理基本明白,只不过希望有一个现成的东西参考一下,自己从头写难免会有疏漏。To eheartcool(ced) :
有现成的产品或者在线服务实现这样的功能,不过比较贵。
我想第一步也没有必要做到这一点,也没有这个条件提供类似Online的服务。只要能够通过机器标识与软件的序列号计算生成标识码,可以通过Desktop Phone或者Online Email的方式将验证码发还给用户就可以了。谢谢大家关注,期待更多信息。
{
/// <summary>
/// clsJEncode 的摘要说明。
/// </summary>
public class clsJEncode
{
public clsJEncode()
{
//
// TODO: 在此处添加构造函数逻辑
//
} public static String RSAEncode(String sInfo)
{
String sReturn = String.Empty; if(sInfo.Trim().Length <= 0)
{
return sReturn;
} //以下参数由RSA加密算法得来
int iEEE = 79;
// int iDDD = 1019;
int iNNN = 3337; String sTempInfo = sInfo.Trim();
long lTemp = 0; while(sTempInfo.Length > 0)
{
if(sTempInfo.Length >= 4)
{
lTemp = long.Parse(sTempInfo.Substring(0, 4)); if(lTemp >= iNNN)
{
lTemp = long.Parse(sTempInfo.Substring(0, 3));
sTempInfo = sTempInfo.Substring(3);
}
else
{
sTempInfo = sTempInfo.Substring(4);
}
}
else
{
lTemp = long.Parse(sTempInfo.Substring(0, sTempInfo.Length));
sTempInfo = String.Empty;
} int iTemp = iEEE; bool bFlag = true; long lReturn = 1; while(bFlag)
{
if(iTemp <= 3)
{
bFlag = false;
} for(int i=0; i<((iTemp > 3)? 3 : iTemp); ++i)
{
lReturn *= lTemp;
} lReturn = lReturn % iNNN; iTemp = ((iTemp > 3)? (iTemp - 3) : iTemp);
} sReturn += lReturn.ToString().PadLeft(4, '0');
} return sReturn;
} public static String RSADecode(String sInfo)
{
String sReturn = String.Empty; if(sInfo.Trim().Length <= 0)
{
return sReturn;
} //以下参数由RSA加密算法得来
// int iEEE = 79;
int iDDD = 1019;
int iNNN = 3337; String sTempInfo = sInfo.Trim();
long lTemp = 0; while(sTempInfo.Length > 0)
{
if(sTempInfo.Length >= 4)
{
lTemp = long.Parse(sTempInfo.Substring(0, 4)); if(lTemp >= iNNN)
{
lTemp = long.Parse(sTempInfo.Substring(0, 3));
sTempInfo = sTempInfo.Substring(3);
}
else
{
sTempInfo = sTempInfo.Substring(4);
}
}
else
{
lTemp = long.Parse(sTempInfo.Substring(0, sTempInfo.Length));
sTempInfo = String.Empty;
} int iTemp = iDDD; bool bFlag = true; long lReturn = 1; while(bFlag)
{
if(iTemp <= 3)
{
bFlag = false;
} for(int i=0; i<((iTemp > 3)? 3 : iTemp); ++i)
{
lReturn *= lTemp;
} lReturn = lReturn % iNNN; iTemp = ((iTemp > 3)? (iTemp - 3) : iTemp);
} sReturn += lReturn.ToString();
} return sReturn;
}
}
}
MD5加密后,得出的字符码不就得了
我发这个帖子的目的是和大家讨论一下这个问题的整体解决思路,以及每一步的细节,我想应该有很多人都对此感兴趣。