36866386
发表于 2010-8-3 22:53:38
不错 不错
pzq1978
发表于 2010-8-4 00:47:50
看看
漫天
发表于 2010-8-4 00:51:06
高级模式 | 发新话题
374584067
发表于 2010-8-19 04:51:49
han han
ccxxzz
发表于 2010-8-19 05:20:49
本帖最后由 ccxxzz 于 2010-8-19 05:28 编辑
C#代码有现成的:
using System;
using System.Security.Cryptography;
using System.Collections.Generic;
namespace System.Net.Radius
{
class Utils
{
static public byte[] makeRFC2865RequestAuthenticator(string sharedSecret)
{
byte[] sharedS = System.Text.Encoding.ASCII.GetBytes(sharedSecret);
byte[] requestAuthenticator = new byte;
Random r = new Random();
for (int i = 0; i < 16; i++)
requestAuthenticator = (byte)r.Next();
Array.Copy(sharedS, 0, requestAuthenticator, 16, sharedS.Length);
MD5 md5 = new MD5CryptoServiceProvider();
md5.ComputeHash(requestAuthenticator);
return md5.Hash;
}
static public byte[] makeRFC2865ResponseAuthenticator(byte[] data, byte[] requestAuthenticator, string sharedSecret)
{
System.Security.Cryptography.MD5 md5 = new System.Security.Cryptography.MD5CryptoServiceProvider();
byte[] ssArray = System.Text.Encoding.ASCII.GetBytes(sharedSecret);
byte[] sum = new byte;
Array.Copy(data, 0, sum, 0, data.Length);
Array.Copy(requestAuthenticator, 0, sum, 4, 16);
Array.Copy(ssArray, 0, sum, data.Length, ssArray.Length);
md5.ComputeHash(sum);
return md5.Hash;
}
static public byte[] encodePapPassword(byte[] userPass, byte[] requestAuthenticator, string sharedSecret)
{
System.Security.Cryptography.MD5 md5 = new System.Security.Cryptography.MD5CryptoServiceProvider();
byte[] userPassBytes = null;
if (userPass.Length > 128)
{
userPassBytes = new byte;
System.Array.Copy(userPass, 0, userPassBytes, 0, 128);
}
else
{
userPassBytes = userPass;
}
byte[] encryptedPass = null;
if (userPassBytes.Length < 128)
{
if (userPassBytes.Length % 16 == 0)
{
encryptedPass = new byte;
}
else
{
encryptedPass = new byte[((userPassBytes.Length / 16) * 16) + 16];
}
}
else
{
encryptedPass = new byte;
}
System.Array.Copy(userPassBytes, 0, encryptedPass, 0, userPassBytes.Length);
for (int i = userPassBytes.Length; i < encryptedPass.Length; i++)
{
encryptedPass = 0;
}
byte[] ssArray = System.Text.Encoding.ASCII.GetBytes(sharedSecret);
byte[] sum = new byte;
Array.Copy(ssArray, 0, sum, 0, ssArray.Length);
Array.Copy(requestAuthenticator, 0, sum, ssArray.Length, requestAuthenticator.Length);
md5.ComputeHash(sum);
byte[] bn = md5.Hash;
for (int i = 0; i < 16; i++)
{
encryptedPass = (byte)(bn ^ encryptedPass);
}
// encryptedPass.Length > 16
return encryptedPass;
}
}
}
调用的时候大家注意调用方法!
直接复制,在VS2008中做成DLL.方法:点 新建项目类库, 2、点项目、生成,生成release;3、点生成、培植管理、RELEASE DLL,4、DLL就生成了,然后利用DLL。就可做这样的RADIUS!
stonemoon
发表于 2010-8-19 11:45:25
强烈支持。想拜师教下我可以吗。我现在就是弄数据包弄不明白。其他都可以
caixue
发表于 2010-8-19 18:00:14
不错,这玩意好,
addminlinux
发表于 2010-8-19 22:07:56
还有重量级的,在管理3000用户的
gddsam
发表于 2010-8-20 00:35:23
看看啊
liu666
发表于 2010-8-20 02:26:57
ding顶
qdcv123
发表于 2010-8-20 02:35:39
强人啊 这么牛啊@
assaqw
发表于 2010-8-21 02:02:42
看看。。。。
gdlaoqiang
发表于 2010-8-21 10:51:32
的风格地方撒地方
日照无线
发表于 2010-8-22 17:00:48
看看
kaile
发表于 2010-8-25 17:04:08
研究下看看有没有测试版本
页:
1
2
3
4
[5]
6
7
8
9
10
11
12
13
14