① 怎樣用java實現文件的md5簽名
你好FTP協議不提供校驗的。既然是採用TCP通訊的,文件完整性是有保障的吧希望回答對你有幫助
② java 中怎樣不通過解壓文件來判斷該文件是否是損壞文件。。急 急 急
如果這個文件是有跡可循的,那麼可以用md5來驗證文件是否被修改、是否完整...
否則,就只能判斷該類型文件數據是否正確,也就是類似你標題中的意思了
③ java比較2個文件是否是相同的文件,是一個一個位元組比較還是計算MD5比較好啊
不同內容得出相同MD5值,雖然概率低,但總是不放心。如果在已知文件編碼范圍的條件下,找到MD5絕對區分長度范圍(即:該范圍內取樣內容的MD5相同的,內容保證相同;絕不存在不同內容得出相同MD5值的現象),那麼,可按合理的長度分片、按一定順序遍歷整個文件(屬性信息、頭部、尾部、同步隨機點、其他),比較MD5,一旦有異立即判定文件不同,終止比較。這種分片取樣比較MD5的思路可能快於逐位元組比較也絕對可信
要確保 100%正確就必須校驗全文,通過以上思路來比較,即是。
(註:
其他據說相對於MD5來講不易碰撞(即不同內容得出相同MD5值的概率可能更低)的演算法推薦:起碼 SHA1 ,最好 SHA256、 SHA512、MD5+CRC32、HMAC,或者幾種不同類型演算法的同步進行。
在精通演算法的情況下,將這里推薦的演算法取代上文中提到的MD5來考量,能擴大絕對區分長度范圍,可能更方便更快的比較。
但是又有這樣的考慮:逐位元組比較的演算法最簡單,演算法弄復雜了反而會增加額余的時間;逐位元組比較的演算法也可以放到上文中來考量,進行同步取樣和各種遍歷的順序與方式,說不定,在保證100%的可信度的條件下,逐字比較反而最快呢?
我覺得時間的耗費關鍵處在於,所有的演算法,都要將兩個位於不同區域或載體的文件的同位區域收集到一起進行比較,這個收集花費時間Ta(i),與取樣長度、存儲區域或載體等相關;{如果要將文件取很大一部或全部讀入內存,然後再逐一集中比較,則會減小以上的Ta(i),而增加一個額外讀入的時間Tc(i)*次數M(i)}。比較的次數大致為N(i);而如果在一個文件中順序讀取一個區域並且計算它的某個整體評定值,這個花費的時間為Tb(i),與取樣長度、計算程序、設備性能等相關。
總體的比較時間大致是Ta(i)*N(i)*Tb(i)+{Tc(i)*M(i)}
逐位元組比較,其中Tb(i)、Ta(i)都是最短的,但是N(i)最大,
總之,可以設計不同的演算法,通過實際環境和文件的檢測,來決定採用何種演算法。
)
外一則:
兩個取樣內容, MD5等演算法的計算值 不同,則內容一定不同; 計算值相同,則 內容可能相同,但可能性是否達到100%,內容相同的概率是多少,根據編碼范圍、演算法來確定。如果是比較一個文件和許多其他文件是否相同,並且提前知道其他文件的 MD5 值,可先比較 MD5 值可以大大提高文件比較的速度。
④ java中的md5校驗的問題
&在java里是按位與運算
java里16位數值常量用0x開頭,0xf0表示二進制數11110000
bt & 0xf0的運算結果是bt的前4位值不變,後四位置0
⑤ 如何用java或者c#寫個掃描整個文件夾及子文件夾,驗證多個文件的md5值,並將md5值重復但不同
java的,我已經測試可以使用。
但是單個文件很大的話可能算md5會比較慢
importjava.security.MessageDigest;
importjava.security.NoSuchAlgorithmException;
importjava.util.ArrayList;
importjava.io.File;
importjava.io.FileInputStream;
importjava.io.FileNotFoundException;
importjava.io.IOException;
importjava.math.BigInteger;
importjava.nio.MappedByteBuffer;
importjava.nio.channels.FileChannel;
publicclassMain
{
ArrayList<String>md5List=newArrayList<String>();
publicStringgetMd5(Filefile){
Stringvalue=null;
FileInputStreamin=null;
try{
in=newFileInputStream(file);
MappedByteBufferbyteBuffer=in.getChannel().map(FileChannel.MapMode.READ_ONLY,0,file.length());
MessageDigestmd5=MessageDigest.getInstance("MD5");
md5.update(byteBuffer);
BigIntegerbi=newBigInteger(1,md5.digest());
value=bi.toString(16);
}catch(FileNotFoundExceptione){
e.printStackTrace();
}catch(NoSuchAlgorithmExceptione){
e.printStackTrace();
}catch(IOExceptione){
e.printStackTrace();
}finally{
if(null!=in){
try{
in.close();
}catch(IOExceptione){
e.printStackTrace();
}
}
}
returnvalue;
}
publicvoidrun(Filefile){
if(file!=null){
if(file.isDirectory()){
Filef[]=file.listFiles();
if(f!=null){
for(inti=0;i<f.length;i++)
run(f[i]);
}
}else{
Stringmd5=getMd5(file);
if(md5List.contains(md5)){
System.out.println(file.toString());
file.delete();
}else{
md5List.add(md5);
}
}
}
}
publicstaticvoidmain(Stringargs[]){
Mainm=newMain();
Stringpath="D:\test";
m.run(newFile(path));
}
}
⑥ 怎樣將JAVA網游破解
看這個網游安全性達到什麼水平,如果設計得很好,一般沒辦法破解,比方說,我可以自己實現類載入器,我所有class文件全是加密的,類載入器在載入class之前,先根據我設計好的解密演算法,把class文件的內容還原成明文,這樣的話,是沒辦法反編譯的。還有我可以對每個文件,像class文件,圖片,數據文件,都進行md5校驗,你就沒辦法篡改了。這個網游要是很火,網上會有很多破解方法的,如果網上找不到,那麼,只能自己破解,或者花錢請人破解了,畢竟是個細活,編程高手,不花個兩三天,估計也破不開的。
⑦ java里如何正確計算檢驗和
importjava.security.MessageDigest;
publicclassMD5HashingExample
{
publicstaticvoidmain(String[]args)throwsException
{
Stringpassword="123456";
MessageDigestmd=MessageDigest.getInstance("MD5");
md.update(password.getBytes("UTF-8"));//orGBK
bytebyteData[]=md.digest();
//
StringBuffersb=newStringBuffer();
for(inti=0;i<byteData.length;i++){
sb.append(Integer.toString((byteData[i]&0xff)+0x100,16).substring(1));
}
System.out.println("Digest(inhexformat)::"+sb.toString());
//
StringBufferhexString=newStringBuffer();
for(inti=0;i<byteData.length;i++){
Stringhex=Integer.toHexString(0xff&byteData[i]);
if(hex.length()==1)hexString.append('0');
hexString.append(hex);
}
System.out.println("Digest(inhexformat)::"+hexString.toString());
}
}
⑧ Java MD5如何解密
MD5 不能解密, MD5的破解方式就是 把不同的字元串按MD5加密 然後對比加密後的結果是不是一樣. 在線MD5解密 也是這樣的原理.
⑨ 求Java的MD5加密解密實現類。 要實現對用戶的密碼進行加密! 然後驗證用戶的密碼!
我簡單說下吧,加密就是存進資料庫的時候變成MD5存進去,解密,就是對比的時候,將用戶輸入的密碼轉換成MD5和資料庫裡面的對比。
⑩ java代碼如何判斷一個文件是緩存文件
文件是不是緩存,是按照不同軟體,不同類別系統決定的,一般是後綴名有 tem 之類或者 或者以~開頭的 ,都有可能是不同軟體的緩存。所以,這個應具體而論。 沒有一個統一的方法和標准