如何使用XSLT在XML中散列字段

Sau*_*ati 6 xml xslt

有一个XML,我正在使用XSLT构建另一个XML.我希望某些字段具有哈希值而不是实际值.意思我应该知道数据何时被更改,但由于某些安全原因我不想知道数据.

<xsl:template name="sensitiveDataTemplate">
    <xsl:param name="sensitiveData"></xsl:param>
    <xsl:if test="$sensitiveData!=''">
        <xsl:value-of select="'XXXXXX'"></xsl:value-of>
    </xsl:if>
</xsl:template>
Run Code Online (Sandbox Code Playgroud)

现在我只是用XXXXX替换数据,但我需要一些哈希值.

Sau*_*ati 0

我不久前找到了一个解决方案,与上面给出的答案类似。

我只是调用 PHP 函数来使用 SHA1 哈希。XSL:

<xsl:template name="sensitiveDataTemplate">
<xsl:param name="sensitiveData"></xsl:param>
<xsl:if test="$sensitiveData!=''">
    <xsl:value-of select="php:function('sha1', substring($sensitiveData,1, string-length($sensitiveData)))"></xsl:value-of>
</xsl:if>
</xsl:template>
Run Code Online (Sandbox Code Playgroud)

PHP:

$proc->registerPHPFunctions('sha1');
Run Code Online (Sandbox Code Playgroud)