RSA非對稱加密

2021-09-29 18:42:54 字數 1937 閱讀 6214

非對稱加密就是加密和解密使用的不是乙個金鑰,使用的是公鑰+私鑰,乙個加密,另外乙個解密,一般都是私鑰加密,公鑰解密

首先使用keypair獲取我們的公鑰和私鑰,配對獲取,獲取的秘鑰可以直接是物件,也可以獲取位元組陣列

如果我們使用現有的公鑰和私鑰,需要使用keyfacktory來講秘鑰轉換為響應的物件,使用物件生成密碼器,使用密碼器進行對資料的加密

下面例子是使用私鑰加密公鑰解密,如果是公鑰加密私鑰解密,需要將 字串與位元組陣列的轉換互換位置

public class asymmetricencoder 

/*** 使用公鑰加密字串

** @param f 1:加密 2:解密

* @param key 公鑰

* @param str 字串

* @return

* @throws exception

*/public static string cryptobypublic(int f, byte key, string str) throws exception

/*** 私鑰加密字串

** @param f 1:加密 2:解密

* @param key 私鑰

* @param str 字串

* @throws exception

*/public static string cryptobyprivate(int f, byte key, string str) throws exception

/*** 獲取金鑰對

** @return 公鑰物件+私鑰物件

* @throws nosuchalgorithmexception

*/public static keypair getkeypair() throws nosuchalgorithmexception

/*** 使用秘鑰獲取私鑰物件

** @param prikey 秘鑰

* @return 秘鑰物件

* @throws nosuchalgorithmexception

* @throws invalidkeyspecexception

*/public static privatekey getprikey(byte prikey) throws exception

/*** 使用過秘鑰獲取公鑰物件

** @param pubkey 秘鑰

* @return 秘鑰物件

* @throws nosuchalgorithmexception

* @throws invalidkeyspecexception

*/public static publickey getpubkey(byte pubkey) throws exception

/*** 16進製制字串轉byte陣列

** @param str

* @return

*/public static byte hexstringtobytes(string str)

byte bytes = new byte[str.length() / 2];

for (int i = 0; i < str.length() / 2; i++)

return bytes;

}private static final char hex_char = ;

/*** byte陣列轉16進製制字串

** @param bytes

* @return

*/public static string bytestohexstring(byte bytes) else

buf[index++] = hex_char[a / 16];

buf[index++] = hex_char[a % 16];

}return new string(buf);

}}

RSA非對稱加密

現實網路中,web應用的開發少不了需要對敏感資訊來進行加密,但是加密又不能草草了事,過於簡單。一旦被鑽了空子,就成了事故。比如密碼。之前用到了非對稱加密沒做記錄,這次又用到了,所以記錄下來!rsa是目前最有影響力的公鑰加密演算法,該演算法基於乙個十分簡單的數論事實 將兩個大素數相乘十分容易,但那時想...

RSA非對稱加密

對稱加密 演算法 在加密和解密時使用的是同乙個秘鑰 而 非對稱加密演算法 需要兩個 金鑰 來進行加密和解密,這兩個秘鑰是 公開金鑰 public key,簡稱公鑰 和私有金鑰 private key,簡稱私鑰 與對稱加密 演算法 不同,非對稱加密演算法 需要兩個 金鑰 公開金鑰 publickey ...

非對稱加密RSA

生成長度為1024位的rsa私鑰 openssl genrsa out rsa private key.pem 1024 通過rsa私鑰生成rsa公鑰 openssl rsa in rsa private key.pem pubout out public.pem 使用rsa公鑰加密檔案 opens...