XSLT怎樣實(shí)現(xiàn)對(duì)XML文檔的元素級(jí)加密?

XSLT是由W3C定義的一種對(duì)XML進(jìn)行轉(zhuǎn)換的語(yǔ)言。它的出現(xiàn)使得構(gòu)建XML文檔或者對(duì)文檔或文檔中的元素進(jìn)行運(yùn)算變得更加方便快捷,同時(shí)還提供了高級(jí)聲明編程語(yǔ)言的所有好處,如果把加密和解密

看作是一種XML的轉(zhuǎn)換操作,即從加密的XML轉(zhuǎn)換到未加密的XML,反之亦然,那么XSLT將能很好的完成這一工作。使用XSLT進(jìn)行元素XML加密就可以很好的避免上訴方法中部署和維護(hù)專(zhuān)用的處

理器的麻煩。因?yàn)樗恍枰粋€(gè)標(biāo)準(zhǔn)的處理器,所有XML的安全操作都將被限制在樣式表中,而不涉及XSLT處理器。

一個(gè)使用XSLT實(shí)現(xiàn)的XML加密/解密的過(guò)程如圖所示:

XSLT怎樣實(shí)現(xiàn)對(duì)XML文檔的元素級(jí)加密?

一個(gè)實(shí)現(xiàn)XML加密或解密的樣式都是由3部分組成:

1、用于匹配XML文檔中對(duì)應(yīng)標(biāo)簽的模版聲明。這樣就可以保留XML文檔中所包含的文檔結(jié)構(gòu)。為了在輸入文檔中保留原文檔的結(jié)構(gòu),每一個(gè)標(biāo)簽都需要在樣式表中有一個(gè)相匹配的模版以便進(jìn)行復(fù)

制。根據(jù)W3C的建議,XSLT處理器將默認(rèn)的丟棄那些沒(méi)有匹配的標(biāo)簽,這是我們所不愿意看到的;

2、擴(kuò)散函數(shù)。用于對(duì)XML中的文本字符串進(jìn)行加密和解密。

3、屬性識(shí)別與復(fù)制。一些包含在源XML文檔中的屬性被要求復(fù)制到輸出文檔中,而另一些則要求被舍棄。這也是通過(guò)模版匹配來(lái)實(shí)現(xiàn)。使用包含擴(kuò)展函數(shù)的XSLT進(jìn)行XML文檔加密解密的框架如圖所示:

XSLT怎樣實(shí)現(xiàn)對(duì)XML文檔的元素級(jí)加密?

在這個(gè)框架中XSLT處理器接受一個(gè)樣式表和一個(gè)源XML文檔作為輸入,并利用樣式表中的擴(kuò)展函數(shù)與外部的加密解密進(jìn)行交互,以生成加密加密的目標(biāo)的XML文檔。