rsa
非對稱加密,公鑰加密,私鑰解密,反之亦然。由於需要大數的乘冪求模等演算法,執行速度慢,不易於硬體實現。
通常私鑰長度有512bit,1024bit,2048bit,4096bit,長度越長,越安全,但是生成金鑰越慢,加解密也越耗時。
既然是加密,那肯定是不希望別人知道我的訊息,所以只有我才能解密,所以可得出公鑰負責加密,私鑰負責解密;
同理,既然是簽名,那肯定是不希望有人冒充我發訊息,只有我才能發布這個簽名,所以可得出私鑰負責簽名,公鑰負責驗證。
aes對稱加密,金鑰最長只有256個bit,執行速度快,易於硬體實現。由於是對稱加密,金鑰需要在傳輸前通訊雙方獲知。
基於以上特點,通常使用rsa來首先傳輸aes的金鑰給對方,然後再使用aes來進行加密通訊。
aes加密資料塊分組長度必須為128位元,金鑰長度可以是128位元、192位元、256位元中的任意乙個(如果資料塊及金鑰
長度不足時,會補齊)。aes加密有很多輪的重複和變換。大致步驟如下:
1、金鑰擴充套件(keyexpansion),
2、初始輪(initial round),
3、重複輪(rounds),每一輪又包括:subbytes、shiftrows、mixcolumns、addroundkey,
4、最終輪(final round),最終輪沒有mixcolumns
aes加密過程是在乙個4×4的位元組矩陣上運作,這個矩陣又稱為「狀態(state)」,其初值就是乙個明文區塊(矩陣中乙個元
素大小就是明文區塊中的乙個byte)。加密時,各輪aes加密迴圈(除最後一輪外)均包含4個步驟:
addroundkey (加輪秘鑰)— 矩陣中的每乙個位元組都與該次輪秘鑰(round key)做xor運算。
subbytes (位元組代換)— 通過非線性的替換函式,用查詢表的方式把每個位元組替換成對應的位元組。
shiftrows (行移位)— 將矩陣中的每個橫列進行迴圈式移位。
mixcolumns (列混淆)— 使用線性轉換來混合每列的四個位元組。
位元組代換
代換表(s盒)被設計成能夠抵擋所有已知的攻擊
例如,十六進製制對應的的行值是9,列值是5,s盒中此處的值是。因此被對映為
簽名驗籤以及RSA與AES的區別
1.0 encoding gbk 100001022 0test test 2009041611084101 00600 0010530001 2009041612000022 報文簽名 param msg 原始xml資料 public string signmsg string xml throw...
AES與RSA相結合資料加密方案
rsa演算法是公開金鑰系統的代表,其安全性建立 在具有大素數因子的合數,其因子分解困難這一法則之上的。rijndael演算法作為新一代的高階加密標準,執行時不需要計算機有非常高的處理能力和大的內 存,操作可以很容易的抵禦時間和空間的攻擊,在不同的執行環境下始終能保持良好的效能。這使aes將安全,高效...
AES和RSA加解密的Python用法
aes 是一種對稱加密演算法,用key對一段text加密,則用同乙個key對密文解密,from crypto import random from crypto.hash import shafrom crypto.cipher import aesfrom crypto.cipher import...