當前位置:首頁 » 密碼管理 » 使密碼加密

使密碼加密

發布時間: 2022-05-04 07:22:36

『壹』 如何使用java對密碼加密 加密方式aes

Java有相關的實現類:具體原理如下
對於任意長度的明文,AES首先對其進行分組,每組的長度為128位。分組之後將分別對每個128位的明文分組進行加密。
對於每個128位長度的明文分組的加密過程如下:
(1)將128位AES明文分組放入狀態矩陣中。
(2)AddRoundKey變換:對狀態矩陣進行AddRoundKey變換,與膨脹後的密鑰進行異或操作(密鑰膨脹將在實驗原理七中詳細討論)。
(3)10輪循環:AES對狀態矩陣進行了10輪類似的子加密過程。前9輪子加密過程中,每一輪子加密過程包括4種不同的變換,而最後一輪只有3種變換,前9輪的子加密步驟如下:
● SubBytes變換:SubBytes變換是一個對狀態矩陣非線性的變換;
● ShiftRows變換:ShiftRows變換對狀態矩陣的行進行循環移位;
● MixColumns變換:MixColumns變換對狀態矩陣的列進行變換;
● AddRoundKey變換:AddRoundKey變換對狀態矩陣和膨脹後的密鑰進行異或操作。
最後一輪的子加密步驟如下:
● SubBytes變換:SubBytes變換是一個對狀態矩陣非線性的變換;
● ShiftRows變換:ShiftRows變換對狀態矩陣的行進行循環移位;
● AddRoundKey變換:AddRoundKey變換對狀態矩陣和膨脹後的密鑰進行異或操作;
(4)經過10輪循環的狀態矩陣中的內容就是加密後的密文。
AES的加密演算法的偽代碼如下。

在AES演算法中,AddRoundKey變換需要使用膨脹後的密鑰,原始的128位密鑰經過膨脹會產生44個字(每個字為32位)的膨脹後的密鑰,這44個字的膨脹後的密鑰供11次AddRoundKey變換使用,一次AddRoundKey使用4個字(128位)的膨脹後的密鑰。
三.AES的分組過程
對於任意長度的明文,AES首先對其進行分組,分組的方法與DES相同,即對長度不足的明文分組後面補充0即可,只是每一組的長度為128位。
AES的密鑰長度有128比特,192比特和256比特三種標准,其他長度的密鑰並沒有列入到AES聯邦標准中,在下面的介紹中,我們將以128位密鑰為例。
四.狀態矩陣
狀態矩陣是一個4行、4列的位元組矩陣,所謂位元組矩陣就是指矩陣中的每個元素都是一個1位元組長度的數據。我們將狀態矩陣記為State,State中的元素記為Sij,表示狀態矩陣中第i行第j列的元素。128比特的明文分組按位元組分成16塊,第一塊記為「塊0」,第二塊記為「塊1」,依此類推,最後一塊記為「塊15」,然後將這16塊明文數據放入到狀態矩陣中,將這16塊明文數據放入到狀態矩陣中的方法如圖2-2-1所示。

塊0

塊4

塊8

塊12

塊1

塊5

塊9

塊13

塊2

塊6

塊10

塊14

塊3

塊7

塊11

塊15

圖2-2-1 將明文塊放入狀態矩陣中
五.AddRoundKey變換
狀態矩陣生成以後,首先要進行AddRoundKey變換,AddRoundKey變換將狀態矩陣與膨脹後的密鑰進行按位異或運算,如下所示。

其中,c表示列數,數組W為膨脹後的密鑰,round為加密輪數,Nb為狀態矩陣的列數。
它的過程如圖2-2-2所示。

圖2-2-2 AES演算法AddRoundKey變換
六.10輪循環
經過AddRoundKey的狀態矩陣要繼續進行10輪類似的子加密過程。前9輪子加密過程中,每一輪要經過4種不同的變換,即SubBytes變換、ShiftRows變換、MixColumns變換和AddRoundKey變換,而最後一輪只有3種變換,即SubBytes變換、ShiftRows變換和AddRoundKey變換。AddRoundKey變換已經討論過,下面分別討論餘下的三種變換。
1.SubBytes變換
SubBytes是一個獨立作用於狀態位元組的非線性變換,它由以下兩個步驟組成:
(1)在GF(28)域,求乘法的逆運算,即對於α∈GF(28)求β∈GF(28),使αβ =βα = 1mod(x8 + x4 + x3 + x + 1)。
(2)在GF(28)域做變換,變換使用矩陣乘法,如下所示:

由於所有的運算都在GF(28)域上進行,所以最後的結果都在GF(28)上。若g∈GF(28)是GF(28)的本原元素,則對於α∈GF(28),α≠0,則存在
β ∈ GF(28),使得:
β = gαmod(x8 + x4 + x3 + x + 1)
由於g255 = 1mod(x8 + x4 + x3 + x + 1)
所以g255-α = β-1mod(x8 + x4 + x3 + x + 1)
根據SubBytes變換演算法,可以得出SubBytes的置換表,如表2-2-1所示,這個表也叫做AES的S盒。該表的使用方法如下:狀態矩陣中每個元素都要經過該表替換,每個元素為8比特,前4比特決定了行號,後4比特決定了列號,例如求SubBytes(0C)查表的0行C列得FE。
表2-2-1 AES的SubBytes置換表

它的變換過程如圖2-2-3所示。

圖2-2-3 SubBytes變換
AES加密過程需要用到一些數學基礎,其中包括GF(2)域上的多項式、GF(28)域上的多項式的計算和矩陣乘法運算等,有興趣的同學請參考相關的數學書籍。
2.ShiftRows變換
ShiftRows變換比較簡單,狀態矩陣的第1行不發生改變,第2行循環左移1位元組,第3行循環左移2位元組,第4行循環左移3位元組。ShiftRows變換的過程如圖2-2-4所示。

圖2-2-4 AES的ShiftRows變換
3.MixColumns變換
在MixColumns變換中,狀態矩陣的列看作是域GF(28)的多項式,模(x4+1)乘以c(x)的結果:
c(x)=(03)x3+(01)x2+(01)x+(02)
這里(03)為十六進製表示,依此類推。c(x)與x4+1互質,故存在逆:
d(x)=(0B)x3+(0D)x2+(0G)x+(0E)使c(x)•d(x) = (D1)mod(x4+1)。
設有:

它的過程如圖2-2-5所示。

圖2-2-5 AES演算法MixColumns變換
七.密鑰膨脹
在AES演算法中,AddRoundKey變換需要使用膨脹後的密鑰,膨脹後的密鑰記為子密鑰,原始的128位密鑰經過膨脹會產生44個字(每個字為32位)的子密鑰,這44個字的子密鑰供11次AddRoundKey變換使用,一次AddRoundKey使用4個字(128位)的膨脹後的密鑰。
密鑰膨脹演算法是以字為基礎的(一個字由4個位元組組成,即32比特)。128比特的原始密鑰經過膨脹後將產生44個字的子密鑰,我們將這44個密鑰保存在一個字數組中,記為W[44]。128比特的原始密鑰分成16份,存放在一個位元組的數組:Key[0],Key[1]……Key[15]中。
在密鑰膨脹演算法中,Rcon是一個10個字的數組,在數組中保存著演算法定義的常數,分別為:
Rcon[0] = 0x01000000
Rcon[1] = 0x02000000
Rcon[2] = 0x04000000
Rcon[3] = 0x08000000
Rcon[4] = 0x10000000
Rcon[5] = 0x20000000
Rcon[6] = 0x40000000
Rcon[7] = 0x80000000
Rcon[8] = 0x1b000000
Rcon[9] = 0x36000000
另外,在密鑰膨脹中包括其他兩個操作RotWord和SubWord,下面對這兩個操作做說明:
RotWord( B0,B1,B2,B3 )對4個位元組B0,B1,B2,B3進行循環移位,即
RotWord( B0,B1,B2,B3 ) = ( B1,B2,B3,B0 )
SubWord( B0,B1,B2,B3 )對4個位元組B0,B1,B2,B3使用AES的S盒,即
SubWord( B0,B1,B2,B3 ) = ( B』0,B』1,B』2,B』3 )
其中,B』i = SubBytes(Bi),i = 0,1,2,3。
密鑰膨脹的演算法如下:

八.解密過程
AES的加密和解密過程並不相同,首先密文按128位分組,分組方法和加密時的分組方法相同,然後進行輪變換。
AES的解密過程可以看成是加密過程的逆過程,它也由10輪循環組成,每一輪循環包括四個變換分別為InvShiftRows變換、InvSubBytes變換、InvMixColumns變換和AddRoundKey變換;
這個過程可以描述為如下代碼片段所示:

九.InvShiftRows變換
InvShiftRows變換是ShiftRows變換的逆過程,十分簡單,指定InvShiftRows的變換如下。
Sr,(c+shift(r,Nb))modNb= Sr,c for 0 < r< 4 and 0 ≤ c < Nb
圖2-2-6演示了這個過程。

圖2-2-6 AES演算法InvShiftRows變換
十.InvSubBytes變換
InvSubBytes變換是SubBytes變換的逆變換,利用AES的S盒的逆作位元組置換,表2-2-2為InvSubBytes變換的置換表。
表2-2-2 InvSubBytes置換表

十一.InvMixColumns變換
InvMixColumns變換與MixColumns變換類似,每列乘以d(x)
d(x) = (OB)x3 + (0D)x2 + (0G)x + (0E)
下列等式成立:
( (03)x3 + (01)x2 + (01)x + (02) )⊙d(x) = (01)
上面的內容可以描述為以下的矩陣乘法:

十二.AddRoundKey變換
AES解密過程的AddRoundKey變換與加密過程中的AddRoundKey變換一樣,都是按位與子密鑰做異或操作。解密過程的密鑰膨脹演算法也與加密的密鑰膨脹演算法相同。最後狀態矩陣中的數據就是明文。

『貳』 如何加密用戶的資料和密碼

加密的本質是對原有內容的混淆,目的是提高從表面結果反推達到目的的成本。在網頁提交(其實所有的通信都有這個問題)密碼這個問題上,需要有幾個維度來保證安全,首先是切面的安全性,對於一次提交首先保護的是密碼本身,從最早的Base64到MD5或是SHA都可以做到這一點,但是Base64是可逆的,對於密碼本身的保護是很弱的,哈希演算法解決了這個問題,將不同長度的數據轉換成統一長度的大數字,而理論上這個數字對應無窮多解,但限於密碼的輸入有限制,其實是可逆的,所以從1次混淆的MD5變成了3次混淆的SHA,但是隨著現代計算機技術的進步,逆運算的成本不斷降低,人們不得已要使用更大的數字來提高這個難度,但是為了向成本和發展妥協,人們不得已使用統一的演算法,在CS時代由於很難侵入到CS兩端,所以相對的雙方使用的演算法是保密的,破解難度相對比較大,BS由於為了保證開放性,特別是js本身就是明文演算法,所以其實只能說防君子不妨小人,所以就有了安全控制項,控制項的唯一目的是用2進制代碼來隱藏加密的演算法,不知道演算法,也就很難破解原文。第二維度就是時間,如果密碼一樣加密結果也會一樣,那麼在不使用原文的情況下,可以使用加密過後的數據來模擬用戶登錄的動作也是可以的,所以純粹對密碼的加密其實不能解決這個問題,所以有了鹽值,讓同一個數據在不同情況下結果依舊不一致,但是鹽值需要約定,總會被人找出規律,只是成本又高了點,所以還是不安全,這就引發了通訊安全的問題。所以出現了https使用非對稱加密來保護數據通路上的安全,讓通訊變得不可窺視。但是還有個東西叫木馬,所以人們在輸入上繼續做文章,包括混淆輸入,就是軟鍵盤,好的控制項不會把明文存在內存里,這很重要,以前的VB、Dephi密碼控制項都僅僅看不到,實際內存裡面都是明文,很容易被病毒和木馬利用,所以一般來說現在最安全的bs系統使用控制項保護輸入,隱藏自己的HASH演算法,用HTTPS保護通訊。但是ssl都有漏洞被爆出,所以好的系統加上用戶自己勤換密碼才是保護自己的不二法則,不過,太累了,所以使用硬體ukey吧,成本稍高。

『叄』 密碼加密

建議先安裝個帳號保險箱,如:360保險箱。
為了更安全起見,你輸入密碼的時候,如:123456, 你先輸入1456,然後,滑鼠移到1後面點擊,再輸入23

『肆』 如何調用密碼加密文件

md5單獨一個文件,調用的時候,需要用到MD5的文件就用
<!--#include
file="md5.asp">來包含MD5文件
需要寫進資料庫的時候
password=md5(password)這樣後面那個password就被加密成了MD5碼。
然後把前面那個password直接寫進資料庫就行。

『伍』 密碼加密的方法有那些

用戶密碼加密方式

用戶密碼保存到資料庫時,常見的加密方式有哪些?以下幾種方式是常見的密碼保存方式:

1. 明文保存

比如用戶設置的密碼是「123456」,直接將「123456」保存在資料庫中,這種是最簡單的保存方式,也是最不安全的方式。但實際上不少互聯網公司,都可能採取的是這種方式。

2. 對稱加密演算法來保存

比如3DES、AES等演算法,使用這種方式加密是可以通過解密來還原出原始密碼的,當然前提條件是需要獲取到密鑰。不過既然大量的用戶信息已經泄露了,密鑰很可能也會泄露,當然可以將一般數據和密鑰分開存儲、分開管理,但要完全保護好密鑰也是一件非常復雜的事情,所以這種方式並不是很好的方式。

總結

採用PBKDF2、bcrypt、scrypt等演算法可以有效抵禦彩虹表攻擊,即使數據泄露,最關鍵的「用戶密碼」仍然可以得到有效的保護,黑客無法大批量破解用戶密碼,從而切斷撞庫掃號的根源。

【加密軟體編輯推薦】
易控網盾加密軟體--重要文件防泄密專家!輕松實現單位內部文件自動加密保護,加密後的文件在單位內部正常流轉使用。未經許可,任何私自拷貝加密文件外發出去,都將打開為亂碼,無法使用!對於發送給客戶等第三方的文件,可實現控制打開時間和打開次數等防泄密參數!同時可設置對員工電腦文件自動備份,防止惡意刪除造成核心數據的遺失!從源頭防止企業核心文件被外泄!
相關頁面:加密軟體,文件加密,文檔加密,圖紙加密軟體,防泄密軟體,CAD加密軟體,文件外發加密

『陸』 如何用密碼加密文件夾和文件

如果不想要軟體的話,加密智能是NTFS格式的文件才可以的,你的硬碟格式如果是FAT32格式的話,要轉換格式才可以設置密碼的!
NTFS格式下加、解密問題
NTFS是WinNT以上版本支持的一種提供安全性、可靠性的高級文件系統。在Win2000和WinXP中,NTFS還可以提供諸如文件和文件夾許可權、加密、磁碟配額和壓縮這樣的高級功能。
一、加密文件或文件夾
步驟一:打開Windows資源管理器。
步驟二:右鍵單擊要加密的文件或文件夾,然後單擊「屬性」。
步驟三:在「常規」選項卡上,單擊「高級」。選中「加密內容以便保護數據」復選框
在加密過程中還要注意以下五點:
1.要打開「Windows
資源管理器」,請單擊「開始→程序→附件」,然後單擊「Windows
資源管理器」。
2.只可以加密NTFS分區卷上的文件和文件夾,FAT分區卷上的文件和文件夾無效。
3.被壓縮的文件或文件夾也可以加密。如果要加密一個壓縮文件或文件夾,則該文件或文件夾將會被解壓
4.無法加密標記為「系統」屬性的文件,並且位於systemroot目錄結構中的文件也無法加密。
5.在加密文件夾時,系統將詢問是否要同時加密它的子文件夾。如果選擇是,那它的子文件夾也會被加密,以後所有添加進文件夾中

『柒』 如何對密碼加密

依次單擊「開始」、「所有程序」、「附件」,然後單擊「Windows PowerShell」文件夾。右擊「Windows PowerShell」,然後單擊「以管理員身份運行」。輸入以下代碼示例中的每一行,在輸入每行後按 Enter: [Reflection.Assembly]::LoadWithPartialName("System.Security") $pass = [Text.Encoding]::UTF8.GetBytes("<Password>") $content = new-object Security.Cryptography.Pkcs.ContentInfo –argumentList (,$pass) $env = new-object Security.Cryptography.Pkcs.EnvelopedCms $content $env.Encrypt((new-object System.Security.Cryptography.Pkcs.CmsRecipient(gi cert:\CurrentUser\My\<Thumbprint>))) [Convert]::ToBase64String($env.Encode())其中,<Password> 是可以遠程訪問該角色的用戶帳戶的密碼,<Thumbprint> 是要用於託管服務的證書指紋。下圖顯示了 Windows PowerShell 窗口中的命令以及返回的加密口令字元串。復制並粘貼或記錄最後一個命令返回的長字元串。

『捌』 windows操作系統用戶密碼加密的方式

摘要 您好,我的電腦——控制面板——用戶帳戶——更換用戶——選擇你的用戶——創建(修改)密碼,這樣就可以了呦~

熱點內容
tomcat下載linux 發布:2025-05-11 07:47:06 瀏覽:791
phpcookie設置時間 發布:2025-05-11 07:36:15 瀏覽:110
固態硬碟需要緩存嗎 發布:2025-05-11 07:29:09 瀏覽:605
松江換門密碼鎖哪裡有 發布:2025-05-11 07:23:21 瀏覽:326
自動配置代理什麼意思 發布:2025-05-11 07:16:51 瀏覽:993
notepad編寫php 發布:2025-05-11 07:10:50 瀏覽:864
茄子快傳的文件夾 發布:2025-05-11 07:04:30 瀏覽:734
手機指紋密碼如何更換 發布:2025-05-11 07:02:22 瀏覽:123
java存儲資料庫 發布:2025-05-11 07:01:33 瀏覽:177
辦理ca的初始密碼是多少 發布:2025-05-11 06:54:55 瀏覽:425