作者归档:darren

Security for Java and E-commerce Environments

Click here to download code (NB: You should register first)

[download id=”6″]

 

Assignment 5 (Client/Server Message Security)

Purpose: Develop an AC module to login users and accept their (typed) message. The module should comprehensively protect the message using a combination of secret and public key cryptography. Channel protection should be provided by the SSL (through JSSE), message protection by the PKCS#7 or S/MIME formats.

 

Client/Server

1. Operate server:


2. Register for users:


 

3. Login:


 

4. Chat (message transfer)


Main code:

1. AppServer.java

//Code for the connect class

class Connect

{

ObjectOutputStream streamToClient;

int ctr=0;


BufferedReader streamFromClient;


static
Vector
vector;

static
Vector
vctrList;

String message=” “;

static String str=new String(“UsrList”);

 

static

{


vector=new
Vector(1,1);

vctrList=new
Vector(1,1);

vctrList.addElement((String)str);

}

 

 

int verify(String mesg)

{


try

{

RandomAccessFile RAS=new RandomAccessFile(“UsrPwd.txt”, “r”);

int
i=0;

String str=””;

while((RAS.getFilePointer())!=(RAS.length()))

{

str=RAS.readLine();

if(str.equals(mesg))

{

ctr=1;

break;


}

}

RAS.close();

}

catch(Exception e)

{


}


return ctr;


 

}//end of verify()

 

2. clientInt.java

class TimerAction implements ActionListener

{

Socket toServer;

ObjectInputStream streamFromServer;

PrintStream streamToServer;

public
void actionPerformed(ActionEvent e2)

{

 

try

{

toServer=new Socket(“machine-name”,1001);

streamFromServer=new ObjectInputStream(toServer.getInputStream());

streamToServer=new PrintStream(toServer.getOutputStream());

message=txtMsg.getText();


//send a message to the server

streamToServer.println(“From Timer”);


//receive vectors from the server

Vector vector=(Vector)streamFromServer.readObject();

Vector vector1=(Vector)streamFromServer.readObject();


//show the online users

txtListUsers.setText(“”);

for(int j=1;j<vector1.capacity();j++)

{

txtListUsers.append((String)vector1.elementAt(j));

txtListUsers.append(“\n”);

}


//show the messsages

int i=messageCount;

for(;i<vector.capacity();i++)

{

 

txtMessages.append((String)vector.elementAt(i));

txtMessages.append(“\n”);


}

messageCount=i;

}//end of try

 

catch(Exception e)

{

System.out.println(“Exception “+e);

}

 

}//end of actionPerformed

}//end of TimerListener class

 

3.
Register.java

public
void actionPerformed(ActionEvent e1)

{

 

JButton button=(JButton)e1.getSource(); //get the source of the event

if(button.equals(btnCancel))

{

this.dispose();

}

else

{

int ver=verify(); //call the verify()

if(ver==1)

{


try

{

//establish a socket connection and create I/O socket streams

toServer=new Socket(“machine-name”,1001);

streamFromServer=new ObjectInputStream(toServer.getInputStream());

streamToServer=new PrintStream(toServer.getOutputStream());

 

//send a message to server for Registration

streamToServer.println(“RegisterInfo”);

usrName=txtUserName.getText();

usrPwd=txtUsrPwd.getPassword();

String pwd=new String(usrPwd);

 

//send the user name and password to the server

streamToServer.println(usrName+”:”+pwd);

 

//read the response from the server

String frmServer=(String)streamFromServer.readObject();

if(frmServer.equals(“Registered”))

{

new Login();

this.dispose();

}

else
if(frmServer.equals(“User Exists”))

{


showUsrExists(); //show error message

}

 

}//end of try

catch(Exception e)

{

System.out.println(“Exception “+e);

}

}//end of if

 

}//end of else

}//end of actionPerformed()

 

4. Login.java

public
void actionPerformed(ActionEvent e1)

{

JButton button=(JButton)e1.getSource();

if(button.equals(btnCancel))

{

this.dispose(); //close the current frame

}

else
if(button.equals(btnRegister))

{

new Register(); //call Register program

this.dispose();

}

else

{

 

try

{

//create socket and input-output socket streams

toServer=new Socket(“machine-name”,1001);

streamFromServer=new ObjectInputStream(toServer.getInputStream());

streamToServer=new PrintStream(toServer.getOutputStream());

 

//send message to server for login

streamToServer.println(“LoginInfo”);

UsrName=txtUsrName.getText();

UsrPwd=txtUsrPwd.getPassword();

strPwd=new String(UsrPwd);

 

//send the user name and password to the server

streamToServer.println(UsrName+”:”+strPwd);


//read the message from the server

String frmServer=(String)streamFromServer.readObject();


if(frmServer.equals(“Welcome”))

{

new clientInt(UsrName); //start the chat screen

this.dispose();

}

else

{

showdlg();//show error message

}

 

}//end of try

catch(Exception e)

{

System.out.println(“Exception Occured: “+e);

}

}//end of if..else

}//end of actionPerformed

 

SSL through JSSE

Simple client/sever includes SimpleSSLServer and SimpleSSLClient. We should configure KeyStore and TrustStore files before we operate the program.

We use keytool to generate KeyStore, clientStore and serverstore which contain the authorization for A, B and Server.

Establish authorization for Bob:


Check the authorization:


Generate certificate:


Export the certificate:


File list:


Operate server:


Operate client:


 

PKCS#7 implementation

Use java Security package. There is no PKCS#7 for digital signature in jdk. So we use BASE64 code as follows:

 

中国第一首航母瓦良格号

不得不说中国现在NB了,终于要搞出航母来了,虽然模型是人家苏联的,但当我第一次听到这个消息真的是很震撼。西方国家看不起中国,但中国在不断强大却是不争的事实,中国正在飞速发展,即使还存在很多问题。不管怎么说,自己祖国的强大还是很令人骄傲的。所以还是决定纪念一下祖国的荣耀,下面转载的是一篇分析瓦良格号作为战斗航母的文章:

导语

近日,国内几家官方网站登载了正在大连造船厂改建的“瓦良格”号航母的照片。上面显示,“瓦良格”号的改装已接近尾声,其涂装换成了中国海军舰艇标准的淡灰蓝色。不过对于瓦良格号最终扮演的角色却仍然存在争议,与国内军迷期待的不同,不少外国军事研究机构和媒体认为瓦良格号的最终用途并不是战略意义上的进攻型航母,只是一艘具有航母性质的训练舰。那事实果真如此吗,未来的瓦良格号性能又究竟如何呢?中华网军事将带来独家解析。

完全按战斗舰艇标准改装

随着这段时间,瓦良格航母上的雷达及武器系统的相继曝光。瓦良格的最终命运逐渐清晰起来,从瓦良格的武器系统和电子设备上看该舰绝不会仅仅是艘训练舰。

航母上安装的武器系统

从最近的图片来看,瓦良格号的近防系统已经非常明确,由FL-3000N近程防空导弹系统和730近防炮组成。FL-3000N近程防空导弹系统之前已在珠海航展展出过,该系统与美国的“拉姆”(RAM)反导弹导弹系统类似,不同之处在于,中国的这种武器系统采用24联装导弹发射装置,精确度较低。FL-3000N是3年前才推出的,使用的导弹比“拉姆”系统要小。FL-3000N导弹长2米,最大射程为9000米。该导弹弹径120毫米,现在采用的制导系统与“拉姆”类似,导弹采用被动雷达+红外成像双模制导,但是在飞行过程中不如“拉姆”灵活。据推测瓦良格号很有可能在其左前和右后装FL-3000N防空导弹,也可能四个方向上都装FL-3000N。

730近防炮重量是8吨,系7管火炮,长度有279厘米,火炮安置于箱形的炮塔上面,该系统可以提供对反舰导弹、飞机、近岸目标、小型舰艇和水雷等目标的点防御。730近防炮的射击速度在每分钟4200-5800发之间,该炮由两个备弹500发的弹药箱提供炮弹,可以发射高爆弹或者穿甲弹。该型近防炮对于小型目标的探测距离是8公里,对大中型目标的探测距离为15-20公里。一旦锁定目标,该近防炮可以在3公里的距离上将其击落。美媒称,该近防炮的性能超越了赫赫有名的美制20毫米“火神”密集阵系统。

从近防武器的种类来看,由于FL-3000N近程防空导弹已经在中国海军实验舰上安装测试过,而730近防炮更是已经广泛装备于052B/C型驱逐舰和054A型护卫舰上。因此,如果瓦良格仅是作为训练舰来测试相关装备的话,那么其完全没有必要安装这些近防武器系统。

从近防武器的数量上看,瓦良格号在左右两舷各装有2套FL-3000N和2套730近防炮,共4套FL-3000N和4套730近防炮,远远超过了美国的尼米兹级航母,这将使瓦良格号成为世界上近防能力最强的水面战斗舰艇。如果仅作为训练舰使用的话,瓦良格也没有必要安装如此多的近防火力的。而这些武器系统的安装,将会为瓦良格提供充分的近程防空火力,这说明了瓦良格改装的思路是按照一切从实战出发,使其成为一艘能够出海作战的舰艇。

目前航母已经安装多种雷达及电子设备

 

瓦良格上的雷达与电子设备

从瓦良格安装的雷达和电子设备看,该舰就更像是一艘作战舰艇了。根据最新的瓦良格改造现场图来分析,瓦良格上目前已经安装了中远程三坐标雷达,并极可能在近期安装中国自行制造的舰用相控阵雷达。

在该舰舰岛上层预留的相控阵雷达位置上,预计将会采用170神盾驱逐舰上的相控阵雷达。不过瓦良格安装的相控阵雷达在功率,可能功能以及外形尺寸上与前者有较大的提升和变化。170舰上的相控阵雷达可能是在俄国S-300系统使用的相控阵雷达改进而来。“神盾”舰作战系统具有几大特点:它的反应速度快,主雷达从搜索方式 转为跟踪方式仅需0.05秒,能有效对付作掠海飞行的超音速反舰导弹;它的抗干扰性能也很强,可在严重电子干扰环境下正常工作;在反击能力方面,该系统作战火力猛烈,可综合指挥舰上的各种武器,同时拦截来自空中、水面和水下的多个目标,还可对目标威胁进行自动评估,从而优先击毁对自身威胁最大的目标;而它的对空有效发现与锁定距离约为400千米;对海有效发现与锁定距离约为 300千米。此外,目前瓦良格号在主桅顶部已安装与052B驱逐舰类似的“顶板”三坐标对空/对海搜索雷达,从天线尺寸来看,其最大探测距离超过250公里。在火控及电子战系统方面,瓦良格可能装备有1座国产新型中近程搜索雷达、引导近防系统、2座347G型火控雷达 ;6座舰载干扰弹火箭发射炮、2座低频段雷达信号干扰机、以及与052C驱逐舰相似的多种电子战装备等。

如此齐全的雷达和电子战系统充分说明瓦良格并非训练舰。该舰上装备的相控阵与三坐标雷达,非常类似库兹涅佐夫号上“天空哨兵”与“顶板”雷达的高低搭配,在平时只使用“顶板”维持警戒,在出动舰载机作战时,大功率相控阵雷达开机,实现大空域监控和引导。而这些装备仅装在一艘训练舰上,真是大材小用。此外,瓦良格号的舰岛上也已安装了多个球状物,这些是通讯/卫星通讯天线和电子对抗天线。可以说,瓦良格号航母的武器和电子设备都是按照实战型军舰来进行配置的。

新舰艇服役为航母打基础

 

新型装备磨合时间长技术较为成熟

进入21世纪,随着国家经济实力的日益提高,能够拿出比较多的军费支持海军的装备建设,所以,这时一改上个世纪90年代的海军装备建设的弛缓,一大批拥有先进技术性能的新型水面舰艇出现。近年来,中国海军大批先进战舰接连服役,并逐步形成战斗力。从这些新舰艇的服役时间与磨合周期上来看,都为中国首艘航母的服役打下了基础。

在驱逐舰方面,短短数年之间江南造船厂生产的2艘052B和2艘052C大型导弹驱逐舰装备南海舰队;大连造出2艘051C大型防空导弹驱逐舰装备北海舰队;而处于对台军事斗争最前沿的东海舰队,在得到2艘从俄罗斯引进的956EM改进型现代舰后也与其他二个舰队一样拥有4艘大型导弹驱逐舰。

052C型防空导弹驱逐舰为中国海军新一代防空型导弹驱逐舰,目前共建2艘,分别是170号和171号,主要作战使命是负责作战编队的防空、反潜作战以及配合其它舰艇进行反舰攻击。2003年4月29日,170舰滑入长江,该舰后被命名为“兰州”号,在2004年7月4号正式加盟南海舰队。较晚开工的171舰亦于2004年底完工,展开试航作业。052C型防空导弹驱逐舰是中国第一型配备相控阵雷达和垂直导弹发射装置的驱逐舰,它的出现大大提升了中国海军的防空能力,中国海军也由此具备了区域防空能力。

2006年,中国海军列装了首艘051C型防空导弹驱逐舰。051C型驱逐舰设计用于装备舰对空导弹防御系统,填补了解放军海军在防御能力领域长期以来一直存在的差距。051C是中国海军排水量最大的导弹驱逐舰,装备了最具威力的新型SA—N一6舰空导弹垂直发射系统、相应的制导雷达和S-300舰空导弹。新型051C驱逐舰的服役大大提高了北海舰队和中国其它远洋舰队的区域防空能力。

护卫舰方面,中国也加快建设速度,054型、054A型护卫舰也先后下水并成批装备海军。于2003年9月在上海的沪东中华造船厂下水的054型导弹护卫舰首舰一出现在人们的视野里的时候,其漂亮简洁的外形设计就吸引了人们的目光。同我国之前建造的053H3“江卫II”型导弹护卫舰相比,054型导弹护卫舰在舰体设计上可以说有了巨大的进步,也是中国结束了中国护卫舰只适合近海作战的历史。

正当人们为054导弹护卫舰的出现而欢呼雀跃时,基于054舰体,装备了类似俄式雷达系统与类似美MK41型VLS装置的新型054A护卫舰又亮相了。总体上054A是追求防空、反潜、反舰三方面的平衡,以满足任务书上所规定的多用途护卫舰水平,而在事实上已具备现役导弹驱逐舰的大部分性能,特别是其比较高的反潜性能,可迅速弥补海军水面舰艇最为短缺的一个短板。相对于舰体脱胎换骨于庞大053系列而言的054导弹护卫舰,054A不但进一步优化舰体线型以更好合适远洋航行之需,而且还大幅度更换了其一直为外界或多或少诟病的电子及武器系统,成为我军最新、同时也是严格意义上的第一型远洋型多用途导弹护卫舰。

从以上舰艇的服役时间与周期上可以看出,中国海军的新型装备磨合相对时间长,技术也较为成熟。另外,从这批新舰的装备使用看,它们无一例外的全都作为战斗舰艇使用而不是训练舰或实验舰。所以根据中国海军的新型武器装备的装备沿革与发展周期来看,有理由相信瓦良格号将不可能只是以一艘训练的身份投入现役。

 

新型装备作战性能和用途为航母编队提供准备

如果未来航母进入中国海军服役,也需组建完整的航母战斗群。根据中国现有舰艇,防空舰只可以使用052C型驱逐舰或其改型,反潜可使用054系列护卫舰,还应配置核潜艇作为水下尖兵,警戒、对付敌方舰艇特别是敌核潜艇。具体设想为2艘052防空驱逐舰,4艘054反潜护卫舰,2艘核潜艇,1艘综合补给船。

从中国海军的新驱和新护的设计思路看,它们已明显摆脱了苏式舰艇的风格,而更多的靠近美国,这本身也说明我们为建造航母所做的准备。

最先进的052C驱逐舰应该说就是为了给航母护航而设计的,因为近海防御根本就用不了这么大的军舰。052C是中国首型能应付高强度空中威胁的防空舰艇,它的出现证明了中国舰艇科技挑战西方顶尖水平已经成为可能,使中国海军在面对潜在对手时,至少在个体部分拥有技术优势。尽管052C的排水量的垂直发射单元偏少,持续火力不足,与美国的宙斯盾舰存有明显差距。而中国在052C之后的一些更成熟技术,很可能已经应用到了正在建造的第二批次中华神盾舰上,随着第二批次中华神盾舰的开工,相信在一定程度上会弥补052C的不足之处。因此,052C将会在未来中国航母编队中担任主力防空舰的角色。

在中国海军的新型护卫舰上,目前也使用了更成熟技术。新出来的054A新护使用了更为先进的导弹标准化模块,该舰上的VLS系统是综合我国多年来的相关技术,研制出的一款新型的热发射型舰载导弹垂直发射系统。配合其装备的4个MR90照射雷达,不管是探测距离,目标追踪锁定,还是反应速度等都比之前的系统有根本区别。快速发射能力和开阔的射击角度,将会有效的配合052C作战,也会使“神盾”系统有了质的提高。在反潜作战方面,054A装备的反潜装备也是目前国产艇艇中最齐全的,主要包括反潜火箭发射器、反潜导弹、反潜鱼雷、反潜直升机及相关探潜设备,这些使具备了成为专业反潜舰的潜力。因此,在未来的航母编队中054A很可能会以类似于美国航母编队中的佩里级与斯普鲁恩斯级的混合体出现在其遍队中,扮演中近程防空与反潜的角色。

从海军现有兵力来看,116、115、170、171这4艘远程防空驱逐舰和4艘现代级驱逐舰、2艘052B级驱逐舰、8艘054A级护卫舰这14艘区域防空舰可以组成2个强大的驱护舰编队。可想而知如此多的新战舰不可能会为一艘训练型航母护航,因此瓦良格号作为中国首艘实战型航母投入现役是顺理成章的事情。

 

改装工程巨大成本高昂

包括简式防务周刊在内很多媒体都称瓦良格将来会作为中国海军的训练舰使用,并且还有平可夫不断地煽风点火,所以不少人就信以为真。因为他们认为瓦良格只剩个船壳而已,完全修复的成本比制造一艘新航母的费用还要高。但是他们完全低估了中国强大的实力,现在瓦良格不但修复了,并且装备了中国目前所有最新型舰载武器装备和雷达。只要瓦良格能够远航,只要甲板上能大批的起降战斗机。他就是战斗航母,而不是什么训练舰。试想有哪个国家会去用几十亿美元打造个训练舰,全世界又有哪一条航母是训练舰。

 

瓦良格改装工程巨大

首先要指出的是很多人对“瓦良格号主体结构严重破坏,使其成为一堆废铁”的传言信以为真。这是个流传很广的传言,外国媒体宣称曾在土耳其检查过这艘航母的破坏程度。他们判断,瓦良格号船体致命部位进行了连续爆破,修复这些受损部位所需成本远远大于直接建造新船。其内部的管道结构已经被严重腐蚀。但是很难想象外国情报机构怎么能在土耳其的海面上检查瓦的破坏程度,要知道,那是一艘没有电力和动力装置的航空母舰,没有图纸就贸然进入没有照明通风系统的航母是件非常危险的事情,光是通风问题就可能要了人的命,任何人在那种情况下都没有能力深入内部检查瓦的结构,虽然外国的情报人员不止一次登上过瓦良格,但他们是否真的深入瓦良格内部检查了,还是很值得怀疑的。

据去年俄罗斯的媒体披露:当年乌克兰想卖瓦良格。但是下家寥寥无几,并且给的价钱极少。在乌克兰一筹莫展的时候中国出面了,给的价钱很高。但前提是买船必须附带工程图纸和所有文件。在经过几次商谈后,双方达成协议。随之瓦良格的所有图纸和文件在其之前就先来到中国。因此可以说,瓦良格不是二手货,只是换个地方继续建造罢了。并且在这里中国给了他新的生命和更强的武器装备!

从2002年至2005年间,大批中方工程技术人员对瓦良格号进行了全面检测。同时包括居住舱、工作舱、引擎、发电设备在内的航母内部整修工程也逐步展开。在解决了航母特种钢材的技术引进问题后,瓦良格号于2005年进入干船坞进行舰体维护。经过一年多的施工,瓦良格号已油漆一新, 舰桥部分也做了防锈处理,甲板完成了初步翻新。而近年来,不断增加的脚手架、大量施工人员、神秘的集装箱、中国海军舰艇的蓝灰色涂装以及在相继出现武汉、葫芦岛“航母训练基地”报道后,外界相信瓦良格号航母的军事用途已经显露无疑。

2011年根据最新的西方媒体及中国网络上发布的照片显示,瓦良格号工程似乎进入冲刺阶段,大量设备完成栖装,舰岛相控阵雷达预装清晰可见。“瓦良格”舰岛上已林立雷达、天线等电子设备,船舷上也装备了防空武器。

瓦良格号是库兹涅佐夫级航母的二号舰,从该舰的舰体水平上看,其排水量比库兹涅佐夫还要大,而一艘排水量超过6万吨,武器系统及电子设备都很齐全的航母,只是作为一艘训练舰服役是难以想象的。

 

瓦良格号的修复成本相当高昂

前面提到,瓦良格号航母已经安装了完整的防空武器和电子设备。这些武器设备的价格极其昂贵。参考国外同类装备,一门730近防炮的价值数千万人民币,FL-3000N拦截导弹每枚造价人民币200万,一套远程相控阵雷达的价格则以亿元来进行计算。现在已安装的武器和电子设备,其采购和安装费用已远远超过当初2000万美元的拍卖价格。倘若只将瓦良格号航母当作训练航母使用,这些昂贵的武器电子设备大都是没有必要安装的。

此外,参考俄罗斯为印度改装的基辅级航母“戈尔什科夫海军上将”号,印度总共花费了接近30亿美元。而排水量比基辅级大的多的瓦良格号改装费用可想而知。据前军事科学院政委张序三说按照当时(90年代末水平)计算,要花500亿元人民币才能把瓦良格号完全建成,后来再一计算,费用追加到700亿元。而数百亿元这样奢侈的花费,只用于一艘训练舰的改装,这对于中国海军来说是绝对无法接受的。

虽然中国发展瓦良格号航母,是改造而非建造,但这同样可为中国独立研发国产航母积累经验。改进并使用瓦良格号,有助于中国摸清航母的基本特征和使用规则。航母是大工业化的产物,航母战斗群是超大的“工业联合体”,发展与之配套的相关技术和产业,其意义已经远远超出海上作战范畴。如果瓦良格号最终能够投入部署,还将对中国的军事现代化建设甚至军事工业产生重大影响。而从航母建造的效费比看,目前世界上还没有任何一个国家会去用几十亿美元来建造一艘训练舰,所以说瓦良格号就是一艘不折不扣的具备实战能力的进攻型航母。

其他证据

中国在T-10K的基础上仿制的歼-15

舰载机分析

自身的武器系统、电子设备已证明瓦良格不是训练舰,除此以外,从瓦良格号的舰载机配置方案分析,瓦良格号将会是一艘实战型航母。

实际上,关于中俄谈判购买苏-33舰载机的传闻由来已久。俄新社曾报道称,从2006年起,中国就开始和俄罗斯就购买苏-33战斗机进行谈判,并称该型战斗机将用于装备中国未来的航母。但是最终中国购买苏33的谈判由于种种因素而破裂。

俄罗斯要求中国一次性购买40架苏33,实际上中国只需要买2架苏33来揣摩就可以了。中国揣摩苏27之后,搞出了歼11。大家都知道,苏33是在苏-27的基础上研制的单座双发舰载机。在这种情况下,俄罗斯拒绝对华出售苏-33战斗机。在全世界都猜测中国要以歼11为基础研制航母舰载机时,终于沈阳飞机公司在2009年完成了第一架歼-15试飞型原型机的生产,目前该机正在进行试飞阶段。据称歼-15是在俄罗斯的苏-33的试验机T-10K的基础上仿制而来的海军航母舰载战斗机,外形酷似苏-33。总体看来,歼-15应当是中国在T-10-3基础上,大量结合在国产歼-11B和歼-11BS上取得的成熟技术而研制出的一种全新舰载机。可以说其在机体材料、航电、火控雷达系统和飞控系统等则是纯种的中国技术。而如果瓦良格仅仅是承担训练任务的话,中国只需少量引进苏33就可以了,完全没有必要耗费大量资金自行研制新的舰载机。

在舰载预警机方面,除了中国海军订购的9架卡31预警直升机外,目前还出现了装配机载搜索雷达和指挥系统外部天线的直-8直升机照片,这表明中国正在从俄罗斯进口的预警直升机基础上研制了同类产品。据悉这种直-8AEW预警直升机将装备到中国首批航母上。而无论是直-8AEW还是歼15的出现,说明了中国一直致力于武器装备的本土化研究,这些也预示着中国将要在瓦良格号航母上装备国产战机。因此,搭载国产战机的瓦良格号必将成为具有实战能力的航母。

 

瓦良格号引进的曲折历程

目前,中国公司一共从海外购买了四艘废旧航母。除了瓦良格号外,还有停留在天津的基辅号和停放深圳的明斯克号,它们都改造成了海上娱乐设施。另外一艘是从澳大利亚购置的墨尔本号。这其中就属瓦良格号的引进过程最为曲折。

瓦良格号于1998年公开拍卖,最后由澳门创律旅游娱乐公司以“赌船”名义投得。1999年7月,澳门公司雇用拖船,拖着瓦良格号开始了漫长的航程。不料,当该船驶抵土耳其北部黑海水域,准备通过土耳其控制的博斯普鲁斯海峡时,“在第三国的提醒下”,土耳其政府加以拦阻,强行命令瓦良格号退回黑海。土耳其方面以“船体过大、影响博斯普鲁斯海峡其它船只正常航行”等为理由,拒绝瓦良格通过。

瓦良格号受困黑海期间,创律公司每天向ITC拖船公司支付8500美元,每个月还必须向乌克兰港口当局缴付1.7万美元的停泊费,损失相当惨重。而最初通过竞标,以2000万美元的代价买下瓦良格,全部算下来实际总共花了上亿美元。相信中国是不可能耗费上亿美元只买来一艘今后充当训练任务的舰体的。

当时,西方媒体也借机纷纷大肆炒作“中国航母威胁论”。于是中国与土耳其从此开始了长达一年半之久的谈判。1999年12月19日,美国由幕后转到台前,驻土耳其大使皮尔森会见了土国务部长米尔札欧鲁,表达了美国政府对瓦良格号的关切。米尔扎欧鲁向总理艾西费特呈交报告,详述瓦良格号通过博斯普鲁斯海峡可能发生的技术问题,建议拒绝中国的要求,禁止让瓦良格号通过海峡。美国对瓦良格如此关注,也可以看出瓦良格号的重要意义。因为此时基辅号航母已经拖到了天津,连同1998年9月从韩国转卖到中国的明斯克号,中国境内有两艘废航母。而对这两艘航母落户中国美国并未做出如此强烈的反应。而相比基辅级航母,具有大型航母船体的瓦良格在西方看来是潜在的“中国航母威胁”。所以,通过西方对瓦良格如此强烈的反应,也从侧面证实了瓦良格不会只是一艘训练舰这么简单。

此后,中国与土耳其之间一直进行外交接触,最终土耳其同意让瓦良格号通过其海峡。但土方也向中国提出瓦良格号通行海峡时必须具备的20项极为苛刻的安全条件,其中就包括要10个亿美元的“风险保证金”!中国承诺,将完全负担瓦良格号通过海峡的安全保险以及可能造成损失的赔偿责任,并且将从中国派遣几艘大马力的拖船,协助拖行瓦良格号,以保证通过海峡的航行安全。这样直到2002年3月3日,在经历诸多波折后,瓦良格航母才最终抵达大连港。可以说当时中国政府在谈判中也是顶着“中国航母威胁论”承担了极大的政治风险。由此也可以推断中国冒如此大的风险只引进一艘训练舰是不可能的。从中国引进瓦良格所付出的巨大代价,证明了瓦良格将会是中国首艘具有作战能力的航母。

结 语

瓦良格号航母改建工程已进入收尾阶段,不少外国媒体预测,今年7月1日,中国第一艘航母瓦良格号将试航。从瓦良格号目前已安装的大量武器设备和各国海军航母使用经验来看,瓦良格号决不仅仅是一艘训练舰,而是具备实战能力的进攻型航母。中国海军经过近60年的发展,整体的水平与往昔不可同日而语。新建造的驱逐舰和护卫舰譬如051C/052C/054A等等,设计思想与舰艇的战斗力都走上了一个更高的台阶。以现在掌握的情况来分析,瓦良格号肯定是中国海军的第一艘实战型航空母舰,它将填补中国海军远洋作战能力的空白。就像中国国防部长梁光烈所讲的那样:“大国中没有航母的只有中国,中国不能永远没有航母。”

原文作者:王金志

原文地址:http://military.china.com/zt/2011/cv/

更多文章:

  • 美媒:中国航母将为石油而战 印度将是首敌图
  • 韩:瓦良格航母有4大缺陷 但适合中国
  • 台媒:大陆首艘航母命名考验北京政治智慧图
  • 美刊声称中国航母威胁运输线 统一台湾后更可怕
  • 外媒:中国新航母安装首批武器
  • 俄:中国航母5年后进入太平洋
  • 官媒猜想瓦良格号航母:惊起外媒“哇”声一片图
  • 尹卓:瓦良格号非驴非马 战力有缺陷
  • 美军司令:中国航母最早今夏试航
  • 瓦良格号性能与西方航母差距大 舰载机不超过50架
  • 汉和:瓦良格号至少试验8年 上海建2艘同级舰
  • 媒体披露中国第一艘航母照 外交部回应图
  • 最新:“瓦良格”号航母舰岛已涂上灰漆?!图
  • 最新:传说位置已挪动的“瓦良格”号航母!图
  • WordPress3.0最新技巧

    Woedpress是大多数写博客的朋友所喜欢选择使用的博客平台,而Wordpress技巧自然就成了众多博友们普遍讨论的热门话题,因此,我决定收集并编写10个新的非常有用的Wordpress技巧,且照旧与朋友们一起分享。

    1.去除评论自动链接

    平时读者来给我们的文章发表评论的时候,评论中就会附带有一个url,Wordpress会自动将它转换为链接的形式,虽然很有用,但有时有的链接未免带有“垃圾”的性质,有的朋友可能需要将这些自动链接去掉,那么,下面提供一个解决方法。

    将下面这条代码粘贴到主题文件functions.php 中,然后保存,所有评论的自动链接将悄然消失:

    remove_filter('comment_text', 'make_clickable', 9);

    2.通过邮件自动将博客更新告知用户

    对于个人博客来说,实现这样的功能非常有好处,你的读者用户可以及时知道你博客发表了新的文章。下面的这条代码会搜索你的数据库并获取读者用户的邮件地址,Wordpress会根据这些邮件地址自动发送博客更新的信息。将下面的代码放到functions.php文件中即可:

    function email_members($post_ID)  {
        global $wpdb;
        $usersarray = $wpdb->get_results("SELECT user_email FROM $wpdb->users;");
        $users = implode(",", $usersarray);
        mail($users, "New WordPress recipe online!", 'A new recipe have been published on http://www.catswhocode.com');
        return $post_ID;
    }
    
    add_action('publish_post', 'email_members');

    注意:目前此代码还没有取消订阅的功能,使用时请慎重考虑!

    3.将Twitter消息发布日期显示为“发布于多少天前”的格式

    许多人都不知道Wordpress有一条内置的功能函数human_time_diff()可以实现这样的日期显示格式,只需将下面这条代码粘贴到你想要显示“发布于多少天前”的任何loop循环之间即可:

    发布于<?php echo human_time_diff(get_the_time(<'U'), current_time('timestamp')) . ' ago'; ?>

    下面这一段代码就是将时间格式转换为“发布于多少天前”的Wordpress PHP功能函数:

    function  timeAgo($timestamp, $granularity=2, $format='Y-m-d H:i:s'){
            $difference = time() - $timestamp;
            if($difference < 0) return '0 seconds ago';
            elseif($difference < 864000){
                    $periods = array('week' => 604800,'day' => 86400,'hr' => 3600,'min' => 60,'sec' => 1);
                    $output = '';
                    foreach($periods as $key => $value){
                            if($difference >= $value){
                                    $time = round($difference / $value);
                                    $difference %= $value;
                                    $output .= ($output ? ' ' : '').$time.' ';
                                    $output .= (($time > 1 && $key == 'day') ? $key.'s' : $key);
                                    $granularity--;
                            }
                            if($granularity == 0) break;
                    }
                    return ($output ? $output : '0 seconds').' ago';
            }
            else return date($format, $timestamp);
    }

    上面那段函数包含了3个参数:

    timestamp: 日期
    granularity: 时间间隔长度. 默认为 2 (1天, 15小时前)
    format: 日期显示格式. 默认为 Y-m-d H:i:s.

    调用方法如下:

    $time= timeAgo($dateRef);

    或者你也可以在Wordpress中使用这条timeAgo() 函数:

    echo timeAgo(get_the_time('U'));

    4.在RSS feed中显示文章缩略图

    在WordPress 2.9中开始引入了这样的一条函数:the_post_thumbnail() ,能够帮助我们设置并显示文章缩略图,只可惜在RSS订阅源中没有内置的调用函数,这里我们就为它添加上。

    只要将下面的这段代码粘贴到functions.php中,保存,文章缩略图就自动显示在你的RSS订阅源中了:

    function diw_post_thumbnail_feeds($content) {
        global $post;
        if(has_post_thumbnail($post->ID)) {
            $content = '
    <DIV>' . get_the_post_thumbnail($post->ID) . '</DIV>
    ' . $content;
        }
        return $content;
    }
    add_filter('the_excerpt_rss', 'diw_post_thumbnail_feeds');
    add_filter('the_content_feed', 'diw_post_thumbnail_feeds');

    5.阻止外部请求

    默认情况下,Wordpress会在后台自动接收来自外部的一些请求,如Wordpress版本更新,Wordpress新闻等消息,安装Wordpress之后,你每次打开后台都会看到这些消息,如果你不想看到这些消息,使用下面的方法来解决。

    在wp-config.php文件中加上以下两行:

    define('WP_HTTP_BLOCK_EXTERNAL', true);

    但是你也可以添加白名单以接收某些来自外部的请求:

    define('WP_ACCESSIBLE_HOSTS', 'rpc.pingomatic.com');

    修改其中的rpc.pingomatic.com为你自己所需。

    6.简易调试模式

    当你的WordPress运行出现问题的时候,你可能就会使用这个超级实用的调试工具WP_DEBUG,而默认情况下,你需要在wp-config.php添加一段代码以让调试模式生效。如果你想在Wordpress运行正常之下轻松进入调试模式的话,可以编辑wp-config.php文件,在里面找到这一行:

    define('WP_DEBUG', true);

    然后将其替换成:

    if ( isset($_GET['debug']) && $_GET['debug'] == 'debug')
      define('WP_DEBUG', true);

    然后增加一个GET参数到你要访问的页面的url链接,如下:

    http://www.catswhocode.com/blog/about?debug=debug

    另外,如果默认未开启的话,也可以直接在wp-config.php中把上述那句话的false改成true,然后进入后台就会有各种提示,调试完成以后又可以改回false. 这种方法比较简单方便。

    当然,以安全起见,你应该把debug替换成一个随机词,这样就没有人会访问到你调试模式下的网页了。

    7.在主题文件中使用WordPress简码

    创建WordPress简码非常简单,可以让你在文章或网页里面添加RSS订阅、Google地图、相册等内容。那是否可以在主题文件中输出简码呢?答案是肯定的。WordPress有个内置函数,叫做do_shortcodes(),只需要为其加上一个参数,就可以显示你想要的简码。

    do_shortcode('[简码名称]');

    上面的“[简码名称]”就是我们想要显示的简码了,你可以修改为别的名称。

    8.允许上传更多的文件类型

    在Wordpress中,一般来说,如果你要上传一个不是那么常见类型的文件,往往会出现错误。因为WP会禁止你上传其它的文件类型。幸运的是,你可以增加新的文件类型到你的WordPress白名单,方法也很简单,只要把下面这段代码粘贴到functions.php中就大功告成了。

    注意:文件类型名字必须用“|”线隔开

    function addUploadMimes($mimes) {
        $mimes = array_merge($mimes, array(      'tmbundle|tmCommand|tmDragCommand|tmSnippet|tmLanguage|tmPreferences' => 'application/octet-stream'
        ));
        return $mimes;
    }
    add_filter('upload_mimes', 'addUploadMimes');

    9.简码调用Google Docs的PDF阅读器

    Google Docs(谷歌文档)是一个非常方便的在线阅读.pdf/.doc/.xsl文件的方式。如果你也想在你的博客中和你的读者分享一个PDF文件,何不尝试在Google Docs打开而不是强制下载呢?方法十分简单,只要加入如下代码到functions.php即可。

    function pdflink($attr, $content) {
        return '<A href="http://docs.google.com/viewer?url=' . $attr['href'] . '">'.$content.'</A>';
    }
    add_shortcode('pdf', 'pdflink');

    保存文件后,你可以把这段代码放到对应的文章或网页中, 语法如下:
    【pdf href=”http://yoursite.com/linktoyour/file.pdf”】查看PDF文件【/pdf】
    使用时须将其中的【 】改为[ ]。

    10.检测访问者的浏览器

    这段代码所做的事情很简单,就是检测访问者的浏览器名字并把它加到body_class()函数中,这样一来,你就可以极其轻松地解决浏览器兼容的问题。将这段代码放到functions.php中。

    add_filter('body_class','browser_body_class');
    function browser_body_class($classes) {
        global $is_lynx, $is_gecko, $is_IE, $is_opera, $is_NS4, $is_safari, $is_chrome, $is_iphone;
        if($is_lynx) $classes[] = 'lynx';
        elseif($is_gecko) $classes[] = 'gecko';
        elseif($is_opera) $classes[] = 'opera';
        elseif($is_NS4) $classes[] = 'ns4';
        elseif($is_safari) $classes[] = 'safari';
        elseif($is_chrome) $classes[] = 'chrome';
        elseif($is_IE) $classes[] = 'ie';
        else $classes[] = 'unknown';
        if($is_iphone) $classes[] = 'iphone';
        return $classes;
    }

    这段函数输出的结果类似如下:
    <body class=”home blog logged-in safari”>

    参考文章:10个最新的WordPress技巧