資源簡介
存儲密碼的密鑰管理系統,可以抵抗選擇明文攻擊等等,數據庫oracle,服務器tomcat8.5,jdk8

代碼片段和文件信息
package?com.jdbcTest;
import?java.io.FileInputStream;
import?java.io.objectInputStream;
import?java.math.BigInteger;
import?java.security.Key;
import?java.sql.Connection;
import?java.sql.ResultSet;
import?java.sql.Statement;
import?java.util.Random;
import?javax.crypto.Cipher;
import?javax.crypto.Mac;
import?javax.crypto.spec.PBEParameterSpec;
public?class?addResult?{
byte[]?salt?=?new?byte[8];
//?構造函數?保存數據庫
public?addResult(String?k?String?p)?throws?Exception?{
String?K?=?addK(k);
String?P?=?addP(k?p);
String?S?=?addS();
String?PHMAC?=?passhmac(p);
link?linkorcl?=?new?link();
Connection?con?=?linkorcl.conn();
String?sql?=?“insert?into?PASSWORD?values(‘“?+?K?+?“‘‘“?+?P?+?“‘‘“?+?S?+?“‘‘“?+?PHMAC?+?“‘)“;
Statement?stmt?=?con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE?ResultSet.CONCUR_READ_ONLY);
stmt.executeUpdate(sql);
}
//?關鍵字?-->?HMAC驗證碼
public?String?addK(String?kk)?throws?Exception?{
//?獲取密鑰
FileInputStream?f?=?new?FileInputStream(“key2.dat“);
objectInputStream?b?=?new?objectInputStream(f);
Key?k?=?(Key)?b.readobject();
b.close();
//?獲取Mac對象
Mac?m?=?Mac.getInstance(“HmacMD5“);
m.init(k);
m.update(kk.getBytes(“UTF8“));
byte?s[]?=?m.doFinal();
String?result?=?““;
for?(int?i?=?0;?i? result?+=?Integer.toHexString((0x000000ff?&?s[i])?|?0xffffff00).substring(6);
}
return?result;
}
//?密碼?-->?HMAC驗證碼
public?String?passhmac(String?p)?throws?Exception?{
//?獲取密鑰
FileInputStream?f?=?new?FileInputStream(“key4.dat“);
objectInputStream?b?=?new?objectInputStream(f);
Key?k?=?(Key)?b.readobject();
b.close();
//?獲取Mac對象
Mac?m?=?Mac.getInstance(“HmacMD5“);
m.init(k);
m.update(p.getBytes(“UTF8“));
byte?s[]?=?m.doFinal();
String?result?=?““;
for?(int?i?=?0;?i? result?+=?Integer.toHexString((0x000000ff?&?s[i])?|?0xffffff00).substring(6);
}
return?result;
}
//?關鍵字?+?密碼?-->?密文
public?String?addP(String?kk?String?p)?throws?Exception?{
String?ss?=?kk?+?““?+?p;
FileInputStream?ff?=?new?FileInputStream(“key3.dat“);
objectInputStream?b?=?new?objectInputStream(ff);
Key?k?=?(Key)?b.readobject();
b.close();
salt?=?new?byte[8];
Random?r?=?new?Random();
r.nextBytes(salt);
Cipher?cp?=?Cipher.getInstance(“PBEWithMD5AndDES“);
PBEParameterSpec?ps?=?new?PBEParameterSpec(salt?1000);
cp.init(Cipher.ENCRYPT_MODE?k?ps);
byte?ptext[]?=?ss.getBytes(“UTF8“);
byte?ctext[]?=?cp.doFinal(ptext);
return?toHex(ctext);
}
//?返回加密時使用的鹽
public?String?addS()?{
return?toHex(salt);
}
//?2?-->?16
private?static?String?toHex(byte[]?array)?{
BigInteger?bi?=?new?BigInteger(1?array);
String?hex?=?bi.toString(16);
int?paddingLength?=?(array.length?*?2)?-?hex.length();
if?(paddingLength?>?0)
return?String.format(“%0“?+?paddingLength?+?“d“?0)?+?hex;
else
return?hex;
}
}
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件???????1260??2019-07-12?18:39??系統源碼\.classpath
?????文件???????1045??2016-04-21?22:43??系統源碼\.project
?????文件????????567??2016-04-21?22:43??系統源碼\.settings\.jsdtscope
?????文件?????????73??2016-04-21?23:18??系統源碼\.settings\org.eclipse.core.resources.prefs
?????文件????????364??2016-04-21?22:43??系統源碼\.settings\org.eclipse.jdt.core.prefs
?????文件????????488??2016-04-21?22:43??系統源碼\.settings\org.eclipse.wst.common.component
?????文件????????345??2016-04-21?22:43??系統源碼\.settings\org.eclipse.wst.common.project.facet.core.xm
?????文件?????????49??2016-04-21?22:43??系統源碼\.settings\org.eclipse.wst.jsdt.ui.superType.container
?????文件??????????6??2016-04-21?22:43??系統源碼\.settings\org.eclipse.wst.jsdt.ui.superType.name
?????文件???????4429??2019-07-12?18:39??系統源碼\build\classes\com\jdbcTest\addResult.class
?????文件???????1160??2019-07-12?18:39??系統源碼\build\classes\com\jdbcTest\Key1.class
?????文件???????3156??2019-07-12?18:39??系統源碼\build\classes\com\jdbcTest\Key2.class
?????文件???????3156??2019-07-12?18:39??系統源碼\build\classes\com\jdbcTest\Key3.class
?????文件???????3156??2019-07-12?18:39??系統源碼\build\classes\com\jdbcTest\Key4.class
?????文件???????1241??2019-07-12?18:39??系統源碼\build\classes\com\jdbcTest\li
?????文件???????2010??2019-07-12?18:39??系統源碼\build\classes\com\jdbcTest\Password1.class
?????文件???????5834??2019-07-12?18:39??系統源碼\build\classes\com\jdbcTest\searchResult.class
?????文件???????3087??2019-07-11?16:19??系統源碼\src\com\jdbcTest\addResult.java
?????文件????????552??2019-07-11?09:13??系統源碼\src\com\jdbcTest\Key1.java
?????文件???????2177??2019-07-11?16:21??系統源碼\src\com\jdbcTest\Key2.java
?????文件???????2189??2019-07-11?16:22??系統源碼\src\com\jdbcTest\Key3.java
?????文件???????2214??2019-07-11?16:23??系統源碼\src\com\jdbcTest\Key4.java
?????文件????????555??2019-07-11?09:13??系統源碼\src\com\jdbcTest\li
?????文件???????1062??2019-07-11?16:23??系統源碼\src\com\jdbcTest\Password1.java
?????文件???????5157??2019-07-11?16:24??系統源碼\src\com\jdbcTest\searchResult.java
?????文件???????1038??2019-07-11?16:24??系統源碼\WebContent\add.jsp
?????文件????????990??2019-07-11?09:46??系統源碼\WebContent\addResult.jsp
?????文件????????829??2019-07-11?09:23??系統源碼\WebContent\home.jsp
?????文件????????781??2019-07-11?09:22??系統源碼\WebContent\iflogin.jsp
?????文件????????849??2019-07-11?20:24??系統源碼\WebContent\login.jsp
............此處省略21個文件信息
評論
共有 條評論