導航:首頁 > 源碼編譯 > 網景公司網站編譯軟體

網景公司網站編譯軟體

發布時間:2025-03-15 20:53:03

㈠ 什麼是開源軟體和不開源軟體

1、開放源碼軟體(open-source)是一個新名詞,它被定義為描述其源碼可以被公眾使用的軟體,並且此軟體的使用,修改和分發也不受許可證的限制。開放源碼軟體通常是有right的,它的許可證可能包含這樣一些限制: 蓄意的保護它的開放源碼狀態,著者身份的公告,或者開發的控制。「開放源碼」正在被公眾利益軟體組織注冊為認證標記,這也是創立正式的開放源碼定義的一種手段。


2、不開源軟體就是封閉源代碼軟體,相對開放源代碼而言,為封閉源代碼軟體的簡稱。 只要源代碼不容易獲取,就被視為閉源軟體。閉源軟體,通常是在電子游戲開發中,付足夠的費用即可得到部分源代碼,如torque引擎,但一定是有限使用(通常為次數和不準透露),故不是開源軟體。


(1)網景公司網站編譯軟體擴展閱讀:

開放源碼軟體主要被散布在全世界的編程者隊伍所開發,但是同時一些大學,政府機構承包商,協會和商業公司也開發它。開放源碼軟體在歷史上曾經與UNIX,Internet聯系得非常緊密。

在這些系統中許多不同的硬體需要支持,而且源碼分發是實現交叉平台可移植性的唯一實際可行的辦法。在DOS,Windows,Macintosh平台上僅僅有很少的用戶有可用的編譯器,開放源碼軟體更加不普遍。對開放源碼開發模式的更詳細的討論請看Eric Raymond寫的「The Cathedral and the Bazaar」。

㈡ 網頁設計和網站開發用到的技術有哪些

A — AJAX
AJAX 全稱為「 Asynchronous javaScript and XML 」(非同步 JavaScript 和 XML ),是一種創建互動式網頁應用的 網頁開發 技術。根據Ajax提出者Jesse James Garrett建議,AJAX:

使用 XHTML + CSS 來表示信息;
使用 JavaScript 操作 DOM (Document Object Model)進行動態顯示及交互;
使用 XML 和 XSLT 進行數據交換及相關操作;
使用 XMLHttpRequest 對象與 Web伺服器 進行非同步數據交換;
使用 JavaScript 將所有的東西綁定在一起。
類似於 DHTML 或 LAMP ,AJAX不是指一種單一的技術,而是有機地利用了一系列相關的技術。事實上,一些基於AJAX的「派生/合成」式(derivative/composite)的技術正在出現,如 AFLAX 。

B — Browser

網頁瀏覽器 是個顯示 網頁伺服器 或文件系統內的文件,並讓用戶與此些文件交互的一種 軟體 。它用來顯示在 萬維網 或 區域網
等內的文字、圖像及其他信息。這些文字或圖像,可以是連接其他網址的超連結,用戶可迅速及輕易地瀏覽各種信息。大部分網頁為 HTML
格式,有些網頁需特定瀏覽器才能正確顯示。 個人電腦 上常見的網頁瀏覽器按照2010年1月的市場佔有率依次是 微軟 的 Internet
Explorer 、 Mozilla 的 Firefox 、 Google 的 Google Chrome 、 蘋果公司 的 Safari 和
Opera軟體公司 的 Opera 。瀏覽器是最經常使用到的 客戶端程序 。Web開發人員應該確保其程序在各個主流瀏覽器中都能正常工作。

C — CSS

層疊樣式表, 又稱: 串樣式列表 ,英文: Cascading Style Sheets ,簡寫為 CSS ,由 W3C
定義和維護的標准,一種用來為結構化文檔(如 HTML 文檔或 XML 應用)添加樣式(字體、間距和顏色等)的 計算機語言 。目前最新版本是
CSS 2.1,為W3C的候選推薦標准。下一版本CSS 3仍然在開發過程中。

D — DOM

文檔對象模型 (Document Object Model,簡稱DOM),是 W3C 組織推薦的處理 可擴展置標語言
的標准編程介面。Document Object Model的歷史可以追溯至1990年代後期微軟與 Netscape 的「 瀏覽器大戰
」(browser wars),雙方為了在 JavaScript 與 JScript
一決生死,於是大規模的賦予瀏覽器強大的功能。微軟在網頁技術上加入了不少專屬事物,計有VBScript、ActiveX、以及微軟自家的D HTML
格式等,使不少網頁使用非微軟平台及瀏覽器無法正常顯示。DOM即是當時蘊釀出來的傑作。

E — Events

事件 是可以被控制項識別的操作,如按下確定按鈕,選擇某個 單選按鈕 或者 復選框 。每一種控制項有自己可以識別的事件,如 窗體 的載入、單擊、雙擊等事件,編輯框(文本框)的文本改變事,等等,現代的Web應用程序很大程度上依靠事件驅動。

事件有系統事件和用戶事件。系統事件由系統激發,如時間每隔24小時,銀行儲戶的存款日期增加一天。用戶事件由用戶激發,如用戶點擊按鈕,在文本框中顯示特定的文本。 事件驅動 控制項執行某項功能。觸發事件的對象稱為事件發送者;接收事件的對象稱為事件接收者。

使用事件機制可以實現:當類對象的某個狀態發生變化時,系統將會通過某種途徑調用類中的有關處理這個事件的方法或者觸發控制項事件的對象就會調用該控制項所有已注冊的事件處理程序等。

F — Firebug

Firebug 是 網頁瀏覽器 Mozilla Firefox
的一個擴展,是一個除錯工具。用戶可以利用它除錯、編輯、甚至刪改任何網站的 CSS 、 HTML 、 DOM 、與 JavaScript
代碼。Firebug 也有提供其他網頁開發工具,例如 Yahoo! 的網頁速度優化建議工具 YSlow 。Firebug是哈維( Joe
Hewitt )撰寫的。他是最初Firefox創始者之一。

G — Grid

網格 ,也稱 柵格 ,不過從定義上說,柵格更為准確些。網上找個一個對網頁柵格系統比較恰當的 定義
:以規則的網格陣列來指導和規范網頁中的版面布局以及信息分布。網頁柵格系統是從平面柵格系統中發展而來。對於網頁設計來說,柵格系統的使用,不僅可以讓
網頁的信息呈現更加美觀易讀,更具可用性。而且,對於前端開發來說,網頁將更加的靈活與規范。如果有很多CSS框架支持柵格功能,可參考文章《
介紹27款經典的CSS框架 》。

H — HTML

超文本置標語言 ( 英文 : HyperText Markup Language , HTML )是為「 網頁 創建和其它可在 網頁瀏覽器
中看到的信息」設計的一種 置標語言 。HTML被用來結構化信息——例如標題、段落和列表等等,也可用來在一定程度上描述文檔的外觀和 語義 。由
蒂姆·伯納斯-李 給出原始定義,由 IETF 用簡化的 SGML (標准通用置標語言)語法進行進一步發展的HTML,後來成為國際標准,由
萬維網聯盟 (W3C)維護。

最新版本是 HTML5 它是HTML下一個的主要修訂版本,現在仍處於發展階段。目標是取代1999年所定訂的 HTML 4.01和
XHTML 1.0 標准,以期能在互聯網應用迅速發展的時候,使網路標准達到符合當代的網路需求。廣義論及HTML5時,實際指的是包括HTML、
CSS 和 JavaScript 在內的一套技術組合。

I — IE

Windows Internet Explorer (舊稱 Microsoft Internet Explorer ,簡稱
Internet Explorer ,縮寫 IE ),是 微軟公司 推出的一款 網頁瀏覽器
。截至2010年9月止,統計的數據顯示Internet Explorer的 市場佔有率
高達59.65%。雖然它依然是使用最廣泛的網頁瀏覽器,但與 2003年 最高峰時相比,市場佔有率相差超過30%。

Internet Explorer對一些標准化技術都有一定程度上的支持,但亦有很多運行上的差距和兼容性的故障
,這導致技術開發者的批評日益增加。批評增加的情況,在很大程度上是歸因於Internet
Explorer的競爭對手相對地已提供完全的技術支持,標准規格(Standards-compliant)的應用亦越來越廣泛起來。因為
Internet Explorer在全球廣為應用,網路開發者們在尋求 跨平台 的代碼時常常會發現Internet
Explorer的漏洞、私有的功能集合和對標准支持的不完善。

2011年3月14日發布的Internet Explorer
9瀏覽器大幅提高對CSS3和HTML5等W3C規范的支持程度,這個版本也是Internet
Explorer瀏覽器第一個採用GPU加速的版本,正式版於Acid3測試中獲得95/100分,相比以往版本有很大進步。可以認為,從
Internet Explorer 9開始,Internet Explorer瀏覽器對W3C規范的支持將不再是問題。

J — JavaScript

JavaScript 是一種廣泛用於 客戶端 Web開發 的 腳本語言
,常用來給HTML網頁添加動態功能,比如響應用戶的各種操作。它最初由 網景公司 的 Brendan Eich
設計,是一種動態、弱類型、基於原型的語言,內置支持類。JavaScript是 Sun公司 的注冊商標。 Ecma國際
以JavaScript為基礎制定了 ECMAScript
標准。JavaScript也可以用於其他場合,如伺服器端編程。完整的JavaScript實現包含三個部分: ECMAScript ,
文檔對象模型 , 位元組順序記號 。

Netscape公司在最初將其腳本語言命名為LiveScript來Netscape在與Sun合作之後將其改名為JavaScript。
JavaScript最初受 Java
啟發而開始設計的,目的之一就是「看上去像Java」,因此語法上有類似之處,一些名稱和命名規范也借自Java。但JavaScript的主要設計原則
源自 Self 和 Scheme
.JavaScript與Java名稱上的近似,是當時網景為了營銷考慮與Sun公司達成協議的結果。為了取得技術優勢, 微軟 推出了 JScript
來迎戰JavaScript的 腳本語言 。為了互用性, Ecma國際 (前身為 歐洲計算機製造商協會
)創建了ECMA-262標准(ECMAScript)。現在兩者都屬於 ECMAScript 的實現。盡管JavaScript作為給非程序人員的
腳本語言 ,而非作為給程序人員的 編程語言 來推廣和宣傳,但是JavaScript具有非常豐富的特性。

K — Keyword Optimization

關鍵詞優化 ,也叫 搜索引擎優化 ( Search Engine Optimization ,簡稱 SEO )是一種利用 搜索引擎
的搜索規則來提高目的 網站 在有關搜索引擎內的排名的方式。由於不少研究發現,搜索引擎的用戶往往只會留意搜索結果最前面的幾個條目,所以不少 網站
都希望通過各種形式來影響搜索引擎的排序。當中尤以各種依靠廣告維生的網站為甚。

所謂「針對搜索引擎作優化的處理」,是指為了要讓網站更容易被搜索引擎接受。搜索引擎會將網站彼此間的內容做一些相關性的數據比對,然後再由 瀏覽器 將這些內容以最快速且接近最完整的方式,體現給搜索者。

搜索引擎優化對於任何一家網站來說,要想在網站推廣中取得成功,搜索引擎優化都是至為關鍵的一項任務。同時,隨著搜索引擎不斷變換它們的排名演算法
則,每次演算法上的改變都會讓一些排名很好的網站在一夜之間名落孫山,而失去排名的直接後果就是失去了網站固有的可觀訪問量。所以每次搜索引擎演算法的改變都
會在網站之中引起不小的騷動和焦慮。可以說,搜索引擎優化是一個愈來愈復雜的任務。

L — Less

Less
最早是一個ruby的gem,讓CSS具有動態語言的特性,這些特性包括變數,操作符,嵌套規則。其實Less真正的作用是將使用高級特性的CSS轉換成
標準的CSS。這些都是在Web客戶端發起請求時通過Http
Handler來完成的。也可以是編輯時就完成的。此外,Less可以配置成自動最小化所生成的CSS文件,不僅節省了帶寬,並且使最終用戶體驗更上一
層。另外有.Net版本的 Less 。

M — MVC

MVC模式 (Model-View-Controller)是 軟體工程 中的一種 軟體架構
模式,把軟體系統分為三個基本部分:模型(Model)、視圖(View)和控制器(Controller)。MVC模式最早由 Trygve
Reenskaug 在1974年提出,是 施樂帕羅奧多研究中心 (Xerox PARC)在20世紀80年代為程序語言 Smalltalk
發明的一種軟體設計模式。 MVC模式
的目的是實現一種動態的程序設計,使後續對程序的修改和擴展簡化,並且使程序某一部分的重復利用成為可能。除此之外,此模式通過對復雜度的簡化,使程序結
構更加直觀。軟體系統通過對自身基本部份分離的同時也賦予了各個基本部分應有的功能。

N — Node.JS

Node 是一個Javascript運行環境(runtime) , 實際上它是對Google V8 引擎(應用於Google
Chrome瀏覽器)進行了封裝。 V8 引
擎執行Javascript的速度非常快,性能非常好。Node對一些特殊用例進行了優化,提供了替代的API,使得V8在非瀏覽器環境下運行得更好。例

如,在伺服器環境中,處理二進制數據通常是必不可少的,但Javascript對此支持不足,因此,V8.Node增加了Buffer類,方便並且高效地
處理二進制數據。因此,Node不僅僅簡單的使用了V8,還對其進行了優化,使其在各環境下更加給力。 Node.js
包羅萬象,但最主要的一點是,它提供了一種在Web瀏覽器之外運行Javascript的途徑。Javascript廣泛應用於網站的前端開發。Node
使得這種流行的編程語言能夠在更多環境下運行,甚至是網站的伺服器端。

O — Object

對象 (object),是 面向對象 (Object Oriented) 中的術語,既表示客觀世界 問題空間
(Namespace)中的某個具體的事物,又表示軟體系統 解空間 中的基本元素。在軟體系統中,對象具有唯一的 標識符 ,對象包括 屬性
(Properties)和 方法 (Methods),屬性就是需要記憶的信息,方法就是對象能夠提供的服務。在面向對象(Object
Oriented) 的軟體中,對象(Object)是某一個 類 (Class)的 實例 (Instance)。

P — PHP

PHP ( H ypertext P reprocessor )是一種在電腦上運行的 腳本語言 ,主要用途是在於處理 動態網頁
,也包含了 命令行 運行介面(command line interface),或者產生 圖形用戶界面 (GUI)程序。PHP最早由 Rasmus
Lerdorf 在1995年發明,而現在PHP的標准由PHP Group和開放源代碼社區維護。PHP以PHP
License作為許可協議,不過因為這個協議限制了PHP名稱的使用,所以和開放源代碼許可協議 GPL 不兼容。

PHP的應用范圍相當廣泛,尤其是在網頁程序的開發上。一般來說PHP大多運行在網頁伺服器上,通過運行PHP代碼來產生用戶瀏覽的網頁。PHP可
以在多數的伺服器和操作系統上運行,而且使用PHP完全是免費的。根據2007年4月的統計數據,PHP已經被安裝在超過2000萬個網站和100萬台服
務器上。

Q — Query

查詢 ,有很多種意思。例如查詢語言用來和存儲數據的擴展系統交互,一個很好的例子就是SQL用來操作關系資料庫。另一種意思是,一個查詢字元串,作為URL的一部分用於Web應用程序中傳遞數據,查詢字元串的格式一般是鍵值對形式。

R — Regular Expressions

正則表達式 ( 英語 :Regular Expression、regex或regexp,縮寫為RE),也譯為 正規表示法 、 常規表示法
,在 計算機科學 中,是指一個用來描述或者匹配一系列符合某個 句法 規則的 字元串 的單個字元串。在很多 文本編輯器
或其他工具里,正則表達式通常被用來檢索和/或替換那些符合某個模式的文本內容。許多 程序設計語言 都支持利用正則表達式進行字元串操作。例如,在
Perl 中就內建了一個功能強大的正則表達式引擎。正則表達式這個概念最初是由 Unix 中的工具軟體(例如 sed 和 grep )普及開的。

S — Source Control

源代碼管理 ,也稱 版本控制 ,是一種 軟體工程 技巧,藉此能在軟體開發的過程中,確保由不同人所編輯的同一程式檔案都得到同步。 軟體設計師
常會利用版本控制來追蹤、維護 源碼 、 文件 以及 設定檔 等等的更動,並且提供控制這些更動控制權的 程序 。在最簡單的情況下, 軟體設計師
可以自己保留一個程式的許多不同版本,並且為它們做適當的編號。這種簡單的方法已被用在很多大型的軟體專案中。這是一個可以達到目的的方法,但不夠有效
率。除了得同時維護很多幾乎一樣的 程式碼 備份外;而且極度依賴 軟體設計師 的自我修養與開發紀律,但這卻常是導致錯誤發生的原因。

有時候,一個程式同時存有兩個以上的版本也有其必要性,例如:在一個為了部署的版本中 程式錯誤
已經被修正、但沒有加入新功能;在另一個開發版本則有新的功能正在開發、也有新的錯誤待解決,這使得同時間需要不同的版本並修改。此外,為了找出只存在於
某一特定版本中的 程式錯誤 、或找出 程式錯誤 出現的版本,軟體除錯者也必須藉由比對不同版本的程式碼以找出問題的位置。

T — TDD

測試驅動開發 (Test-driven development)是現代計算機 軟體開發 方法的一種。利用 測試 來驅動 軟體
程序的設計和實現。測試驅動開始流行於20世紀90年代。測試驅動開發是 極限編程
中倡導的程序開發方法,方法主要是先寫測試程序,然後再編碼使其通過測試。測試驅動開發的目的是取得快速反饋並使用「illustrate the
main line」方法來構建程序。

測試驅動開發的比喻。開發可以從兩個方面去看待:實現的功能和質量。測試驅動開發更像兩頂帽子思考法的開發方式,先戴上實現功能的帽子,在測試的輔
助下,快速實現正確的功能;再戴上 重構
的帽子,在測試的保護下,通過去除冗餘和重復的代碼,提高代碼重用性,實現對質量的改進。可見測試在測試驅動開發中確實屬於核心地位,貫穿了開發的始終。

U — Unit Testing

單元測試 (又稱為 模塊測試 )是針對 程序模塊 ( 軟體設計 的最小單位)來進行正確性檢驗的測試工作。程序單元是應用的最小可測試部件。在
過程化編程 中,一個單元就是單個程序、函數、過程等;對於面向對象編程,最小單元就是方法,包括基類(超類)、抽象類、或者派生類(子類)中的方法。

通常來說,程序員每修改一次程序就會進行最少一次單元測試,在編寫程序的過程中前後很可能要進行多次單元測試,以證實程序達到 軟體規格書 (
en:Specification )要求的工作目標,沒有 臭蟲 ;雖然單元測試不是什麼必須的,但也不壞,這牽涉到 項目管理 的政策決定。

V — VIM

Vim 是從 vi 發展出來的一個 文本編輯器 。代碼補完、編譯及錯誤跳轉等方便編程的功能特別豐富,在程序員中被廣泛使用。和 Emacs
並列成為 類Unix系統 用戶最喜歡的編輯器。Vim的第一個版本由 Bram Moolenaar 在1991年發布。最初的簡稱是 V i
IM itation,隨著功能的不斷增加,正式名稱改成了 V i IM proved。現在是在 開放源代碼 方式下發行的 自由軟體 。

W — WordPress

WordPress 是一種使用 PHP 語言開發的 博客 平台,用戶可以在支持 PHP 和 MySQL 資料庫
的伺服器上架設自己的網志。也可以把 WordPress 當作一個 內容管理系統 (CMS)來使用。WordPress 是一個免費的 開源
項目,在 GNU通用公共許可證
下授權發布。目前最新版本為2011年2月24日發布的3.0.5官方簡體中文版,另外還有包括英文在內的多種語言可選。

X — XSS

跨網站指令碼 ( Cross-site scripting ,通常簡稱為 XSS )是一種網站應用程式的安全漏洞攻擊,允許惡意使用者將程式碼注入到網頁上,其他使用者在觀看網頁時就會受到影響。這類攻擊通常包含了 HTML 以及使用者端 腳本語言 。

Y — YUI

Yahoo! UI Library ( YUI ) 是一個開放源代碼的 JavaScript 函數庫,為了能建立一個高互動的網頁,它採用了 AJAX , DHTML 和 DOM 等程式碼技術。它也包含了許多 CSS 資源。

Z — Z index

Z-Index
是CSS屬性,設置元素的堆疊順序。擁有更高堆疊順序的元素總是會處於堆疊順序較低的元素的前面。該屬性設置一個定位元素沿 z 軸的位置,z 軸定義為垂直延伸到顯示區的軸。如果為正數,則離用戶更近,為負數則表示離用戶更遠。

㈢ javascript 和jsp的區別

jsp其實就java的一個方向.
java用來是一門編程語言,他可以用來開發軟體,也可以用來開發網站,jsp就是java開發網站的方向.
java和javascript是完全不一樣的,他們只是名字有點相似,事實上javascript是為了借java的名號來推廣自己.

你可以這樣理解jsp和javascript
jsp是為了處理數據,javascript是為了展示數據..比如說,我把一個數據給jsp處理,處理完之後他就不管了..可是我覺得這樣顯示數據他不好看..怎麼辦.這就要交給javascript了.
由此可看出來..jsp著重數據的出路,而javascript更著重數據的展示.

㈣ 什麼是ssl

ssl加密的方法
關鍵詞: ssl加密的方法
隨著計算機網路技術的發展,方便快捷的互連網使人們漸漸習慣了從Web頁上收發E-mail、購物和
交易,這時Web頁面上需要傳輸重要或敏感的數據,例如用戶的銀行帳戶、密碼等,所以網路安全
就成為現代計算機網路應用急需解決的問題。

現行網上銀行和電子商務等大型的網上交易系統普遍採用HTTP和SSL相結合的方式。伺服器端採用
支持SSL的Web伺服器,用戶端採用支持SSL的瀏覽器實現安全通信。
SSL是Secure Socket Layer(安全套接層協議)的縮寫,可以在Internet上提供秘密性傳輸。
Netscape公司在推出第一個Web瀏覽器的同時,提出了SSL協議標准,目前已有3.0版本。SSL採用公
開密鑰技術。其目標是保證兩個應用間通信的保密性和可靠性,可在伺服器端和用戶端同時實現支
持。目前,利用公開密鑰技術的SSL協議,已成為Internet上保密通訊的工業標准。本文著重在
SSL協議和SSL程序設計兩方面談談作者對SSL的理解。

SSL協議初步介紹
安全套接層協議能使用戶/伺服器應用之間的通信不被攻擊者竊聽,並且始終對伺服器進行認證,
還可選擇對用戶進行認證。SSL協議要求建立在可靠的傳輸層協議(TCP)之上。SSL協議的優勢在於
它是與應用層協議獨立無關的,高層的應用層協議(例如:HTTP,FTP,TELNET等)能透明地建立於
SSL協議之上。SSL協議在應用層協議通信之前就已經完成加密演算法、通信密鑰的協商及伺服器認證
工作。在此之後應用層協議所傳送的數據都會被加密,從而保證通信的私密性。
通過以上敘述,SSL協議提供的安全信道有以下三個特性:
1.數據的保密性
信息加密就是把明碼的輸入文件用加密演算法轉換成加密的文件以實現數據的保密。加密的過程需要
用到密匙來加密數據然後再解密。沒有了密鑰,就無法解開加密的數據。數據加密之後,只有密匙
要用一個安全的方法傳送。加密過的數據可以公開地傳送。
2.數據的一致性
加密也能保證數據的一致性。例如:消息驗證碼(MAC),能夠校驗用戶提供的加密信息,接收者可
以用MAC來校驗加密數據,保證數據在傳輸過程中沒有被篡改過。
3.安全驗證
加密的另外一個用途是用來作為個人的標識,用戶的密匙可以作為他的安全驗證的標識。
SSL是利用公開密鑰的加密技術(RSA)來作為用戶端與伺服器端在傳送機密資料時的加密通訊協定。
目前,大部分的Web 伺服器及瀏覽器都廣泛支持SSL 技術。當瀏覽器試圖連接一個具有SSL認證加
密的伺服器時,就會喚醒一個SSL會話,瀏覽器檢查認證,必須具備下面三個條件:
1)有一個權威機構發放證書,當然可以創建自我簽訂的證書(x509 結構)。
2)證書不能過期。
3)證書是屬於它所連接的伺服器的。
只有全部具備了這三個條件,瀏覽器才能成功完成認證。通過這三個條件,用戶能確認其瀏覽器連接
到正確的伺服器,而不是連接到一些想盜取用戶密碼等重要信息的虛假的伺服器上。
在當今的電子商務中還有一項被廣泛使用的安全協議是SET協議。SET(Secure Electronic Transaction,
安全電子交易)協議是由VISA和MasterCard兩大信用卡公司於1997年5月聯合推出的規范。SET能在電
子交易環節上提供更大的信任度、更完整的交易信息、更高的安全性和更少受欺詐的可能性。SET交
易分三個階段進行:用戶向商家購物並確定支付;商家與銀行核實;銀行向商家支付貨款。每個階段都
涉及到RSA對數據加密,以及RSA數字簽名。使用SET協議,在一次交易中,要完成多次加密與解密操作,
故有很高的安全性,但SET協議比SSL協議復雜,商家和銀行都需要改造系統以實現互操作。
在Linux 下,比較流行支持SSL認證的是OpenSSL伺服器。OpenSSL項目是一個合作的項目,開發一個
健壯的、商業等級的、完整的開放源代碼的工具包,用強大的加密演算法來實現安全的Socket層
(Secure Sockets Layer,SSL v2/v3)和傳輸層的安全性(Transport Layer Security,TLS v1)。
這個項目是由全世界的志願者管理和開發OpenSSL工具包和相關文檔。
如何在Linux下配置OpenSSL伺服器,首先從OpenSSL的主頁(http://www.openssl.org/)上下載
openssl-version.tar.gz軟體包來編譯安裝,與Apache伺服器配合可以建立支持SSL的Web伺服器,
並可以使用自我簽訂的證書做認證,關於如何編譯、安裝OpenSSL伺服器,可以參考一下OpenSSL HOWTO
文檔。

SSL 程序設計初步介紹
SSL 通訊模型為標準的C/S 結構,除了在 TCP 層之上進行傳輸之外,與一般的通訊沒有什麼明顯的區
別。在這里,我們主要介紹如何使用OpenSSL進行安全通訊的程序設計。關於OpenSSL 的一些詳細的信
息請參考OpenSSL的官方主頁 http://www.openssl.org。
在使用OpenSSL前,必須先對OpenSSL 進行初始化,以下的三個函數任選其一:
SSL_library_init(void);
OpenSSL_add_ssl_algorithms();
SSLeay_add_ssl_algorithms();
事實上 後面的兩個函數只是第一個函數的宏。
如果要使用OpenSSL的出錯信息,使用SSL_load_error_strings (void)進行錯誤信息的初始化。以後
可以使用void ERR_print_errors_fp(FILE *fp) 列印SSL的錯誤信息。
一次SSL連接會話一般要先申請一個SSL 環境,基本的過程是:
1. SSL_METHOD* meth = TLSv1_client_method(); 創建本次會話連接所使用的協議,如果是客戶端可
以使用
SSL_METHOD* TLSv1_client_method(void); TLSv1.0 協議
SSL_METHOD* SSLv2_client_method(void); SSLv2 協議
SSL_METHOD* SSLv3_client_method(void); SSLv3 協議
SSL_METHOD* SSLv23_client_method(void); SSLv2/v3 協議
伺服器同樣需要創建本次會話所使用的協議:
SSL_METHOD *TLSv1_server_method(void);
SSL_METHOD *SSLv2_server_method(void);
SSL_METHOD *SSLv3_server_method(void);
SSL_METHOD *SSLv23_server_method(void);
需要注意的是客戶端和伺服器需要使用相同的協議。
2.申請SSL會話的環境 CTX,使用不同的協議進行會話,其環境也是不同的。申請SSL會話環
境的OpenSSL函數是
SSLK_CTX* SSL_CTX_new (SSL_METHOD*); 參數就是前面我們申請的 SSL通訊方式。返回當前
的SSL 連接環境的指針。
然後根據自己的需要設置CTX的屬性,典型的是設置SSL 握手階段證書的驗證方式和載入自己
的證書。
void SSL_CTX_set_verify (SSL_CTX* , int , int* (int, X509_STORE_CTX*) )
設置證書驗證的方式。
第一個參數是當前的CTX 指針,第二個是驗證方式,如果是要驗證對方的話,就使用
SSL_VERIFY_PEER。不需要的話,使用SSL_VERIFY_NONE.一般情況下,客戶端需要驗證對方,而
伺服器不需要。第三個參數是處理驗證的回調函數,如果沒有特殊的需要,使用空指針就可以了。
void SSL_CTX_load_verify_locations(SSL_CTX*, const char* , const char*);
載入證書;
第一個參數同上,參數二是證書文件的名稱,參數三是證書文件的路徑;
int SSL_CTX_use_certificate_file(SSL_CTX *ctx, const char *file, int type);
載入本地的證書;type 指明證書文件的結構類型;失敗返回-1
int SSL_CTX_use_PrivateKey_file(SSL_CTX *ctx, const char *file, int type);
載入自己的私鑰;type 參數指明私鑰文件的結構類型;失敗返回-1
載入了證書和文件之後,就可以驗證私鑰和證書是否相符:
BOOl SSL_CTX_check_private_key (SSL_CTX*);
3.既然SSL 使用TCP 協議,當然需要把SSL attach 到已經連接的套接字上了:
SSL* SSL_new (SSL_CTX*); 申請一個SSL 套節字;
int SSL_set_rfd (SSL*); 綁定只讀套接字
int SSL_set_wfd (SSL*); 綁定只寫套接字
int SSL_set_fd ( SSL*); 綁定讀寫套接字
綁定成功返回 1, 失敗返回0;
4. 接下來就是SSL 握手的動作了
int SSL_connect (SSL*); 失敗返回 -1
5. 握手成功之後,就可以進行通訊了,使用SSL_read 和SS_write 讀寫SSL 套接字代替傳統的
read 、write
int SSL_read (SSL *ssl, char *buf, int num );
int SSL_write (SSL *ssl, char *buf, int num);
如果是伺服器,則使用 SSL_accept 代替傳統的 accept 調用
int SSL_accept(SSL *ssl);
6. 通訊結束,需要釋放前面申請的 SSL資源
int SSL_shutdown(SSL *ssl); 關閉SSL套接字;
void SSL_free (ssl); 釋放SSL套接字;
void SSL_CTX_free (ctx); 釋放SSL環境;
OpenSSL 雖然已經發展到了0.9.96版本,但是它的文檔還很少,甚至連最基本的man 函數手
冊都沒有完成。所以,本文緊緊是講述了使用OpenSSL 進行程序設計的框架。更加詳細的資
料可以參考OpenSSL 的文檔或者 Apache mod_ssl 的文檔。
通過以上的介紹,我想讀者對SSL協議已經有了一定的了解,作者有機會將會繼續給大家介紹
SSL協議的其他方面的內容。

SSL原理解密
本文出自:
http://noc.cstnet.net.cn/
范曉明

RSA公鑰加密在計算機產業中被廣泛使用在認證和加密。可以從RSA Data Security Inc.獲得的RSA公鑰加密許可證。公鑰加密是使用一對非對稱的密碼加密或解密的方法。每一對密碼由公鑰和私鑰組成。公鑰被廣泛發布。私鑰是隱密的,不公開。用公鑰加密的數據只能夠被私鑰解密。反過來,使用私鑰加密的數據只能用公鑰解密。這個非對稱的特性使得公鑰加密很有用。

使用公鑰加密法認證

認證是一個身份認證的過程。在下列例子中包括甲和乙,公鑰加密會非常輕松地校驗身份。符號{數據} key意味著"數據"已經使用密碼加密或解密。假如甲想校驗乙的身份。乙有一對密碼,一個是公開的,另一個是私有的。乙透露給甲他的公鑰。甲產生一個隨機信息發送給乙。甲——〉乙:random-message

乙使用他的私鑰加密消息,返回甲加密後的消息。 乙——〉甲:{random-message}乙的私鑰

甲收到這個消息然後使用乙的以前公開過的公鑰解密。他比較解密後的消息與他原先發給乙的消息。如果它們完全一致,就會知道在與乙說話。任意一個中間人不會知道乙的私鑰,也不能正確加密甲檢查的隨機消息。

除非你清楚知道你加密的消息。用私鑰加密消息,然後發送給其他人不是一個好主意。因為加密值可能被用來對付你,需要注意的是:因為只有你才有私鑰,所以只有你才能加密消息。所以,代替加密甲發來的原始消息,乙創建了一個信息段並且加密。信息段取自隨機消息(random-message)並具有以下有用的特性:

1. 這個信息段難以還原。任何人即使偽裝成乙,也不能從信息段中得到原始消息;

2. 假冒者將發現不同的消息計算出相同的信息段值;

3. 使用信息段,乙能夠保護自己。他計算甲發出的隨機信息段,並且加密結果,並發送加密信息段返回甲。甲能夠計算出相同的信息段並且解密乙的消息認證乙。

這個技術僅僅描繪了數字簽名。通過加密甲產生的隨機消息,乙已經在甲產生的消息簽名。因此我們的認證協議還需要一次加密。一些消息由乙產生:

甲——〉乙:你好,你是乙么?

乙——〉甲:甲,我是乙

{信息段[甲,我是乙] } 乙的私鑰

當你使用這個協議,乙知道他發送給乙的消息,他不介意在上面簽名。他先發送不加密的信息,"甲,我是乙。",然後發送信息段加密的消息版本。甲可以非常方便地校驗乙就是乙,同時,乙還沒有在他不想要的信息上簽名。

提交公鑰

那麼,乙怎樣以可信的方式提交他的公鑰呢?看看認證協議如下所示:

甲——〉乙:你好

乙——〉甲:嗨,我是乙,乙的公鑰

甲——〉乙:prove it

乙——〉甲:甲,我是乙 {信息段[甲,我是乙] } 乙的私鑰

在這個協議下,任何人都能夠成為"乙"。所有你所要的只是公鑰和私鑰。你發送給甲說你就是乙,這樣你的公鑰就代替了乙的密碼。然後,你發送用你的私鑰加密的消息,證明你的身份。甲卻不能發覺你並不是乙。為了解決這個問題,標准組織已經發明了證書。一個證書有以下的內容:

* 證書的發行者姓名

* 發行證書的組織

* 標題的公鑰

* 郵戳

證書使用發行者的私鑰加密。每一個人都知道證書發行者的公鑰(這樣,每個證書的發行者擁有一個證書)。證書是一個把公鑰與姓名綁定的協議。通過使用證書技術,每一個人都可以檢查乙的證書,判斷是否被假冒。假設乙控制好他的私鑰,並且他確實是得到證書的乙,就萬事大吉了。

這些是修訂後的協議:

甲——〉乙:你好

乙——〉甲:嗨,我是乙,乙的校驗

甲——〉乙:prove it

乙——〉甲:甲,我是乙 {信息段[甲, 我是乙] } 乙的私鑰

現在當甲收到乙的第一個消息,他能檢查證書,簽名(如上所述,使用信息段和公鑰解密),然後檢查標題(乙的姓名),確定是乙。他就能相信公鑰就是乙的公鑰和要求乙證明自己的身份。乙通過上面的過程,製作一個信息段,用一個簽名版本答復甲。甲可以校驗乙的信息段通過使用從證書上得到的公鑰並檢查結果。

如果一個黑客,叫H

甲——〉H:你好

H——〉不能建立一個令甲相信的從乙的消息。

交換密碼(secret)

一旦甲已經驗證乙後,他可以發送給乙一個只有乙可以解密、閱讀的消息:

甲——〉乙:{secret}乙的公鑰

唯一找到密碼的方法只有使用乙的私鑰解碼上述的信息。交換密碼是另一個有效使用密碼加密的方法。即使在甲和乙之間的通訊被偵聽,只有乙才能得到密碼。

使用密碼作為另一個secret-key增強了網路的安全性,但是這次這是一個對稱的加密演算法(例如DES、RC4、IDE甲)。因為甲在發送給乙之前產生了密碼,所以甲知道密碼。乙知道密碼因為乙有私鑰,能夠解密甲的信息。但他們都知道密碼,他們都能夠初始化一個對稱密碼演算法,而且開始發送加密後的信息。這兒是修定後的協議:

甲——〉乙:你好

乙——〉甲:嗨,我是乙,乙的校驗

甲——〉乙:prove it

乙——〉甲:甲,我是乙 {信息段[甲,我是乙] }乙的私鑰

甲——〉乙:ok 乙,here is a secret {secret}乙的公鑰

乙——〉甲:{some message}secret-key

黑客竊聽

那麼如果有一個惡意的黑客H在甲和乙中間,雖然不能發現甲和乙已經交換的密碼,但能幹擾他們的交談。他可以放過大部分信息,選擇破壞一定的信息(這是非常簡單的,因為他知道甲和乙通話採用的協議)。

甲——〉H:你好

H——〉乙:你好

乙——〉H:嗨,我是乙,乙的校驗

H——〉甲:嗨,我是乙,乙的校驗

甲——〉H:prove it

H——〉乙:prove it

乙——〉H:甲,我是乙 {信息段[甲,我是乙] }乙的私鑰

H——〉甲:甲,我是乙 {信息段[甲,我是乙] }乙的私鑰

甲——〉H:ok 乙,here is a secret {secret} 乙的公鑰

H——〉乙:ok 乙,here is a secret {secret} 乙的公鑰

乙——〉H:{some message}secret-key

H——〉甲:Garble[{some message}secret-key ]

H忽略一些數據不修改,直到甲和乙交換密碼。然後H干擾乙給甲的信息。在這一點上,甲相信乙,所以他可能相信已經被干擾的消息並且盡力解密。

需要注意的是,H不知道密碼,他所能做的就是毀壞使用秘鑰加密後的數據。基於協議,H可能不能產生一個有效的消息。但下一次呢?

為了阻止這種破壞,甲和乙在他們的協議中產生一個校驗碼消息(message authentication code)。一個校驗碼消息(MAC)是一部分由密碼和一些傳輸消息產生的數據。信息段演算法描述的上述特性正是它們抵禦H的功能:

MAC= Digest[some message,secret ]

因為H不知道密碼,他不能得出正確的值。即使H隨機干擾消息,只要數據量大,他成功的機會微乎其微。例如,使用HD5(一個RSA發明的好的加密演算法),甲和乙能夠發送128位MAC值和他們的消息。H猜測正確的MAC的幾率將近1/18,446,744,073,709,551,616約等於零。

這是又一次修改後的協議:

甲——〉乙:你好

乙——〉甲:嗨,我是乙,乙的校驗

甲——〉乙:prove it

乙——〉甲:嗨,我是乙,乙的校驗

甲,我是乙

{信息段[甲,我是乙] } 乙的私鑰

ok 乙,here is a secret {secret} 乙的公鑰

{some message,MAC}secret-key

現在H已經無技可施了。他干擾了得到的所有消息,但MAC計算機能夠發現他。甲和乙能夠發現偽造的MAC值並且停止交談。H不再能與乙通訊。

OpenSSL FAQ

㈤ Java 和 JavaScript 是什麼關系

JavaScript 與Java是兩個公司開發的不同的兩個產品。Java 是原Sun Microsystems公司推出的面向對象的程序設計語言,特別適合於互聯網應用程序開發;而JavaScript是Netscape公司的產品,為了擴展Netscape瀏覽器的功能而開發的一種可以嵌入Web頁面中運行的基於對象和事件驅動的解釋性語言。JavaScript的前身是LiveScript;而Java的前身是Oak語言。
下面對兩種語言間的異同作如下比較:
- 基於對象和面向對象:Java是一種真正的面向對象的語言,即使是開發簡單的程序,必須設計對象;JavaScript是種腳本語言,它可以用來製作與網路無關的,與用戶交互作用的復雜軟體。它是一種基於對象(Object-Based)和事件驅動(Event-Driven)的編程語言,因而它本身提供了非常豐富的內部對象供設計人員使用。
- 解釋和編譯:Java的源代碼在執行之前,必須經過編譯。JavaScript是一種解釋性編程語言,其源代碼不需經過編譯,由瀏覽器解釋執行。(目前的瀏覽器幾乎都使用了JIT(即時編譯)技術來提升JavaScript的運行效率)
- 強類型變數和類型弱變數:Java採用強類型變數檢查,即所有變數在編譯之前必須作聲明;JavaScript中變數是弱類型的,甚至在使用變數前可以不作聲明,JavaScript的解釋器在運行時檢查推斷其數據類型。
- 代碼格式不一樣。
補充:上面列出的四點是網上流傳的所謂的標准答案。其實Java和JavaScript最重要的區別是一個是靜態語言,一個是動態語言。目前的編程語言的發展趨勢是函數式語言和動態語言。在Java中類(class)是一等公民,而JavaScript中函數(function)是一等公民,因此JavaScript支持函數式編程,可以使用Lambda函數和閉包(closure),當然Java 8也開始支持函數式編程,提供了對Lambda表達式以及函數式介面的支持。對於這類問題,在面試的時候最好還是用自己的語言回答會更加靠譜,不要背網上所謂的標准答案。

閱讀全文

與網景公司網站編譯軟體相關的資料

熱點內容
安卓三星手機怎麼截屏 瀏覽:97
程序員高級演算法 瀏覽:127
pythonbinlog 瀏覽:429
編譯原理箭頭上面一個加號乘號 瀏覽:664
螺桿式無油壓縮機 瀏覽:995
代碼編譯要多久 瀏覽:333
領導錯誤命令怎麼處理 瀏覽:948
怎麼看手機各app內存 瀏覽:477
程序員栽在背景調查 瀏覽:779
什麼是車場伺服器 瀏覽:910
手機伺服器怎麼上網 瀏覽:997
linuxtime命令 瀏覽:859
資深程序員夢想成一個特工 瀏覽:254
程序員沒禿 瀏覽:669
安卓如何下載手機米兔app 瀏覽:75
pdf在線處理 瀏覽:293
鑽圓周孔編程 瀏覽:955
交差編譯怎麼指定編譯工具鏈 瀏覽:461
java程序是jvm編譯的嗎 瀏覽:169
win7文件夾和文件一起排序 瀏覽:566