環境的配置可以參考
網路上傳輸的資料很容易被抓包,如果不加密,那麼網路數
據很容易被竊取,諸如使用者名稱、密碼這些明感的資訊一旦丟
失,將會造成巨大的損失。
2、常用的加密方式
對稱加密:加密方和解密方使用同乙個秘鑰
優點:加密解密過程簡單,高效
缺點:有一 方洩密了,則整個加密就失去了意義
非對稱加密:加密方和解密方使用不同的秘鑰
優點:解密的秘鑰無法由加密的秘鑰,即使加密方暴露出 了秘鑰也沒事,這種加密方和解密方使用不同的秘 鑰,大大提高了安全性
缺點:效率比較低下,過程比較繁瑣
3、輔助概念
1、質數的概念
2、互為質數的概念
4、rsa加密秘鑰的獲取
step1:隨機選取兩個數p、q,滿足互質
step2:n=p*q,//公開模數 public modules,其二進位制位數即為 秘鑰長度
step3:g=f(p,q)=(p-1)*(q-1)
step4:在1和g之間任意乙個隨機整數e,滿足1step5:由 e*d mod g = 1 關係式推導出來d,//private exponent, 私有指數
5、rsa加密秘鑰的獲取
rsa演算法中的:
公開秘鑰=(e,n)
私有秘鑰=(d,n)
6、rsa加密解密演算法
加密演算法:設m為需要加密的明文資料
則加密演算法為:encrypt_message = m^e mod n
解密演算法:設d為需要解密的密文資料
則解密演算法為:decrypt_message = d^d mod n
8、rsa演算法缺點
1 效率非常低下
2 密文資料較之原資料,其長度大大增加,即資料冗餘太嚴重
1 #include 2 #include 3 #include 4 #include 5 #include 6#pragma comment(lib,"libeay32.lib")
7#pragma comment(lib,"ssleay32.lib")
8#define p "bcf3"
9#define q "116ab"
10#define n "cdae1851"
11#define e "10001"
12#define d "8c88f2a5"
13int my_rsa_public_encrypt(int flen, const unsigned char *from, unsigned char *to);
14int my_rsa_private_decrypt(int flen, const unsigned char *from, unsigned char *to);
1516
int main(void)17
;20 unsigned char decsz[500]=;
21 my_rsa_public_encrypt(lstrlen(from)+1,(unsigned char*)from
,sz);
22 my_rsa_private_decrypt(lstrlen((char*)sz),sz,decsz);
23 system("
pause");
24return0;
25}26int my_rsa_public_encrypt(int flen, const unsigned char *from, unsigned char *to)
2739
bn_init(bignum);
40bn_init(bignue);
41 bn_hex2bn(&bignum,n);
42 bn_hex2bn(&bignue,e);
43 rsa->n =bignum;
44 rsa->e =bignue;
45err_load_crypto_strings();
46int nret = rsa_public_encrypt(flen,from
,to,rsa,rsa_no_padding);
47 dword dwerror =err_get_error();
48if(nret<0)49
58 printf("
%x\r\n
",*(pdword)to);
59err_free_strings();
60bn_free(bignue);
61bn_free(bignum);
62rsa_free(rsa);
63return1;
6465}66
int my_rsa_private_decrypt(int flen, const unsigned char *from, unsigned char *to)
6781
bn_init(bignum);
82bn_init(bignue);
83bn_init(bignup);
84 bn_hex2bn(&bignup,e);
85 bn_hex2bn(&bignum,n);
86 bn_hex2bn(&bignue,d);
87 rsa->n =bignum;
88 rsa->d =bignue;
89 rsa->e =bignup;
90err_load_crypto_strings();
91int nret = rsa_private_decrypt(flen,from
,to,rsa,rsa_no_padding);
92 dword dwerror =err_get_error();
93if(nret<0)94
103 printf("
%s\r\n
",to);
104err_free_strings();
105bn_free(bignue);
106bn_free(bignum);
107bn_free(bignup);
108rsa_free(rsa);
109return1;
110 }
C 呼叫openssl庫生成RSA加密秘鑰對
直接上 預設生成的是pkcs 1格式 rsa非對稱加解密 define key length 1024 金鑰長度 define pub key file pubkey.pem 公鑰路徑 define pri key file prikey.pem 私鑰路徑 函式方法生成金鑰對 void genera...
openssl對rsa金鑰的管理用法
二 然後,通過jdk自帶的keytool工具建立秘鑰對 1.建立rsa金鑰對 公鑰和私鑰 並儲存在keystore檔案中 keytool genkeypair alias myalias keyalg rsa keystore keystore.jks2.從keystore檔案中匯出使用x509標準...
linux下OpenSSL的RSA金鑰生成
openssl version openssl 1.0.0e.tar.gz 安裝 2 在資料夾下解壓縮,命令 tar xzf openssl openssl 1.0.0e.tar.gz 得到openssl openssl 1.0.0e資料夾 3 進入解壓的目錄 cd openssl 1.0.0e 4...