2012-11-06 57 views
3

當試圖安裝使用Maven的模塊,它引發了以下錯誤:加密異常而載入應用程序屬性(爪哇jasypt加密)

org.jasypt.exceptions.EncryptionOperationNotPossibleException: 
Encryption raised an exception. 
A possible cause is you are using strong encryption algorithms and you have not 
installed the Java Cryptography Extension (JCE) Unlimited Strength 
Jurisdiction Policy Files in this Java Virtual Machine 

的應用程序屬性進行編碼這樣的:

app.check.url=ENC(sCO3322RNYdt3wPfO04GoaN9PijwJzUcn9rb4ggHymA\=) 

我的Spring配置如下:

<?xml version="1.0" encoding="UTF-8"?> 
<beans xmlns="http://www.springframework.org/schema/beans" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns:context="http://www.springframework.org/schema/context" 
    xmlns:p="http://www.springframework.org/schema/p" 
    xsi:schemaLocation="http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd 
         http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd"> 
<bean id="placeholderConfig" class="org.jasypt.spring.properties.EncryptablePropertyPlaceholderConfigurer"> 
    <constructor-arg ref="configurationEncryptor"/> 
    <property name="ignoreResourceNotFound"> 
     <value>true</value> 
    </property> 
    <property name="ignoreUnresolvablePlaceholders"> 
     <value>false</value> 
    </property> 
    <property name="locations"> 
     <list> 
      <!-- These always come from the file system in ./conf/appCtx --> 
      <value>file:../application.properties</value> 
     </list> 
    </property> 
    <property name="systemPropertiesModeName"> 
     <value>SYSTEM_PROPERTIES_MODE_OVERRIDE</value> 
    </property> 
</bean> 
<bean id="configurationEncryptor" class="org.jasypt.encryption.pbe.StandardPBEStringEncryptor"> 
    <property name="config" ref="environmentVariablesConfiguration"/> 
</bean> 
<bean id="environmentVariablesConfiguration" 
     class="org.jasypt.encryption.pbe.config.EnvironmentStringPBEConfig"> 
    <property name="algorithm" value="PBEWithMD5AndTripleDES"/> 
    <property name="passwordEnvName" value="APP_ENCRYPTION_PASSWORD"/> 
</bean> 

而且我有jdk 1.7,它有加密所需的JCE文件。

關於如何解決此問題的任何想法?

+0

你包含JCE文件? – Ami

+0

@ILLA我沒有安裝任何額外的東西。 JCE文件已經存在於我的jdk的lib/security文件夾中。 – Chillax

+0

ok.Inside JCE文件裏有什麼罐子?主要是安裝jce需要兩個jar包? local_policy.jar和US_export_policy.jar。 – Ami

回答

5

你沒有lib\security。但它不是訪問或下載used.please JCE文件安裝JCE,默認情況下,目前並覆蓋現有files.see你的錯誤本身you have not installed the Java Cryptography Extension (JCE)

  1. 按照此link和解決您的錯誤。 [或]
    2. org.jasypt.exceptions.EncryptionOperationNotPossibleException
+0

在第1步中的鏈接被打破,但第二個爲我工作。謝謝。 –

9

你的問題不在於你沒有JCE。你做。但是從您的配置中,您正在使用TripleDES算法,這需要安裝JCE「無限強度管轄權策略文件」,如錯誤所述。

這些文件可以從Oracle站點下載(從您下載JDK的同一頁面下載),並根據不同的許可協議進行分發,因爲您必須確保您不是來自「禁止」國家(伊朗,N .Korea等)...

看到這個問題在Jasypt FAQ:http://www.jasypt.org/faq.html#no-unlimited-strength

+5

哦,在StackOverflow編輯器刪除這篇文章之前,我解決了你的問題,但沒有提到我是該作者的作者:我是jasypt的作者。現在你知道了;-) –

+0

hehe ..謝謝。它確實得到了解決 – Chillax

+0

這很有趣,爲什麼JDK7包含一個糟糕的JCE jar包呢?由於美國出口密碼技術的侷限性? – meadlai