① 在Spring中如何使用加密外部屬性文件
1.jdbc.properties文件
driverClassName=com.mysql.jdbc.Driver
url:jdbc:mysql://localhost:3306/testdb
username=root
password=123
1
2
3
4
2.xml文件引入屬性文件
<!-- 引入配置文件 -->
<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfiguer"
p:location="class:jdbc.preperties"
p:fileEncoding="utf-8"/>
<!-- 使用屬性值 -->
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"
p:driverClassName="${drverClassName}"
p:url="${url}"
p:username="${userName}"
p:password="${password}"/>
1
2
3
4
5
6
7
8
9
10
11
3.PropertyPlaceholderConfigurer其他屬性
locations:配置多個配置文件(配置 list 一樣)
fileEncoding:編碼格式
order:如歌配置多個PropertyPlaceholderConfigurer,通過該屬性指定優先順序
placeholderPrefix:指定佔位符前綴,默認為「${」
placeholderSuffix:佔位符後綴,默認為「}」
<bean id="propertyPlaceholderConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations">
<list>
<value>classpath:/opt/demo/config/demo-db.properties</value>
<value>classpath:/opt/demo/config/demo-db2.properties</value>
</list>
</property>
</bean>
1
2
3
4
5
6
7
8
4.使用」<」context:property-placeholder」>」引入屬性文件
//這種方式比較優雅,但如果想要配置日他額外高級屬性,如屬性加密,使用資料庫保存配置信息等,必須使用擴展的PropertyPlaceholderConfigurer類並使用bean配置方式
<context:property-placeholder location="class:jdbc.properties"/>
//引入多個配置文件 逗號分隔
<context:property-placeholder
location="classpath:constants.properties ,
classpath:constants_new.properties"
fileEncoding="utf-8"
/>
1
2
3
4
5
6
7
8
9
10
11
5.在基於註解的java類配置中引用屬性
@Component
public class Test{
//@Value註解可以為Bean注入一個字面量,也可通過@Value("#{proName}")形式注入值
@Value("com.mysql.jdbc.Driver")
private String driverClassName;
@Value("${url}")
private String url;
}
② 怎麼給文件加密
具體操作流程如下:
1、給電腦中的文件加密最簡單的一個方法就是利用你電腦的操作系統自帶的功能來進行設置,也就是EFS加密功能。不過這個功能對硬碟是有一定的要求的,那就是硬碟的分區格式必須是NTFS,不是這個格式的話需要改一下才可以使用加密功能。下面是具體的操啟跡作方法。首先要選擇需要加密的文件,點擊選擇「屬性」,再選擇「高級」,找到「壓縮或加密屬性」,在「加密內容以便保護數據」選項前面打鉤,這樣這個文件就被加密了。這時候這個文件的名字是藍色的,其他使用你電腦的人是無法查看文件內容的。
2、上面這種方法還是有一定的危險性的,那就是如果其他人用主人的賬戶進入的話還是可以查看的。那麼想要保密性高,可以採用第三方加密工具,也就是利用壓縮工具來給文件加上密碼。常見的壓縮工具有WinRAR等,我們就以這個壓縮工具為例來介紹一下具體的方法。在需前肆要加密的文件上慧旁轎點擊,然後選擇「添加到壓縮文件」,再找到「高級」標簽頁,裡面有一個「設置密碼」,點擊就會彈出一個對話框,在對話框中輸入密碼就可以對相應的文件進行加密了,密碼自己要記住哦!
3、除了以上的兩種方法之外,在網上還可以找到不少可以給文件加密的第三方工具,不過這些工具很多都是試用版,或者是一些要花錢購買的,有些用一段時間就不能用了。大家如果想用這類加密軟體的話,那麼可以自己去網上搜一下,使用方法一般都很簡單。
③ Spring boot jar包加密(防止放在客戶端反編譯),XJar加密
需求常用但是時間不常有。有些能客戶接觸到jar包就很尷尬了。不要問為什麼尷尬。
1.首先團絕目標系統-阿里鏡像 Centos8.2 不重要 有yum就行皮或正,主要燃悔環境是golang俗稱go
2.上操作
3.版本確認,檢查
4.把文件傳到linux上,注意需要兩個文件!重點別漏了 new.jar 和 xjar.go
5.cd到目錄,操作
6.得到如下文件
7.運行jar,普通運行
9.打成系統服務systemctl這個不講了,網路,或者我其他文章有
4.得到xjar.exe,跟linux差不多操作了
5.cd到目錄,然後操作
④ springboot上傳文件到伺服器aes加密
業務需求:資料庫中的用戶名密碼明文存儲在配置文件中,不是十分安全。所以將資料庫中的用戶名密碼使用AES對稱加密放入配置文件中,達到加密效果。同時也不想使用tomcat等中間件等太繁重,就使用了spring boot 輕量級框架。個人比較菜,輕噴。
關於如何搭建spring boot項目其他的人說的很詳細 參考初識Spring Boot框架
入口類代碼
js">@Controller
@SpringBootApplication
@EnableAutoConfiguration
{
publicstaticvoidmain(String[]args){
SpringApplication.run(Aesdemo1Application.class,args);
}
}
運行時只要運行main方法 或者打包後java -jar 即可(寫成.bat文件 點擊運行方便簡單)
@Controller
publicclassGetKeyController{
@GetMapping("/getkey")
publicStringgreetingForm(Modelmodel){
model.addAttribute("passwordBean",newPasswordBean());return"index";
}
@PostMapping("/getkey")
publicStringgreetingSubmit(@){
Strings1=AESUtil.encrypt(passwordBean.getPassword(),passwordBean.getVar1());
passwordBean.setVar2(s1);
return"result";
}
}
啟動後有這里還有一個控制器類
瀏覽器地址輸入 http://localhost:8080/getkey 即可跳轉到greetingForm 方法,賦入PasswordBean屬性後 跳轉到index.html
PasswordBean 是自己定義的bean類 裡面有password var1 var2 3個屬性
index.html代碼
<!DOCTYPEhtml>
<htmllang="en"xmlns:th="http://www.thymeleaf.org">
<head>
<metacharset="UTF-8"/>
<title>Title</title>
</head>
<body>
<formaction="#"th:action="@{/getkey}"th:object="${passwordBean}"method="post">
<p>密碼:<inputtype="text"th:field="*{password}"/></p>
<p>加密字元:<inputtype="text"th:field="*{var1}"/></p>
<p><inputtype="submit"value="Submit"/>
<inputtype="reset"value="Reset"/></p>
</form>
</body>
</html>
注意使用了thymeleaf框架 所以必須引入
輸入要加密的和鹽即可獲得通過post方法到result即可獲得加密後字元串
<!DOCTYPEhtml>
<htmllang="en"xmlns:th="http://www.thymeleaf.org">
<head>
<metacharset="UTF-8"/>
<title>Title</title>
</head>
<body>
<h1>Result</h1>
<pth:text="'密碼:'+${passwordBean.password}"/>
<pth:text="'加密字元:'+${passwordBean.var1}"/>
<pth:text="'加密後字元:'+${passwordBean.var2}"/>
<ahref="/getkey">Submitanothermessage</a>
</body>
</html>
⑤ 如何能讓spring框架載入加密後的.class文件
加密:使用AES加密,將文件的位元組碼讀取,對位元組碼進行加密後替換兆族輪源文件
Java代碼
/**
*
* 位元組加密
*/族信
public static byte[] encrypt(byte[] data, String key) throws Exception {
Key k = toKey(Base64.decode(key));
byte[] raw = k.getEncoded();
SecretKeySpec secretKeySpec = new SecretKeySpec(raw, ALGORITHM);
Cipher cipher = Cipher.getInstance(ALGORITHM);
cipher.init(Cipher.ENCRYPT_MODE, secretKeySpec);
return cipher.doFinal(data);
}
/**
*
* 位元組加密
*/
public static byte[] encrypt(byte[] data, String key) throws Exception {
Key k = toKey(Base64.decode(key));
byte[] raw = k.getEncoded();
SecretKeySpec secretKeySpec = new SecretKeySpec(raw, ALGORITHM);
Cipher cipher = Cipher.getInstance(ALGORITHM);
cipher.init(Cipher.ENCRYPT_MODE, secretKeySpec);
return cipher.doFinal(data);
}
解密:
1、在tomcat的WebappClassLoader中修改源碼(自動義類載入器);
2、修改spring源碼Code包源碼。
加穗孫密方法
Java代碼
public static byte[] decrypt(byte[] data, String key) throws Exception {
Key k = toKey(Base64.decode(key));
byte[] raw = k.getEncoded();
SecretKeySpec secretKeySpec = new SecretKeySpec(raw, ALGORITHM);
Cipher cipher = Cipher.getInstance(ALGORITHM);
cipher.init(Cipher.DECRYPT_MODE, secretKeySpec);
return cipher.doFinal(data);
}
public static byte[] decrypt(byte[] data, String key) throws Exception {
Key k = toKey(Base64.decode(key));
byte[] raw = k.getEncoded();
SecretKeySpec secretKeySpec = new SecretKeySpec(raw, ALGORITHM);
Cipher cipher = Cipher.getInstance(ALGORITHM);
cipher.init(Cipher.DECRYPT_MODE, secretKeySpec);
return cipher.doFinal(data);
}
在 WebappClassLoader中解密
Java代碼
/**
* 判斷如需是需要解密的類進行數據處理
⑥ 請問文件屬性里的加密是什麼作用
文件屬性里的加密功能是非常有用的。你自己依然能打開能改寫那是因為坦喚閉這個文件是你自己用戶名建立的,加密也是你自己加密的,為方便起見,自然支持你改寫。但是如果其他用戶不是用的你用戶名登陸Windows系統,那麼被加密的文件是無法打開的,更談不上改寫了,自然就起到了加密保護文件的作用,你不妨可以改用其他用戶名登陸你的電腦系統看看你加密的文件能否被改寫。當然如果你的電腦只有管理員就是你本人這么個單個用戶文件加密也就沒什麼太大的意義了!
同時有必要提醒你幾個關於文件加密的重要問題:
首先准備加密的文件與文件夾所在的磁碟必須採用NTFS文件系統。同時要注意,由於加密解密功能在啟動時還不能夠起作用,因此系統文件或在系統目錄中的文件是不能被加密的,如果操作系統安裝目錄中的文件被加密了,系統就無法啟動。加密後,用戶可以像使用普通文件一樣直接打開和編輯,又或者執行復制、粘貼等操作,而且用戶在加密文件夾內創建的新文件或從其他文件夾拷貝過來的文件都將自動被鏈猜加密。被加密的文件和文件夾的名稱將默認顯示為淡綠色,如您的電腦上被加密的文件和文件夾的名稱不是彩色顯示,您可以單擊「我的電腦|工具|文件夾選項」,然後在「文件夾選項」對話框中單擊「查看」選項卡,選中「以彩色顯示加密或壓縮的NTFS文件」復選框即可。
其次有許多朋友在系統發生故障或重新安裝系統以後,無法再訪問之前他們加密過的文件與文件夾。但此時為時已晚,Windows內建的加密功能與用戶的賬戶關系非常密切,同時用於解密的用戶密鑰也存儲在系統內,任何導致用戶賬戶改變的操作和故障如重裝系統等都有可能帶來災難,要避免這種情況讓裂的發生,請你一定要在其他地方存儲備份好的你重要文件,也慎用文件加密功能!
最後加密文件如何形成加密密匙,如何備份密匙,如何授予其他用戶加密文件的訪問許可權等更詳細的問題你可以登陸我的網路空間「珍愛居」參考有關文摘,希望我能幫到你,順祝你2012年新年快樂,萬事如意!
⑦ jasypt加密SpringBoot配置文件
結果
項目里沒有使用@SpringBootApplication或者@EnableAutoConfiguration,可以昌和手動在Configuration類上添猛亂加註解@EnableEncryptableProperties,來在整枝迅檔個環境的屬性啟用屬性加密。
⑧ 怎麼給文件夾進行屬性加密是暗的
怎麼給文件夾加密
?有些用戶想要保護自己的隱私,所以會給文件夾加密,那麼該如何給文件夾加密呢?下面給大家介紹3種常見的文件夾加密方法。
方法一、隱藏文件
1、選中自己要加密的文件夾,右鍵選擇屬性,然後在常規窗口的屬性裡面選擇隱藏。
2、點擊應用和確定後,在文件夾窗口的工具——文件夾選項——查看裡面選擇不顯示隱藏的文件和文件夾。
3、自己想要看到這個文件的時候需要選擇顯示所有文件和磨圓文件夾才能看到。
方法二、壓縮文件並設置密碼
1、選擇自己要加密的文件夾,點擊右鍵,選擇添加到壓縮文件,會彈出一個壓縮文件名和參數的窗口
3、輸入密碼後選擇確定,注意密碼不要太長,以免自己忘記密碼。
4、壓縮完文件夾要把原文件夾刪除,別人就只能看到這個壓縮文件夾了,除非他知道密碼,否則別人是看不到你的文件內容的。自己要想看文件的話需要輸入密碼解壓後隱游伏才能看到。
方法三、軟體加密
1、首先頁面頂端展示的軟體,然後在電腦上安裝。
3、選擇文件夾加密,然後點擊選擇文件夾,瀏覽並選中自己要加密的文件夾
4、點擊確定後會自動彈出一個加密的對話框,輸入密碼後選擇快速加密,也可以選擇其他加密類型,然後是密碼提示問題,這個要選擇一個只有自己知道的問題和答案。
5、點擊確定後如果加密成功會演出加密成功的一個對話框。
6、在軟體的界面裡面也會灶攜出現我們加密的文件夾
7、這時我們看一下加密的文件夾,標志已經變了,自己要想打開的話還需要輸入密碼才能打開
8、然後輸入密碼打開文件夾,如果忘記密碼的話就需要在急救中心解密文件夾
9、然後選擇回答問題,回答成功的話文件夾就可以解密了。
⑨ spring提供的幾種密碼加密方式
第一種:不使用任何加密方式的配置
[html]view plain
<beanid="AuthenticationProvider"
class="org.acegisecurity.providers..DaoAuthenticationProvider">
<propertyname="userDetailsService"ref="userDetailsService"/>
<!--明文加密,不使用任何加密演算法,在不指定該配置的情況下,Acegi默認採用的就是明文加密-->
<!--<propertyname="passwordEncoder"><beanclass="org.acegisecurity.providers.encoding.PlaintextPasswordEncoder">
<propertyname="ignorePasswordCase"value="true"></property></bean></property>-->
</bean>
第二種:MD5方式加密
[html]view plain
<beanid="AuthenticationProvider"class="org.acegisecurity.providers..DaoAuthenticationProvider">
<propertyname="userDetailsService"ref="userDetailsService"/>
<propertyname="passwordEncoder">
<beanclass="org.acegisecurity.providers.encoding.Md5PasswordEncoder">
<!--false表示:生成32位的Hex版,這也是encodeHashAsBase64的,Acegi默認配置;true表示:生成24位的Base64版-->
<propertyname="encodeHashAsBase64"value="false"/>
</bean>
</property>
</bean>
第三種:使用MD5加密,並添加全局加密鹽
Java代碼
[html]view plain
<beanid="AuthenticationProvider"class="org.acegisecurity.providers..DaoAuthenticationProvider">
<propertyname="userDetailsService"ref="userDetailsService"/>
<propertyname="passwordEncoder">
<beanclass="org.acegisecurity.providers.encoding.Md5PasswordEncoder">
<propertyname="encodeHashAsBase64"value="false"/>
</bean>
</property>
<!--對密碼加密演算法中使用特定的加密鹽及種子-->
<propertyname="saltSource">
<beanclass="org.acegisecurity.providers..salt.SystemWideSaltSource">
<propertyname="systemWideSalt"value="acegisalt"/>
</bean>
</property>
</bean>
第四種:使用MD5加密,並添加動態加密鹽
[html]view plain
<beanid="AuthenticationProvider"class="org.acegisecurity.providers..DaoAuthenticationProvider">
<propertyname="userDetailsService"ref="userDetailsService"/>
<propertyname="passwordEncoder">
<beanclass="org.acegisecurity.providers.encoding.Md5PasswordEncoder">
<propertyname="encodeHashAsBase64"value="false"/>
</bean>
</property>
<!--對密碼加密演算法中使用特定的加密鹽及種子-->
<propertyname="saltSource">
<!--通過動態的加密鹽進行加密,該配置通過用戶名提供加密鹽,通過UserDetails的getUsername()方式-->
<beanclass="org.acegisecurity.providers..salt.ReflectionSaltSource">
<propertyname="userPropertyToUse"value="getUsername"/>
</bean>
</property>
</bean>
第五種:使用哈希演算法加密,加密強度為256
[html]view plain
<beanid="AuthenticationProvider"class="org.acegisecurity.providers..DaoAuthenticationProvider">
<propertyname="userDetailsService"ref="userDetailsService"/>
<propertyname="passwordEncoder">
<beanclass="org.acegisecurity.providers.encoding.ShaPasswordEncoder">
<constructor-argvalue="256"/>
<propertyname="encodeHashAsBase64"value="false"/>
</bean>
</property>
</bean>
第六種:使用哈希演算法加密,加密強度為SHA-256
[html]view plain
<beanid="AuthenticationProvider"class="org.acegisecurity.providers..DaoAuthenticationProvider">
<propertyname="userDetailsService"ref="userDetailsService"/>
<propertyname="passwordEncoder">
<beanclass="org.acegisecurity.providers.encoding.ShaPasswordEncoder">
<constructor-argvalue="SHA-256"/>
<propertyname="encodeHashAsBase64"value="false"/>
</bean>
</property>
</bean>
上述配置只是在Acegi通過表單提交的用戶認證信息中的密碼做各種加密操作。而我們存儲用戶密碼的時候,可以通過一下程序完成用戶密碼操作:
[java]view plain
packageorg.hz.test;
importjava.security.NoSuchAlgorithmException;
importorg.springframework.security.authentication.encoding.Md5PasswordEncoder;
importorg.springframework.security.authentication.encoding.ShaPasswordEncoder;
publicclassMD5Test{
publicstaticvoidmd5(){
Md5PasswordEncodermd5=newMd5PasswordEncoder();
//false表示:生成32位的Hex版,這也是encodeHashAsBase64的,Acegi默認配置;true表示:生成24位的Base64版
md5.setEncodeHashAsBase64(false);
Stringpwd=md5.encodePassword("1234",null);
System.out.println("MD5:"+pwd+"len="+pwd.length());
}
publicstaticvoidsha_256(){
ShaPasswordEncodersha=newShaPasswordEncoder(256);
sha.setEncodeHashAsBase64(true);
Stringpwd=sha.encodePassword("1234",null);
System.out.println("哈希演算法256:"+pwd+"len="+pwd.length());
}
publicstaticvoidsha_SHA_256(){
ShaPasswordEncodersha=newShaPasswordEncoder();
sha.setEncodeHashAsBase64(false);
Stringpwd=sha.encodePassword("1234",null);
System.out.println("哈希演算法SHA-256:"+pwd+"len="+pwd.length());
}
publicstaticvoidmd5_SystemWideSaltSource(){
Md5PasswordEncodermd5=newMd5PasswordEncoder();
md5.setEncodeHashAsBase64(false);
//使用動態加密鹽的只需要在注冊用戶的時候將第二個參數換成用戶名即可
Stringpwd=md5.encodePassword("1234","acegisalt");
System.out.println("MD5SystemWideSaltSource:"+pwd+"len="+pwd.length());
}
publicstaticvoidmain(String[]args){
md5();//使用簡單的MD5加密方式
sha_256();//使用256的哈希演算法(SHA)加密
sha_SHA_256();//使用SHA-256的哈希演算法(SHA)加密
md5_SystemWideSaltSource();//使用MD5再加全局加密鹽加密的方式加密
}
}
⑩ 24. springboot常用starter_jasypt_密碼加密
Jasypt Spring Boot 為 Spring Boot 項目中的屬性源提供加密支持
springboot項目通過jasypt-spring-boot-starter加密配置
寫一個測試類生成密文余遲簡
可配置在豎褲application.yml文件中(這種方式不安全)
推薦在JVM啟動參數中設置
在idea中配置旦賣如下:
-Djasypt.encryptor.password=salt_hong
啟動類可以這么加
測試類可以這么加
編寫測試類
結果: