java專案中的加密

2021-08-01 09:59:51 字數 2091 閱讀 4907

背景

加密原理很難,開發倒不難,面試也問經常被問到,然後我就一臉懵逼的看著面試官,我不清楚,不知道,沒用過。哎,說多了都是淚。

開發其實就是那麼幾個工具類。

aes和

rsa都是加密演算法

aes屬於對稱加密演算法

rsa屬於非對稱加密演算法,公鑰和私鑰不一致

md5對於暴露在網際網路上的,rsa最給力啦。

rsa需要維護兩個金鑰,公鑰和私鑰,兩個是一對。

開發步驟

最簡單的開始,md5

/**

* md5加密

*/public static string md5(string source)

string uuid =uuid.randomuuid().tostring();

使用者密碼,可以uuid+pwd 然後md5加密,uuid專業就叫加密鹽。防暴力破解的嘛。

aes加密

aes只有乙個金鑰,加密解密都是他了。一般大家都是**裡寫死的,

keygenerator kg  =  keygenerator.getinstance( " aes " );  // 獲取密匙生成器

kg.init( 256 ); // 初始化

// des演算法必須是56位

// desede演算法可以是112位或168位

// aes演算法可以是128、192、256位

secretkey key = kg.generatekey(); // 生成密匙,可用多種方法來儲存密匙

加密:cipher cp = cipher.getinstance( " aes " ); // 建立密碼器

cp.init(cipher.encrypt_mode, key); // 初始化

string str = " 我是需要被加密的明文 " ;

byte ptext = str.getbytes( " utf8 " );

byte ctext = cp.dofinal(ptext); // 加密

//可用多種方式儲存

解密:cipher cp = cipher.getinstance( " aes " ); // 建立密碼器

cp.init(cipher.decrypt_mode, key); // 初始化

byte ptext = cp.dofinal(ctext); // 解密

string str = new string(ptext, " utf8 " ); // 重新顯示明文

rsa加密

這個加密等級最高,有兩把鑰匙,當然鑰匙多了,開門速度就慢些了。安全和速度本來就矛盾。

這麼寶貴的**我就貼幾句,剩下的靠自己去研究了

加密

pkcs8encodedkeyspec pkcs8encodedkeyspec = new pkcs8encodedkeyspec(encodedkey);

keyfactory keyfactory = keyfactory.getinstance("rsa");

privatekey privatekey = keyfactory.generateprivate(pkcs8encodedkeyspec);

cipher cipher = cipher.getinstance("rsa");

cipher.init(cipher.encrypt_mode, privatekey);

解密x509encodedkeyspec x509encodedkeyspec = new x509encodedkeyspec(encodedkey);

keyfactory keyfactory = keyfactory.getinstance("rsa");

publickey publickey = keyfactory.generatepublic(x509encodedkeyspec);

cipher cipher = cipher.getinstance("rsa");

cipher.init(cipher.decrypt_mode, publickey);

java專案中新增日誌

1.pom.xml引入 com.zhkj.path log4j 1.2.15 commons logging commons logging 1.1.1 2.在src下新建log4j.properties檔案,類容如 詳細配置 plain view plain copy 定義 debug 優先順序,...

Vue vue專案中使用AES加密

引入aes加密模組 應用舉個慄 乙個小問題 在專案中新建乙個檔案 aes.js 可以新建在 src utils aes.js 檔名隨意,目錄盡量方便找到 aes.js import cryptojs from crypto js crypto js 預設的 key iv 如果在加密解密的時候沒有傳入...

zTree在JAVA專案中的學習

一 建立ztreeobject實體類,用來接收封裝資料庫中的資料 public class ztreeobject public void setchkdisabled boolean chkdisabled public boolean ischecked public void setcheck...