當前位置:首頁 » 編程語言 » javasha

javasha

發布時間: 2023-03-18 08:44:58

1. java怎麼實現對密碼用SHA-256加密

import java.security.MessageDigest;

public class Test{
public static void main(String[] args) {
String t= "abcd";
try {
MessageDigest md = MessageDigest.getInstance("SHA-256");
md.update(t.getBytes("GBK"賣姿));
for(byte b:md.digest())
System.out.format("中模絕%02X",b);
} catch (Exception e) {
e.printStackTrace();
}
}
}
=========


php驗證
<?php
echo hash('sha256', 'abcd');


驗證無碼含誤

2. java SHA-256怎麼解密 求代碼

網上有解密網站宴御,能對簡單的枯祥歷密碼解密出來。通過演算法是不可能的。現在的辦法是建立對應的資料庫查詢。也沒搜可以通過碰撞實驗來解密。。但是很慢

3. php 如何實現 java的sha1加密

function
encryptTokey($data){
$apikey
=
'testapikey111';
$ps1
=
sha1($apikey
.
strtolower($data));
$ps1
=
strtoupper($ps1);
$s1
=
implode(str_split($ps1,
2),
'-');
$ps2
=
md5($s1
.
$apikey);
$ps2
=
strtoupper($ps2);
$token
=
implode(str_split($ps2,
2),
'-');
return
$token;
}
echo
encryptTokey('testdata');
運行結果:
68-10-98-74-4C-82-74-4B-CC-49-31-98-46-02-EE-8E
詳細你可以去後盾人看看,這些都是後盾人裡面的,哪裡有詳細的視頻教學都是高質量,我自己就是在裡面學的。

4. 用Java實現計算文件的SHA256值

請參考

import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

public class BenchmarkSha256 {
public static void main(String[]args) throws NoSuchAlgorithmException {
int size = 1024 * 1024;
byte[] bytes = new byte[size];
MessageDigest md = MessageDigest.getInstance("SHA-256");
long startTime = System.nanoTime();
for (int i = 0; i < 1024; i++)
md.update(bytes, 0, size);
long endTime = System.nanoTime();
System.out.println(String.format("%14x", new java.math.BigInteger(1, md.digest())));
System.out.println(String.format("%d ms", (endTime - startTime) / 1000000));
}
}

換成文件,就是讀那麼多位元組,計算一次。

5. 以下這段JAVA代碼 hexSHA1散列加密解密,轉成PHP代碼,該如何寫

java 的加密解密,換成PHP的加密解密就好了呀

6. 開發中常見的加密方式及應用

開發中常見的加密方式及應用

一、base64

簡述:Base64是網路上最常見的用於傳輸8Bit 位元組碼 的編碼方式之一,Base64就是一種基於64個可列印字元來表示二進制數據的方法。所有的數據都能被編碼為並只用65個字元就能表示的文本文件。( 65字元:A~Z a~z 0~9 + / = )編碼後的數據~=編碼前數據的4/3,會大1/3左右(圖片轉化為base64格式會比原圖大一些)。

應用:Base64編碼是從二進制到字元的過程,可用於在 HTTP 環境下傳遞較長的標識信息。例如,在Java Persistence系統Hibernate中,就採用了Base64來將一個較長的唯一 標識符 (一般為128-bit的UUID)編碼為一個字元串,用作HTTP 表單 和HTTP GET URL中的參數。在其他應用程序中,也常常需要把二進制 數據編碼 為適合放在URL(包括隱藏 表單域 )中的形式。此時,採用Base64編碼具有不可讀性,需要解碼後才能閱讀。

命令行進行Base64編碼和解碼

編碼:base64 123.png -o 123.txt

解碼:base64 123.txt -o test.png -D Base64編碼的原理

原理:

1)將所有字元轉化為ASCII碼;

2)將ASCII碼轉化為8位二進制;

3)將二進制3個歸成一組(不足3個在後邊補0)共24位,再拆分成4組,每組6位;

4)統一在6位二進制前補兩個0湊足8位;

5)將補0後的二進制轉為十進制;

6)從Base64編碼表獲取十進制對應的Base64編碼;

Base64編碼的說明:

a.轉換的時候,將三個byte的數據,先後放入一個24bit的緩沖區中,先來的byte占高位。

b.數據不足3byte的話,於緩沖區中剩下的bit用0補足。然後,每次取出6個bit,按照其值選擇查表選擇對應的字元作為編碼後的輸出。

c.不斷進行,直到全部輸入數據轉換完成。

d.如果最後剩下兩個輸入數據,在編碼結果後加1個「=」;

e.如果最後剩下一個輸入數據,編碼結果後加2個「=」;

f.如果沒有剩下任何數據,就什麼都不要加,這樣才可以保證資料還原的正確性。

二、HASH加密/單向散列函數

簡述:Hash演算法特別的地方在於它是一種單向演算法,用戶可以通過Hash演算法對目標信息生成一段特定長度(32個字元)的唯一的Hash值,卻不能通過這個Hash值重新獲得目標信息。對用相同數據,加密之後的密文相同。 常見的Hash演算法有MD5和SHA。由於加密結果固定,所以基本上原始的哈希加密已經不再安全,於是衍生出了加鹽的方式。加鹽:先對原始數據拼接固定的字元串再進行MD5加密。

特點:

1) 加密 後密文的長度是定長(32個字元的密文)的

2)如果明文不一樣,那麼散列後的結果一定不一樣

3)如果明文一樣,那麼加密後的密文一定一樣(對相同數據加密,加密後的密文一樣)

4)所有的加密演算法是公開的

5)不可以逆推反算(不能根據密文推算出明文),但是可以暴力 破解 ,碰撞監測

原理:MD5消息摘要演算法,屬Hash演算法一類。MD5演算法對輸入任意長度的消息進行運行,產生一個128位的消息摘要。

1)數據填充

對消息進行數據填充,使消息的長度對512取模得448,設消息長度為X,即滿足X mod 512=448。根據此公式得出需要填充的數據長度。

填充方法:在消息後面進行填充,填充第一位為1,其餘為0。

2)添加信息長度

在第一步結果之後再填充上原消息的長度,可用來進行的存儲長度為64位。如果消息長度大於264,則只使用其低64位的值,即(消息長度 對264取模)。

在此步驟進行完畢後,最終消息長度就是512的整數倍。

3)數據處理

准備需要用到的數據:

4個常數:A = 0x67452301, B = 0x0EFCDAB89, C = 0x98BADCFE, D = 0x10325476;

4個函數:F(X,Y,Z)=(X & Y) | ((~X) & Z);G(X,Y,Z)=(X & Z) | (Y & (~Z));H(X,Y,Z)=X ^ Y ^ Z;I(X,Y,Z)=Y ^ (X | (~Z));

把消息分以512位為一分組進行處理,每一個分組進行4輪變換,以上面所說4個常數為起始變數進行計算,重新輸出4個變數,以這4個變數再進行下一分組的運算,如果已經是最後一個分組,則這4個變數為最後的結果,即MD5值。

三、對稱加密

經典演算法:

1)DES數據加密標准

DES演算法的入口參數有三個:Key、Data、Mode。其中Key為8個位元組共64位,是DES演算法的工作密鑰;Data也為8個位元組64位,是要被加密或被解密的數據;Mode為DES的工作方式,有兩種:加密或解密。

DES演算法是這樣工作的:如Mode為加密,則用Key去把數據Data進行加密, 生成Data的密碼形式(64位)作為DES的輸出結果;如Mode為解密,則用Key去把密碼形式的數據Data解密,還原為Data的明碼形式(64位)作為DES的輸出結果。在通信網路的兩端,雙方約定一致的Key,在通信的源點用Key對核心數據進行DES加密,然後以密碼形式在公共通信網(如電話網)中傳輸到通信網路的終點,數據到達目的地後,用同樣的Key對密碼數據進行解密,便再現了明碼形式的核心數據。這樣,便保證了核心數據(如PIN、MAC等)在公共通信網中傳輸的安全性和可靠性。

2)3DES使用3個密鑰,對消息進行(密鑰1·加密)+(密鑰2·解密)+(密鑰3·加密)

3)AES高級加密標准

如圖,加密/解密使用相同的密碼,並且是可逆的

四、非對稱加密

特點:

1)使用公鑰加密,使用私鑰解密

2)公鑰是公開的,私鑰保密

3)加密處理安全,但是性能極差

經典演算法RSA:

1)RSA原理

(1)求N,准備兩個質數p和q,N = p x q

(2)求L,L是p-1和q-1的最小公倍數。L = lcm(p-1,q-1)

(3)求E,E和L的最大公約數為1(E和L互質)

(4)求D,E x D mode L = 1

五、數字簽名

原理以及應用場景:

1)數字簽名的應用場景

需要嚴格驗證發送方身份信息情況

2)數字簽名原理

(1)客戶端處理

對"消息"進行HASH得到"消息摘要"

發送方使用自己的私鑰對"消息摘要"加密(數字簽名)

把數字簽名附著在"報文"的末尾一起發送給接收方

(2)服務端處理

對"消息" HASH得到"報文摘要"

使用公鑰對"數字簽名"解密

對結果進行匹配

六、數字證書

簡單說明:

證書和駕照很相似,裡面記有姓名、組織、地址等個人信息,以及屬於此人的公鑰,並有認證機構施加數字簽名,只要看到公鑰證書,我們就可以知道認證機構認證該公鑰的確屬於此人。

數字證書的內容:

1)公鑰

2)認證機構的數字簽名

證書的生成步驟:

1)生成私鑰openssl genrsa -out private.pem 1024

2)創建證書請求openssl req -new -key private.pem -out rsacert.csr

3)生成證書並簽名,有效期10年openssl x509 -req -days 3650 -in rsacert.csr -signkey private.pem -out rsacert.crt

4)將PEM格式文件轉換成DER格式openssl x509 -outform der -in rsacert.crt -out rsacert.der

5)導出P12文件openssl pkcs12 -export -out p.p12 -inkey private.pem -in rsacert.crt

iOS開發中的注意點:

1)在iOS開發中,不能直接使用PEM格式的證書,因為其內部進行了Base64編碼,應該使用的是DER的證書,是二進制格式的;

2)OpenSSL默認生成的都是PEM格式的證書。

七、https

HTTPS和HTTP的區別:

超文本傳輸協議HTTP協議被用於在Web瀏覽器和網站伺服器之間傳遞信息。HTTP協議以明文方式發送內容,不提供任何方式的數據加密,如果攻擊者截取了Web瀏覽器和網站伺服器之間的傳輸報文,就可以直接讀懂其中的信息,因此HTTP協議不適合傳輸一些敏感信息,比如信用卡號、密碼等。

為了解決HTTP協議的這一缺陷,需要使用另一種協議:安全套接字層超文本傳輸協議HTTPS。為了數據傳輸的安全,HTTPS在HTTP的基礎上加入了SSL協議,SSL依靠證書來驗證伺服器的身份,並為瀏覽器和伺服器之間的通信加密。

HTTPS和HTTP的區別主要為以下四點:

1)https協議需要到ca申請證書,一般免費證書很少,需要交費。

2)http是 超文本傳輸協議 ,信息是明文傳輸,https則是具有 安全性 的 ssl 加密傳輸協議。

3)http和https使用的是完全不同的連接方式,用的埠也不一樣,前者是80,後者是443。

4)http的連接很簡單,是無狀態的;HTTPS協議是由SSL+HTTP協議構建的可進行加密傳輸、身份認證的 網路協議 ,比http協議安全。

5)SSL:Secure Sockets Layer安全套接字層;用數據加密(Encryption)技術,可確保數據在網路上傳輸過程中不會被截取及竊聽。目前一般通用之規格為40 bit之安全標准,美國則已推出128 bit之更高安全標准,但限制出境。只要3.0版本以上之I.E.或Netscape 瀏覽器 即可支持SSL。目前版本為3.0。SSL協議位於TCP/IP協議與各種應用層協議之間,為數據通訊提供安全支持。SSL協議可分為兩層:SSL記錄協議(SSL Record Protocol):它建立在可靠的傳輸協議(如TCP)之上,為高層協議提供數據封裝、壓縮、加密等基本功能的支持。SSL握手協議(SSL Handshake Protocol):它建立在SSL記錄協議之上,用於在實際的數據傳輸開始前,通訊雙方進行身份認證、協商加密演算法、交換加密密鑰等。

7. 如何使用java進行sha1加密

簡單的做法是
1、使用apache的codec jar包對string進行加密,先下載並引入jar包:http://commons.apache.org/proper/commons-codec/
2、生成:
String sign = DigestUtils.shaHex(str);

3.也可以使用工具在線進行sha加密,參考 hash值(md5, sha1, sha256, sha512,crc32) 在線計算,http://www.it399.com/m/FileHash。望採納,謝謝。

8. sha265如何使用java代碼進行解密

SHA256類似於MD5都是單向加密的,如果要靠演算法實現解密,目前理論上是不可能的。

9. 怎麼用java轉換C#的SHA512加密

首先shaxxx並不納岩是加密,是叫哈希
其次你不需要洞扮御把某個語言的版本轉成其他語言,因為他們都是標准實現,網上可以搜到缺毀相應語言的現成的實現

10. java的sha1加密和object-c的sha1加密後的值不一樣,誰能幫我解決一下。多謝了

結果是一樣的, 但是你多搞了一點: java你是用Base64編碼成字元串, 而ObjC你是直接用16進制輸出的, 你java上不Base64編碼, 也輸出成16進制, 就一樣了;

熱點內容
動態規劃01背包演算法 發布:2024-11-05 22:17:40 瀏覽:849
nasm編譯器如何安裝 發布:2024-11-05 22:01:13 瀏覽:178
登錄密碼在微信的哪裡 發布:2024-11-05 22:00:29 瀏覽:737
c防止反編譯工具 發布:2024-11-05 21:56:14 瀏覽:246
安卓虛擬機怎麼用 發布:2024-11-05 21:52:48 瀏覽:342
php時間搜索 發布:2024-11-05 20:58:36 瀏覽:478
燕山大學編譯原理期末考試題 發布:2024-11-05 20:13:54 瀏覽:527
華為電腦出現臨時伺服器 發布:2024-11-05 20:05:08 瀏覽:407
斗戰神免費挖礦腳本 發布:2024-11-05 19:53:25 瀏覽:664
網吧伺服器分別是什麼 發布:2024-11-05 19:45:32 瀏覽:391