㈠ jasypt mybatis嗎
jasypt既然是以簡單的方式來解決java開發中的加密問題,自然使用起來難度不是很大。加密是從系統安全性方面考慮的,因此jasypt更像是面向方面的解決辦法,不管你的系統中配置文件,敏感信息是否已經加密或者沒有加密,jasypt都能夠輕松的嵌入其中,開發人員就不用專門考慮加密演算法和代碼的編寫。
要想深入了解jasypt是如何將加密解密和摘要演算法組織起來,輕松的解決開發中加密問題以及和第三方組件集成,查看它的源代碼是不錯的選擇。
下面主要說說如何在Spring框架中如何輕松使用jasypt。(下面的加密機是對jasypt中的加密解密,摘要演算法的統稱)
第一種方式:以bean的形式將加密機(即:加密類的實例對象)交給Spring託管
第二種方式:以配置XML的形式將加密機與Spring集成。
第一種方式:
1.託管一個StandardPBEStringEncryptor加密機
<!-- 加密機 -->
<bean id="strongEncryptor" class="org.jasypt.encryption.pbe.StandardPBEStringEncryptor">
<property name="algorithm">
<value>PBEWithMD5AndTripleDES</value>
</property>
<property name="password">
<value>${user.home}</value>
</property>
</bean>
這里的屬性"password"的值為系統屬性的值,實際開發中在對某一個數據進行加密的時候這個password是要進行記錄的,如果password在這里設置之後將默認提供了一個password的取值。
其它的屬性設置可以參見: http://aiilive.blog.51cto.com/1925756/1420837 這篇文章中關於jasypt命令行工具的介紹。
在程序中使用strongEncrypt加密機對象:
@Test
public void test1() {
StandardPBEStringEncryptor spe = (StandardPBEStringEncryptor) context
.getBean("strongEncryptor");
String src = "admin@123";
String encrypt = spe.encrypt(src);
System.out.println("src=\'#\'" //加密解密
Assert.assertEquals(decrypt, src);
}
2.託管一個StandardStringDigester加密機
<!-- 摘要演算法 -->
<bean id="digestEncryptor" class="org.jasypt.digest.StandardStringDigester">
<property name="algorithm">
<value>MD5</value>
</property>
</bean>
在程序中使用digestEncryptor加密機對象
@Test
public void test7() {
StandardStringDigester ssd = (StandardStringDigester) context
.getBean("digestEncryptor");
String rs1 = ssd.digest("admin");
String rs2 = ssd.digest("admin");
System.out.println(rs1 + " [vs] " + rs2);
//判斷是否匹配
Assert.assertTrue(ssd.matches("admin", rs1));
}
StrandardStringDigester類提供了matches方法用來檢測原始數據和進行摘要計算後的數據是否匹配。
1,2介紹了數據的處理,下面3講介紹使用jasypt對配置文件進行處理.
3.使用jasypt對配置文件進行處理
比如資料庫連接的屬性值一般要進行加密處理,然後在程序運行時對其進行解密連接資料庫,這樣就保證了在程序代碼已經配置中資料庫的連接相關敏感數據不至於明文暴露。
jasypt是如何處理這一過程的呢?
首先,配置環境變數(這里指用來加解密的環境),
然後,通過環境變數來裝載加密機,
最後,使用jasypt對Spring的org.springframework.beans.factory.config.PropertyPlaceholderConfigurer類的子類來配置屬性文件替換配置。
下面是具體的配置信息:
<!-- 基於環境變數,配置加密機 -->
<bean id=""
class="org.jasypt.encryption.pbe.config.EnvironmentStringPBEConfig">
<property name="algorithm" value="PBEWithMD5AndDES" />
<!-- <property name="passwordEnvName" value=""/> -->
<!-- <property name="passwordSysPropertyName" value=""></property> -->
<property name="password" value="sa" />
</bean>
<!-- 配置加密器,將用於解密 -->
<bean id="configurationEncryptor" class="org.jasypt.encryption.pbe.StandardPBEStringEncryptor">
<property name="config" ref="" />
</bean>
<!-- 外部屬性文件配置 -->
<bean id="propertyConfigurer"
class="org.jasypt.spring31.properties.">
<constructor-arg ref="configurationEncryptor" />
<property name="locations">
<list>
<value>classpath:db.properties</value>
</list>
</property>
</bean>
<!--數據源配置, jasypt的將確保${dataSource.password}是解密 -->
<bean id="dataSource"
class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName">
<value>${dataSource.driver}</value>
</property>
<property name="url">
<value>${dataSource.url}</value>
</property>
<property name="username">
<value>${dataSource.username}</value>
</property>
<property name="password">
<value>${dataSource.password}</value>
</property>
</bean>
說明:
EnvironmentStringPBEConfig 中的屬性
passwordEnvName, passwordSysPropertyName,password
三者的區別是:
passwordEnvName的值直接設置為環境變數,比如value="APP_PASSWORD", APP_PASSWORD則是系統環境變數,在實際生產環境中建議使用這個屬性,具體使用步驟如:配置環境變數APP_PASSWORD --> 啟動應用程序 --> 應用程序啟動完成 --> 刪除環境變數APP_PASSWORD。
passwordSysPropertyName的值就是用 System.getProperties() 獲取的屬性值,比如:value="${user.home}"
password和使用jasypt命令行工具時的password參數用法一致。
屬性配置文件加密
dataSource.driver=org.postgresql.Driver
dataSource.url=jdbc:postgresql://localhost:5432/dbname
dataSource.username=postgres
#dataSource.password=postgres
dataSource.password=ENC()
這里將password的加密結果放置在ENC(機密結果)中,注意這樣的寫法是jasypt的規定,可以查看源代碼,在解密過程中會根據這個標志對屬性配置文件中的加密數據進行解密。
屬性配置文件中的機密結果產生則需要用jasypt的命令行工具(具體使用可以參見:http://aiilive.blog.51cto.com/1925756/1420837 ),這里要注意的是加密過程中的演算法,password參數值需要和Spring配置文件中的(bean)的屬性取值保持一致。
數據源中使用屬性配置信息中的值
以前Spring中怎麼使用,現在就怎麼使用。
jasypt和Spring集成的依賴
jasypt.jar+jasypt-springx-x.jar , x表示一些版本信息。
第二種方式
第一種方式將jasypt中的類作為bean的形式在Spring中應用,第二種方式則更加強大,有獨立的XML配置命名空間,更像是Spring的一部分。
首先需要在Spring的配置文件中添加jasypt的命名空間。
配置完成jasypt的命名空間就可以在Spring的配置文件中直接進行加密機,加密機參數配置,下面是一個示例:
<!-- 基本的密碼加密機 -->
<encryption:basic-password-encryptor id="bpe" scope="singleton" />
<!-- 摘要配置 -->
<encryption:digester-config id="digester-config" algorithm="SHA-256" algorithm-env-name=""/>
<!-- 字元串摘要機 -->
<encryption:string-digester id="sd" algorithm="MD5" config-bean="digester-config"/>
<!-- 加密機配置 -->
<encryption:encryptor-config id="encryptor-config" algorithm="PBEWITHMD5ANDTRIPLEDES"/>
<!-- 字元串加密機 -->
<encryption:string-encryptor id="se" algorithm="PBEWITHMD5ANDDES" config-bean="encryptor-config"/>
<!-- 加密的屬性佔位符 -->
<encryption:encryptable-property-placeholder encryptor="se" location="classpath:db.properties"/>
第二種方式同樣可以實現方式一中的功能。
通過介紹了jasypt和Spring集成的兩種方式可以看出使用jasypt能夠比較輕松自定義加密的參數,配置文件的加解密,整個過程對於應用程序的代碼侵入性是很小的,可以在程序中使用jasypt提供的加密演算法和方法來實現對需要加密的數據進行處理。
此外jasypt與Hibernate集成則以一個完全對程序邏輯透明的方式可以在ORM映射中對數據進行加解密。
最後jasypt也是開放的,它開放了JCE Provider API,允許開發者使用任何存在的JCE Provider在jasypt中進行消息摘要和加密處理。
㈡ 基於sprig boot構建web前端頁面採用什麼技術實現
spring-boot適合開發web應用的靜態資源訪問在我們開發Web應用的時候,需要引用大量的js、css、圖片等靜態資源。默認配置SpringBoot默認提供靜態資源目錄位置需置於classpath下,目錄名需符合如下規則:/static/public/resources/META-INF/resources舉例:我們可以在src/main/resources/目錄下創建static,在該位置放置一個圖片文件。啟動程序後,嘗試訪問頁面的時候,要如何實現呢?模板引擎在動態HTML實現上SpringBoot依然可以完美勝任,並且提供了多種模板引擎的默認配置支持,所以在推薦的模板引擎下,我們可以很快的上手開發動態網站。SpringBoot提供了默認配置的模板引擎主要有以下幾種:建議使用這些模板引擎,避免使用JSP,若一定要使用JSP將無法實現SpringBoot的多種特性,具體可見後文:支持JSP的配置當你使用上述模板引擎中的任何一個,它們默認的模板配置路徑為:src/main/resources/templates。當然也可以修改這個路徑,具體如何修改,可在後續各模板引擎的配置屬性中查詢並修改。ThymeleafThymeleaf是一個XML/XHTML/HTML5模板引擎,可用於Web與非Web環境中的應用開發。它是一個開源的Java庫,基於ApacheLicense2.0許可,由DanielFernández創建,該作者還是Java加密庫Jasypt的作者。Thymeleaf提供了一個用於整合SpringMVC的可選模塊,在應用開發中,你可以使用Thymeleaf來完全代替JSP或其他模板引擎,如Velocity、FreeMarker等。Thymeleaf的主要目標在於提供一種可被瀏覽器正確顯示的、格式良好的模板創建方式,因此也可以用作靜態建模。你可以使用它創建經過驗證的XML與HTML模板。相對於編寫邏輯或代碼,開發者只需將標簽屬性添加到模板中即可。接下來,這些標簽屬性就會在DOM(文檔對象模型)上執行預先制定好的邏輯。
㈢ (不限語言Java C# C都可以)簡單點的文件夾加密工具軟體源代碼
閃曉風我推薦你用文件夾加密超級大師,文件夾加密超級大師支持所有windows系統,
可以加密文件夾,加密文件,保護磁碟和數據粉碎,使用起來非常方便。
在需要加密的文件和文件夾上單擊滑鼠右鍵選擇加密就可以了。
解密時只要雙擊加密的文件夾和文件,輸入正確的密碼就可以解密。
文件夾加密超級大師加密後的文件和文件夾可以防止刪除、復制和移動。
相對於其他的文件夾加密軟體和文件加密軟體,功能和性能還有操作都更加的出色。
並且有微軟、360和金山的安全認證,是一款絕對安全的文件夾加密軟體。
閃曉風您可以到網路上下載文件夾加密超級大師來給您的文件和文件夾加密,看看使用效果怎麼樣?
㈣ java.lang.NoClassDefFoundError: meeting/MD5 (wrong name: MD5)
到http://www.jasypt.org/下載jasypt最新版本 然後用下面的代碼 他提供的加密介面比sun公司的要簡單得多
import org.apache.commons.codec.binary.Base64;
import org.jasypt.util.digest.Digester;
public class Main {
public Main() {
}
public static void main(String[] args) {
Digester digester = new Digester();
digester.setAlgorithm("MD5");
byte[] b= digester.digest("message".getBytes());
b=new Base64().encodeBase64(b);
System.out.println(new String(b));
}
}