
2007年5月10日
QQ可以通过参数进行快捷登录,即可以完成自动登录。
启动命令为:
"C:\Program Files\Tencent\QQ\QQ.exe" /START QQUIN:12345678 PWDHASH:48enw0KT3GsgFPQw1wuTDw== /STAT:41
QQUIN为QQ号码,PWDHASH为QQ密码的摘要的Base64编码,经过测试发现其摘要算法为MD5
posted @
2007-05-10 21:51 冰封王座(.net)博客 阅读(83) |
评论 (0) |
编辑

2007年4月27日
创建代码签名:
1. 制作cab包
制作cab包之前首先要编写 .inf 文件,这个比较麻烦,可以参考现成的例子,如:
[version]
Signature="$CHICAGO$"
AdvancedINF=2.0
[Add.Code]
HebcaMailClient.ocx=HebcaMailClient.ocx
[HebcaMailClient.ocx]
file-win32-x86=thiscab
clsid={78D1D24A-C552-4402-95FA-E9CA2E8924F2}
FileVersion=1.0.1.1
RegisterServer=yes
制作cab包的工具很多,有CabMaker、cabArc、MakeCab等。我用的是CabMaker,挺好用的,打开后选择一个路径打包就可以了。
2. 获取代码签名证书
获取代码签名证书,可以从CA认证公司去申领。如果是个人测试,可以自己创建测试用的证书。可以用makecert 工具(dotnet框架下就有),也可以用windows2000、windows2003自带数字证书认证服务创建比较正规的测试证书。创建过程如下:
1) 在添加删除程序里面选择 添加/删除windows组件。
2) 选择 证书服务 然后安装即可。默认会安装证书申请的web页面。
3) 在本地输入:http://localhost/certsrv 。选择第二项然后按照提示申请代码证书即可。如果有usbkey的话,可以选择将证书颁发到usbkey上。
4) 选择管理工具-à证书颁发机构。然后将待定申请的代码签名证书选择颁发即可。
5) 在客户端需要将测试CA的根证书安装上。输入:http://ca serverIp/certsrv,选择第一项安装根证书即可。
3. 对cab包进行签名
这儿用signcode对cab包进行签名
在命令提示行中执行
signcode
之后进入signcodewizard:
step1.选择要签名的cab文件
step2.自定义
step3.从文件中选择 myNew.spc
step4.csp中的私钥/密钥容器:myNewKey
step5.sha1
step6.next
描述、时间戳如果有的话可以添上。
4. 验证所作的签名
可以使用chktrust工具对所作的签名进行验证,
在命令行中直接使用chktrust *.cab即可。如果出现预料结果则成功,否则,极有可能是证书有效期出现了问题。
5. 网页中测试:
在</head>后面添加:
<OBJECT classid="CLSID:78D1D24A-C552-4402-95FA-E9CA2E8924F2" CODEBASE="Package.cab#version=1,0,1.1" id="mc" VIEWASTEXT width="1" height="1">
</object>
进行测试即可。
posted @
2007-04-27 17:02 冰封王座(.net)博客 阅读(437) |
评论 (1) |
编辑
class Program

{
static void Main(string[] args)

{
X509Certificate2 cert = CreateCertificate();
//cert.ToString();
Console.Write(cert.ToString());
Console.Read();
}


public static X509Certificate2 CreateCertificate()

{
// makecert -r -pe -n "CN=TestUser" -ss my -sr currentuser
// -sky exchange .\TestUser.cer

//const string MakeCert = "C:\\Program Files\\Microsoft Visual Studio 8\\Common7\\Tools\\Bin\\makecert.exe";
const string MakeCert = "C:\\Program Files\\Microsoft Visual Studio 8\\SDK\\v2.0\\Bin\\makecert.exe";

//string fileName = Path.ChangeExtension(Path.GetTempFileName(), "cer");
string fileName = Path.ChangeExtension("d:\\", "cer");
string userName = Guid.NewGuid().ToString();

string arguments =

string.Format("-r -pe -n \"CN=
{0}\" -ss my -sr currentuser -sky exchange \"
{1}\"",
userName, fileName);

Process p = Process.Start(MakeCert, arguments);
p.WaitForExit();

byte[] certBytes = ReadFile(fileName);
X509Certificate2 cert = new X509Certificate2(certBytes);
return cert;
}

internal static byte[] ReadFile(string fileName)

{
using (FileStream f = new FileStream(fileName, FileMode.Open, FileAccess.Read))

{
int size = (int)f.Length;
byte[] data = new byte[size];
size = f.Read(data, 0, size);
return data;
}
}

}
posted @
2007-04-27 10:39 冰封王座(.net)博客 阅读(953) |
评论 (3) |
编辑

2007年4月2日
javascript 常用的编码格式有:escape(), encodeURL(), encodeURIComponent() 区别如下:
escape() 方法:
采用ISO Latin字符集对指定的字符串进行编码。所有的空格符、标点符号、特殊字符以及其他非ASCII字符都将被转化成%xx格式的字符编码(xx等于该字符在字符集表里面的编码的16进制数字)。比如,空格符对应的编码是%20。
不会被此方法编码的字符: @ * / +
encodeURI() 方法:
把URI字符串采用UTF-8编码格式转化成escape格式的字符串。
不会被此方法编码的字符:! @ # $& * ( ) = : / ; ? + '
encodeURIComponent() 方法:
把URI字符串采用UTF-8编码格式转化成escape格式的字符串。与encodeURI()相比,这个方法将对更多的字符进行编码,比如 / 等字符。所以如果字符串里面包含了URI的几个部分的话,不能用这个方法来进行编码,否则 / 字符被编码之后URL将显示错误。
不会被此方法编码的字符:! * ( ) '
因此,对于中文字符串来说,如果不希望把字符串编码格式转化成UTF-8格式的(比如原页面和目标页面的charset是一致的时候),只需要使用escape。如果你的页面是GB2312或者其他的编码,而接受参数的页面是UTF-8编码的,就要采用encodeURI或者encodeURIComponent。
另外,encodeURI/encodeURIComponent是在javascript1.5之后引进的,escape则在javascript1.0版本就有。
posted @
2007-04-02 16:56 冰封王座(.net)博客 阅读(1216) |
评论 (1) |
编辑

2007年2月9日
1。熟悉C#的人对于两个字符串比较的代码一定很了解:
(string1==string2)
但在java中,这个代码即使在两个字符串完全相同的情况下也会返回false
Java中必须使用string1.equals(string2)来进行判断
补充如果:
string s1=new String("Hello");
string s2=new String("Hello");
则(s1==s2)=false
如果:
string s1="Hello";
string s2="Hello";
则(s1==s2)=true;
因为他们指向的同一个对象。
如果把其他变量的值赋给s1和s2,即使内容相同,由于不是指向同一个对象,也会返回false。所以建议使用equals(),因为equals比较的才是真正的内容
posted @
2007-02-09 15:41 冰封王座(.net)博客 阅读(58) |
评论 (1) |
编辑

2007年2月3日
Mysql 命令
1. 登录数据库
mysql –h hostname –u username –p
enter password:******
2. 启动、停止数据库服务
net start mysql
net stop mysql
3. 创建用户
GRANT priv_type [(column_list)] [, priv_type [(column_list)] ...]
ON {tbl_name | * | *.* | db_name.*}
TO user_name [IDENTIFIED BY 'password']
[, user_name [IDENTIFIED BY 'password'] ...]
[WITH GRANT OPTION]
Grant 权限列表 on 数据库名.表名 to 用户名@主机名 identified by 口令
实例(1):授权给用户user1 所有数据库的所有权限,并且可以在任何主机连接数据库grant all privileges on *.* to user1@”localhost” identified by ‘123456’
Grant all privileges on *.* to user1@”%” identified by ‘123456’
实例(2):增加一个用户test2密码为abc,让他只可以在localhost上登录,并可以对数据库mydb进行查询、插入、修改、删除的操作(localhost指本地主机,即MYSQL数据库所在的那台主机),这样用户即使用知道test2的密码,他也无法从internet上直接访问数据库,只能通过MYSQL主机上的web页来访问了。
grant select,insert,update,delete on mydb.* to test2@localhost identified by "abc";
4. 修改密码
修改密码有两种方法
1) 直接修改数据库服务器中mysql数据库的表 user
如:use mysql
Update user set password=password(“admin”) where user=’root’ and host=’localhost’;
Flush privileges;
注:flush 是清除缓存语句,
Flush PRIVILEGES 从mysql数据库授权表中重新装载权限。
2) 使用set password语句
Set password for root@localhost=password(‘123456’)
5. 创建数据库
1) 查看数据库
Show databases
2) 创建数据库
Drop database if exists studentinfo
Create database studentinfo
如果存在数据库studentinfo 则删除重新建立
6. 创建表
1) use studentinfo
drop table if exists student;
create table student(
id int not null auto_increment,
name varchar(20) not null default ‘name’,
math int not null default 60,
primary key (id));
)
Desc studentinfo 查看表结构
7. 插入操作
Insert into studentinfo values(1,’liying’,98);
Insert into studentinfo (id,name) values(1,’liying’);
可以从文件中导入数据
Load data infile ‘student.txt’ into table student
8. 查询、删除、修改操作
直接在 mysql>命令符下 运行sql语句即可
9. 修改表结构
1) 为表student增加一列english
Alter table student add (English int not null default 60);
2) 修改name的数据类型
Alter table student modify name varchar(30) not null;
3) 修改english 的默认值
Alter table student alter English set default 100
4) 删除english的默认值
Alter table student alter English drop default;
posted @
2007-02-03 10:57 冰封王座(.net)博客 阅读(69) |
评论 (0) |
编辑

2006年12月18日
1。尝试捕获异常
2。捕获异常后,判断能否从异常中恢复。
3。如果不能,则需要对异常进行处理,同时制定相应的异常处理策略集。
异常处理策略可以有一下几种:
1)捕获,不作处理,继续向上传播。
2)捕获,对异常进行包装,再进行抛出。而以前的异常信息作为新异常信息的一部分。这样作可以记录整个的异常出现的轨迹,便于诊断。
3)捕获,替代原有异常,抛出新异常。这样可以隐藏一些敏感信息。
posted @
2006-12-18 21:58 冰封王座(.net)博客 阅读(37) |
评论 (0) |
编辑

2006年12月17日
不要手动的拼接Sql语句,这样容易造成SQL注入攻击,可以写成Sql参数的形式(SqlParameter)。
posted @
2006-12-17 11:44 冰封王座(.net)博客 阅读(80) |
评论 (0) |
编辑